Порівняння складності арифметичних операцій в римській та десятковій системах числення

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2008
Тип роботи:
Лабораторна робота
Предмет:
Алгоритми та методи оптимізації
Група:
КI

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Звіт лабораторної роботи № 1 з курсу алгоритми та методи оптимізації на тему:"Порівняння складності арифметичних операцій в римській та десятковій системах числення". Виконав: ст.гр. КІ-3 Львів 2008 Мета роботи : Засвоєння основних визначень. Порівняння часової складності алгоритмів. Теоретична частина: Те, що зараз ми розуміємо під словом алгоритм, використовувалося в глибокій давнині, наприклад, теорема про залишки в Китаї (Китайська теорема), арифметичні операції в Індії. Але праці Евкліда і аль-Хорезмі для теорії складності алгоритмів мають особливе значення. Мухамед ібн Муса з Хорезму, за арабським ім’ям – аль-Хорезмі (походженням з середньоазіатського міста Хорезм), видатний багдадський вчений, що працював у ІХ столітті н.е. У своїй книжці – трактаті “Про індійський рахунок” аль-Хорезмі описав десяткову систему числення і арифметичні операції “ множення і ділення, сумування, віднімання та інші”. Сьогодні збереглися лише переклади трактату. Перші з них відносяться до початку XII століття. Далі ми наводимо цитати з “Книги про індійський рахунок”, переклад якого був виконаний Ю.Копелевич з середньовічного латинського тексту, що зберігається у Кембриджському університеті [1]. Кожний розділ трактату, а іноді навіть абзац, починався словами “Сказав Альгорізмі…”. Це словосполучення використовували у своїх лекціях і професори середньовічних університетів. Поступово ім’я аль-Хорезмі набуло звучання “алгоризм”, “алгоритм” і навіть перетворилися у назву нової арифметики. Пізніше термін “алгоритм” почав означати регулярний арифметичний процес (Хр. Рудольф, 1525р.). І тільки наприкінці XVII ст. в роботах Лейбніца цей термін набув змістовності, яка не заперечує сучасному тлумаченню: “Алгоритм - це будь-який регулярний обчислювальний процес, що дозволяє за кінцеву кількість кроків розв’язувати задачі визначеного класу”. Зауважимо, що за довгу еволюцію слова “алгоритм“ було втрачено джерело його виникнення. І тільки у 1849 році сходознавець Ж. Рейно повернув нам ім’я аль-Хорезмі [2]. Зауважимо, що й слово “алгебра” бере свій початок з математичного трактату аль-Хорезмі “Книга відновлення і протиставлення”. Мухамеду ібн Мусі ще не були відомі від’ємні числа, тому в процесі обчислень він користувався операцією перенесення від’ємника з одної частини рівняння в іншу, де той стає доданком. Цю операцію Мухамеда ібн Муса називав “відновленням”. Слову “протиставлення” відповідає зміст збирання невідомих на одну сторону рівняння. Арабською “відновлення” – аль-джебр. Звідси походить слово “алгебра”[3]. Слова “алгоритм” і “алгебра” на перших кроках розвитку математики було щільно пов’язані між собою і за змістом і за походженням. Вони виникли з одного джерела і разом пройшли багатовіковий шлях еволюції, зайняли провідні місця у сучасній науковій термінології. Здавна найбільшу увагу приділяли дослідженням алгоритму з метою мінімізації обсягу досліджень – часовій складності розв’язання задач. Але зміст складності алгоритму не обмежується однією характеристикою. В ряді випадків не менше значення має складність логіки побудови алгоритму, різноманітність його операцій, зв’язаність їх між собою. Ця характеристика алгоритму називається програмною складністю. В теорії алгоритмів, крім часової та програмної складності, досліджуються також інші характеристики складності, наприклад, ємкістна, але найчастіше розглядають дві з них - часову і програмну. Якщо у кінцевому результаті часова складність визначає час розв’язання задачі, то програмна складність характеризує ступінь інтелектуальних зусиль, що потрібні для синтезу алгоритму. Вона впливає на витрати часу проектування алгоритму. Вперше значення зменшення програмної складності продемонстрував аль-Хорезмі у своєму трактаті “Про індійський рахунок”. У часи аль-Хорезмі для розрахунків користувалась непозиційною римською системою числення. Її вузловими числами є І, V, X, L, C, D, M, всі решта чисел утворюються сумуванням і відніманням вузлових. аль-Хорезмі, мабуть, першим звернув увагу на складність римської системи числення у порівнянні з позиційною десятковою з точки зору простоти операцій, їх послідовного виконання та засвоєння. Він писав: “…ми вирішили розтлумачити про індійський рахунок за допомогою .ІХ. літер, якими вони виражали будь-яке своє число для легкості і стислості, полегшуючи справу тому, хто вивчає арифметику, тобто число найбільше і найменше, і все, що є в ньому від множення і ділення, сумування, віднімання та інше.”[1]. Виокремленні слова – легкість, стислість, полегшення свідчать перш за все про те, що мова йде про програмну складність алгоритмів арифметичних операцій з використанням двох систем числення. Мабуть, ці слова аль-Хорезмі про складність алгоритмів при їх порівнянні були першими в історії арифметики. Алгоритми реалізації арифметичних операцій, описані аль-Хорезмі у словесній формі, були першими у позиційній десятковій системі числення. Цікаво спостерігати, як точно і послідовно описує він алгоритм сумування, користуючись арабською системою числення і кільцем (нулем). Наведемо повністю цей алгоритм [1]. “Сказав Алгорізмі: Якщо ти хочеш додати число до числа або відняти число від числа, постав обидва числа в два ряди, тобто одне над другим, і нехай буде розряд одиниць під розрядом одиниць і розряд десятків під розрядом десятків. Якщо захочеш скласти обидва числа, тобто додати одне до другого, то додай кожний розряд до розряду того ж роду, який над ним, тобто одиниці до одиниць, десятки до десятків. Якщо в якому-небудь із розрядів, тобто в розряді одиниць або десятків, або якому-небудь іншому набереться десять, став замість них одиницю і висувай її в верхній ряд, тобто, якщо ти маєш в першому розряді, який є розряд одиниць, десять, зроби з них одиницю і підніми її в розряд десятків, і там вона буде означати десять. Якщо від числа залишилось що-небудь, що нижче десяти, аби якщо саме число нижче десяти, залиши його в тому ж розряді. А якщо нічого не залишиться, постав кружок, щоби розряд не був пустим; але нехай буде в ньому кружок, який займе його, аби не сталося так, що якщо він буде пустим, розряди зменшаться і другий буде прийнятий за перший, і ти обманешся в своєму числі. Те ж саме ти зробиш у всіх розрядах. Подібним же чином, якщо збереться у другому розряді .Х., зробиш з них одиницю і піднімеш її в третій розряд, і там вона буде означати сто, а що лишається нижче .Х., залишиться тут. Якщо ж нічого в інших не залишається , ставиш тут кружок, як вище. Так ти зробиш в інших розрядах, якщо буде більше”. Можна бачити, що в цьому опису є всі параметри алгоритму. Це один з перших відомих у світі вербальних арифметичних алгоритмів. Розглянемо логіку побудови арифметичних процедур з використанням римської та арабської систем числення з метою порівняння їх за програмною складністю. Розглянемо приклад операції сумування. Будемо користуватися алгоритмом на основі табличного методу. У арабській системі з порозрядними операціями розмір таблиці 10*10. Визначення суми чергових розрядів двох чисел, наприклад, 2 і 3 за таблицею дорівнює 5, або 7 і 9 дорівнює 16. Ці таблиці ми пам’ятаємо з дитинства. Інша ситуація є з римською системою числення. Крім таблиці (I,II,…Х)*(I,II,…Х), що є еквівалентом таблиці 10*10 у арабській позиційній системі, додатково потрібно ще чотири таблиці з вузловими числами римської системи L,C,D,M та доповнення табличного методу логічними процедурами. Наприклад, для операції сумування двох чисел CMLIX + XCIV потрібні таблиці більшого об’єму, ніж 10*10 кожна. Один з варіантів рахунку полягає в представленні чисел, по-перше, розділеними на окремі цифри, по-друге, проведенням операцій віднімання і сумування окремих цифр з використанням таблиць, по-третє, об’єднанням цифр, що залишилися, в єдине число. CMLIX + XCIV = (-C) + M +L +(-I) + X + (-X) + C +(-I) + V; Оскільки –C + С = 0; –X + X = 0; – I – I = – II, V – II = III, то (1) перепишеться у вигляді: CMLIX + CIV = M + L + III = MLIII; Як бачимо, для проведення розрахунків у римській системі необхідно виконувати більше типів операцій, ніж у десятковій арабській позиційній системі числення. Крім того, у римській системі потрібні додаткові логічні перетворення, що суттєво ускладнюють зв’язки між окремими операціями обчислювального процесу. Часова складність операцій сумування і віднімання в десятковій системі визначається кількістю розрядів у взаємодіючих числах. У римській системі часова складність залежить від порядку розташування цифр у числах. У тих випадках, коли не потрібно утворювати ланцюги логічних операцій, часова складність не перевищує часову складність операцій з десятковими числами. У протилежному випадку, як у розглянутому прикладі, зростання невелике. Таким чином, за логікою побудови і різноманітністю операцій – програмною складністю, арабська система суттєво простіша за римську, що й довів аль-Хорезмі. За часовою складністю вони майже однакові. Величезне революційне значення мало використання десяткової систем числення у Європі у всіх сферах життя – побуті, навчанні, торгівлі, суднобудуванні, техніці, географії, астрономії та багато інших. І те, що цей процес співпав з епохою Відродження, не є випадковим. Введення десяткової системи числення, можливо, відіграло вирішальну роль прискорювача у поступових процесах Ренесансу. Значна роль в цьому належить видатному арабському вченому аль-Хорезмі. Блок-схема алгоритму №1 Початок a1=3; b1=0; a2=0; b2=1; a3=5; Ввід даних a=503; b=10 c=3 a1<b1 b1 b1и1b1 a2=a2-1 Ні c2=a2-b2 c=9 a2<b2 b1 b1и1b1 a3=a3-1 S=”a3”+”c2”+”c1” Кінець Ні Програмна складність: 10 Часова складність: показує при виконанні програми Блок-схема алгоритму №2 Виділення цифри: с=II; b=V+II a=a-c [a=D-C+C-II-c] b=b-c [b=V] Початок Еквівалентне перетворення : a=D-C+C-II+II, b=V+II a=a-c [a=D], b=b-c [b=VII] Виділення цифри: с=III; b=VII+с a=a-c [a=D], b=b-c [b=VII] Виділення цифри: с=III; b=VII+с Еквівалентне перетворення : a=D+III; b=VII+III Ввід даних a=DIII; b=X Еквівалентне перетворення : a=D-C+C-II-V+V, b=V Виділення цифри: с=V; b=c a=a-c [a=D-C+C-II-V-c] b=b-c [b=0] S=CDIIVC Кінець Програмна складність: 11 Часова складність: : показує при виконанні програми #include <stdio.h> Варіанти завдань Завдання № 8 CLXII – LX 162 - 60 #include <conio.h> #include <stdlib.h> #include <string.h> #include <time.h> int main() { char dodat[30],vidjem[30],chuslo1[30],chuslo2[30]; int a1=0, a2=0, a3=0, i, p, p1,t, t2, suma=0, b=0, jh=21; printf("Vvedit 1-chuslo: "); t=time(0); gets(chuslo1); //strcpy(chuslo1,"CLXII"); p=strlen(chuslo1); for(i=0;i<p;i++){ if(chuslo1[i]=='I' || chuslo1[i]=='V' || chuslo1[i]=='X' || chuslo1[i]=='L' || chuslo1[i]=='C' || chuslo1[i]=='D' || chuslo1[i]=='M'){} else{ printf("vu vvelu sumvol yakoho nema v rumskiji sustemi chuslennja"); return 0; getch(); } } for(i=0;i<p;i++){ if(chuslo1[i]=='I'){ if(chuslo1[i+1]=='L' || chuslo1[i+1]=='C' || chuslo1[i+1]=='D' || chuslo1[i+1]=='M' || (chuslo1[i+1]=='I' && chuslo1[i+2]=='I' && chuslo1[i+3]=='I')){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); } if(i!=0)if(chuslo1[i+1]=='V' || chuslo1[i+1]=='X')if(chuslo1[i-1]=='I'){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); }} if(chuslo1[i]=='V') if(chuslo1[i+1]=='X' || chuslo1[i+1]=='L' || chuslo1[i+1]=='C' || chuslo1[i+1]=='D' || chuslo1[i+1]=='M' || (chuslo1[i+1]=='V' && chuslo1[i+2]=='V' && chuslo1[i+3]=='V')){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); } if(chuslo1[i]=='X'){ if(chuslo1[i+1]=='D' || chuslo1[i+1]=='M' || (chuslo1[i+1]=='X' && chuslo1[i+2]=='X' && chuslo1[i+3]=='X')){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); } if(i!=0)if(chuslo1[i+1]=='L' || chuslo1[i+1]=='C')if(chuslo1[i-1]=='X'){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); }} if(chuslo1[i]=='L') if(chuslo1[i+1]=='C' || chuslo1[i+1]=='D' || chuslo1[i+1]=='M' || (chuslo1[i+1]=='L' && chuslo1[i+2]=='L' && chuslo1[i+3]=='L')){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); } if(chuslo1[i]=='C'){ if(chuslo1[i+1]=='C' && chuslo1[i+2]=='C' && chuslo1[i+3]=='C'){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); } if(i!=0)if(chuslo1[i+1]=='D' || chuslo1[i+1]=='M')if(chuslo1[i-1]=='C'){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); }} if(chuslo1[i]=='D') if(chuslo1[i+1]=='M' || (chuslo1[i+1]=='D' && chuslo1[i+2]=='D' && chuslo1[i+3]=='D')){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); } if(chuslo1[i]=='M') if(chuslo1[i+1]=='M' && chuslo1[i+2]=='M' && chuslo1[i+3]=='M'){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); }} printf("Vvedit 2-chuslo: "); gets(chuslo2); //strcpy(chuslo2,"LX"); p=strlen(chuslo2); for(i=0;i<p;i++){ if(chuslo2[i]=='I' || chuslo2[i]=='V' || chuslo2[i]=='X' || chuslo2[i]=='L' || chuslo2[i]=='C' || chuslo2[i]=='D' || chuslo2[i]=='M'){} else printf("vu vvelu sumvol yakoho nema v rumskiji sustemi chuslennja"); } for(i=0;i<p;i++){ if(chuslo2[i]=='I'){ if(chuslo2[i+1]=='L' || chuslo2[i+1]=='C' || chuslo2[i+1]=='D' || chuslo2[i+1]=='M' || (chuslo2[i+1]=='I' && chuslo2[i+2]=='I' && chuslo2[i+3]=='I')){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); } if(i!=0)if(chuslo2[i+1]=='V' || chuslo2[i+1]=='X')if(chuslo2[i-1]=='I'){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); }} if(chuslo2[i]=='V') if(chuslo2[i+1]=='X' || chuslo2[i+1]=='L' || chuslo2[i+1]=='C' || chuslo2[i+1]=='D' || chuslo2[i+1]=='M' || chuslo2[i+1]=='V'){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); } if(chuslo2[i]=='X'){ if(chuslo2[i+1]=='D' || chuslo2[i+1]=='M' || (chuslo2[i+1]=='X' && chuslo2[i+2]=='X' && chuslo2[i+3]=='X')){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); } if(i!=0)if(chuslo2[i+1]=='L' || chuslo2[i+1]=='C')if(chuslo2[i-1]=='X'){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); }} if(chuslo2[i]=='L') if(chuslo2[i+1]=='C' || chuslo2[i+1]=='D' || chuslo2[i+1]=='M' || chuslo2[i+1]=='L'){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); } if(chuslo2[i]=='C'){ if(chuslo2[i+1]=='C' && chuslo2[i+2]=='C' && chuslo2[i+3]=='C'){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); } if(i!=0)if(chuslo2[i+1]=='D' || chuslo2[i+1]=='M')if(chuslo2[i-1]=='C'){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); }} if(chuslo1[i]=='D') if(chuslo1[i+1]=='M' || chuslo1[i+1]=='D'){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); } if(chuslo1[i]=='M') if(chuslo1[i+1]=='M' && chuslo1[i+2]=='M' && chuslo1[i+3]=='M'){ printf("vu nepravelno vvelu chuslo\n"); return 0; getch(); }} p=strlen(chuslo1); for(i=0;i<p;i++){ if(chuslo1[i]=='I'){ if(chuslo1[i+1]=='V' || chuslo1[i+2]=='X'){ vidjem[a1]=chuslo1[i]; a1++; } else{ dodat[a2]=chuslo1[i]; a2++; }} else if(chuslo1[i]=='X'){ if(chuslo1[i+1]=='L' || chuslo1[i+2]=='C'){ vidjem[a1]=chuslo1[i]; a1++; } else{ dodat[a2]=chuslo1[i]; a2++; }} else if(chuslo1[i]=='C'){ if(chuslo1[i+1]=='D' || chuslo1[i+2]=='M'){ vidjem[a1]=chuslo1[i]; a1++; } else{ dodat[a2]=chuslo1[i]; a2++; }} else{ dodat[a2]=chuslo1[i]; a2++; }} p=strlen(chuslo2); for(i=0;i<p;i++){ if(chuslo2[i]=='I'){ if(chuslo2[i+1]=='V' || chuslo2[i+2]=='X'){ vidjem[a1]=chuslo2[i]; a1++; } else{ dodat[a2]=chuslo2[i]; a2++; }} else if(chuslo2[i]=='X'){ if(chuslo2[i+1]=='L' || chuslo2[i+2]=='C'){ vidjem[a1]=chuslo2[i]; a1++; } else{ dodat[a2]=chuslo2[i]; a2++; }} else if(chuslo2[i]=='C'){ if(chuslo2[i+1]=='D' || chuslo2[i+2]=='M'){ vidjem[a1]=chuslo2[i]; a1++; } else{ dodat[a2]=chuslo2[i]; a2++; }} else{ dodat[a2]=chuslo2[i]; a2++; }} dodat[a2]='\0'; vidjem[a1]='\0'; p=strlen(dodat); p1=strlen(vidjem); for(i=0;i<p1;i++) for(a3=0;a3<p;a3++) if(dodat[a3]==vidjem[i]){ dodat[a3]=1; vidjem[i]=1; break; } a2=0; for(a3=0;a3<p;a3++){ if(dodat[a3]==1)a2--; else dodat[a2]=dodat[a3]; a2++; } a2=0; for(a3=0;a3<p1;a3++){ if(vidjem[a3]==1)a2--; else vidjem[a2]=vidjem[a3]; a2++; } a2=0; p=strlen(dodat); for(a3=0;a3<p;a3++){ if(dodat[a3]=='M'){ chuslo1[a2]=dodat[a3]; a2++; }} for(a3=0;a3<p;a3++){ if(dodat[a3]=='D'){ chuslo1[a2]=dodat[a3]; a2++; }} for(a3=0;a3<p;a3++){ if(dodat[a3]=='C'){ chuslo1[a2]=dodat[a3]; a2++; }} for(a3=0;a3<p;a3++){ if(dodat[a3]=='L'){ chuslo1[a2]=dodat[a3]; a2++; }} for(a3=0;a3<p;a3++){ if(dodat[a3]=='X'){ chuslo1[a2]=dodat[a3]; a2++; }} for(a3=0;a3<p;a3++){ if(dodat[a3]=='V'){ chuslo1[a2]=dodat[a3]; a2++; }} for(a3=0;a3<p;a3++){ if(dodat[a3]=='I'){ chuslo1[a2]=dodat[a3]; a2++; }} chuslo1[a2]='\0'; for(a3=0;a3<p;a3++){ if(chuslo1[a3]=='L' || chuslo1[a3+1]=='L'){ chuslo1[a3]='C'; chuslo1[a3+1]=1; }} printf("rezultat: "); p=strlen(chuslo1); for(a3=0;a3<p;a3++){ if(chuslo1[a3]!=1) printf("%c",chuslo1[a3]); } t=(time(0)-t)*421; printf("\n%d",t); printf("\n"); t2=time(0); printf("Vvedit dva chusla v desjtkovij sustemi chuslennja: "); scanf("%d",&a3); printf("Vvedit 2-he chuslo: "); scanf("%d",&a2); printf(""); for(i=1;a3>0 || a2>0; i=i*10){ p=a3%10; p=p; b=0; a3=a3/10; p1=a2%10; a2=a2/10; a1=p+p1; if(a1>10){ a1=a1-10; b=1; } a1=a1*i+b*10*i; suma=suma+a1; } printf("%d",suma); t2=(time(0)-t2)*jh; printf("\n%d", t2); t=t-t2; printf("\n%d", t); getch(); return 0; }  Висновок: на цій лабораторній роботі я ознайомився з алгоритмами віднімання арабських та римських цифр і помітив, що римська система числення не є абсолютно досконалою, у моєму випадку можна сказати, що за допомогою еквівалентних перетворень її програмна складність трішки більша за аналогічну характеристику алгоритму, що стосується арабських цифр. На мою думку, цей результат є абсолютно закономірним, адже недаремно римська система числення не використовується у повсякденному житті. Текст програми №1: #include<iostream> #include<stdlib.h> using namespace std; //Варіант 25 DXIII – X 503 - 10 void input (char m[], int g[], int K); int find (int ,int); void main() { char st1[4],st2[3]; int m1[3],m2[2], res; input(st1,m1,3); input(st2,m2,2); res = find(m1[0],m2[0]); //cout<<"\n"<<res; //************************ if (m1[0]<m2[0]) { m1[1] = find(m1[1],1); if (m1[1]<1) // Коли другий розряд =0, наприклад 104 { m1[2] = find(m1[2],1); } } m1[0] = res; //*********************** res = find(m1[1],m2[1]); if (m1[1]<m2[1]) { m1[2] = find(m1[2],1); } m1[1] = res; cout<<"\n"; for (res=2;res>=0;res--) { cout<<m1[res]<<"\n"; } } void input (char m[],int g[],int K) { int p =K-1; char s; cin>>m; for (int i=0; i<K; i++) { s = m[i]; g[p] = atoi(&s); //cout<<"\n"<<g[p]; p--; } } int find (int i,int j) { // 0,1,2,3,4,5,6,7,8,9 int tab [10][10] ={0,9,8,7,6,5,4,3,2,1, //0 1,0,9,8,7,6,5,4,3,2, //1 2,1,0,9,8,7,6,5,4,3, //2 3,2,1,0,9,8,7,6,5,4, //3 4,3,2,1,0,9,8,7,6,5, //4 5,4,3,2,1,0,9,8,7,6, //5 6,5,4,3,2,1,0,9,8,7, //6 7,6,5,4,3,2,1,0,9,8, //7 8,7,6,5,4,3,2,1,0,9, //8 9,8,7,6,5,4,3,2,1,0};//9 return tab[i][j]; } Текст програми №2: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #define S "CDVIIC" #define n1 "DIII" #define n2 "X" void algoritm (void); void main (void) { char a[10],b[10]; printf("VVedit 4uslo 1: \n"); gets(a); char a1[10]=n1; if(strcmp(a,n1)==0) printf("4uslo 1 success\n"); else { printf("Program terminated"); getch();exit (1);} printf("VVedit 4uslo 2: \n"); gets(b); char b1[10]=n2; if(strcmp(b,n2)==0) printf("4uslo 2 success\n"); else { printf("Program terminated"); getch();exit (2);} printf("%s-%s\n",n1,n2); algoritm(); printf("The result is:>>> %s",S); getch(); } void algoritm (void) { printf ("Ekvivalentne peretvorennja1:\n"); printf ("a=D+III, b=VII+III\n"); printf ("Vudilennja cufru1:\n"); printf ("c=III, b=VII+c\n"); printf ("a=a-c [a=D], b=b-c [b=VII]\n"); printf ("Ekvivalentne peretvorennja2:\n"); printf ("a=D-C+C-II+II, b=V+II\n"); printf ("Vudilennja cufru2:\n"); printf ("c=II, b=V+c\n"); printf ("a=a-c [a=D-C+C-II], b=b-c [b=V]\n"); printf ("Ekvivalentne peretvorennja3:\n"); printf ("a=D-C+C-II-V+V, b=V\n"); printf ("Vudilennja cufru1:\n"); printf ("c=V, b=c\n"); printf ("a=a-c [a
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!