|
Скачати 206.8 Kb.
|
Фонд Освітніх та Інформаційних Технологій Рішення (Частина 4) Завдання 165 { Бінарний пошук у впорядкованому масиві } label bye; const Нв=10; var а:array[1..10] of integer; { масив цілих } obr:integer; { зразок для пошуку } ok: boolean; { TRUE - масив впорядкований } sred,verh,niz:integer; { номери середнього, верхнього і нижнього ел-тов масиву} found:boolean;{ ознака збігу із зразком } n:integer; { лічильник порівнянь із зразком } i:integer; begin { введення масиву } writeln('*** Бінарний пошук у впорядкованому масиві ***'); write('Введіть масив (у одному рядку ',нв); writeln (' цілих чисел) і натисніть '); write('->'); for i:=l to Hb-1 do read(а[i]); readln(а[HB]); { перевіримо, чи є масив упорядоченнteln('Середнє зростання: ',sred:6:1', см'); writeln ГУ ',m,'-x учнів зростання перевищує ', 'середній.'); end else writeln('Немає даних для обробки.'); readln; end. Завдання 167 { Обчислення суми елементів масиву (по стовпцях) const Row=3; { к-ть рядків } Col=5; { к-ть стовпців } var а: array[1..ROW,1..COL] of integer; { масив } s: array[1..COL] of integer; { сума елементів } i,j: integer; begin writeln('Введіть масив.'); writeln('Після введення елементів кожного рядка' COL', цілих чисел, натискайте '); for i:=l to ROW do { ROW рядків } begin write('->'); for j:=l to Col-1 do read(а[i,j]); readln(а[i,col]); end; writeln('Введений масив'); for i:=l to ROW do begin for j:=1 to Col-1 do write(а[i,j]:4); writeln(а[i,col]:4); end; { обробка } for j:=1 to COL do { для кожного стовпця } for i:=l to ROW do { підсумовуємо ел-ти одного стовпця } writeln('--------- for i:=l to COL do write(s[i]:4); writeln; readln; end. Завдання 170 { обчислення визначника матриці другого порядку } var а: array[1..2,1..2] of real; det: real; { визначник (детермінант) } i,j: integer; { індекси масиву } begin writeln('Введіть матрицю другого порядку.'); writeln('Після введення елементів рядка натискайте '); for i:=l to 2 do begin write('->'); read(а[i,1]); readln(а[i,2]); end; det:=a[l,l]*a[2,2] - а[l,2]*a[2,1]; writeln('Визначник матриці '); for i:=l to 2 do begin for j:=1 to 2 do write(а[i,j]:6:2); writeln; end; writeln('рівний ',det:6:2); readln; end. Завдання 171 { Перевіряє, чи є матриця магічним квадратом } const Мах=5; { максимальний розмір матриці } array[1..Мах,1..MAX] of integer; { матриця } n: integer; { розмір матриці, що перевіряється } ok:boolean; { TRUE - матриця є маг. квадратом} i,j: integer; { індекси масиву } sum: integer; { сума ел-тов головної діагоналі матриці } temp: integer;{ сума елементів поточного рядка, стовпця або другої діагоналі матриці } begin write('Введіть розмір матриці (3..4) ', "і натисніть ->'); readln(n); Writeln('Введіть рядки матриці'); Writeln('Після введення строки',п', цілих чисел' 'натискайте '); for i:=l to n do begin write('->'); for j:=l to n-1 do read(а[i,j]); readln(а[i, n]); end; ok:=true; { хай матриця - магічний квадрат } sum:=0; { обчислимо суму елементів головної діагоналі } for i:=l to n do sum:=sum+a[i,i]; { обчислюємо суми по рядках} i:=l; repeat temp:=0; { сума ел-тов поточного рядка } for j:=l to n do temp:=temp+a [i,j]; i:=i+l; if temp <> sum then ok:=false; until (not ok) or (i > n); if ok then ( тут сума елементів кожного рядка рівна сумі ел-тов головної діагоналі } begin { обчислюємо суми по стовпцях } j:=l; repeat temp:=0; { сума ел-тов поточного стовпця } for i:=l to n do temp:=temp+a[i,j]; j:=j+l; if temp <> sum then ok:=false; until (not ok) or (j > n) ; if ok then { тут сума ел-тов кожного рядка рівна сумі ел-тов кожного стовпця і рівна сумі ел-тов головної діагоналі} begin { обчислимо суму ел-тов другої головної діагоналі } temp:=0; j:=n; for i:=l to n do begin temp:=temp+a[i,j]; end; if temp <> sum then ok:=false; end; end; write('Введена матриця '); if not ok then write('не '); writeln('є магічним квадратом.'); readln; end. Завдання 173 { Підводить підсумки Олімпійських ігор } const N=10; {кількість країн-учасниць } strana: array[1..N] of string[9]=('Австрія','германія' 'Канада','китай','корея','норвегия','россия', 'Сша','фінляндія'array[1..Мах,1..MAX] of integer; ( матриця } n: integer; { розмір матриці, що перевіряється } ok:boolean; { TRUE - матриця є маг. квадратом} i,j: integer; { індекси масиву } sum: integer; { сума ел-тов головної діагоналі матриці ) temp: integer;{ сума елементів поточного рядка, стовпця або другої діагоналі матриці } begin write('Введіть розмір матриці (3..4) ', 'і натисніть ->'); readln(n); Writeln('Введіть рядки матриці'); Writeln('Після введення строки',п', цілих чисел' 1 натискайте '); for i:=1 to n do begin write ('->'); for j:=l to n-1 do read(а[i,j]); readln(а[i,n]); end; ok:=true; { хай матриця - магічний квадрат } sum:=0; { обчислимо суму елементів головної діагоналі } for i:=1 to n do sum:=sum+a[i,i]; { обчислюємо суми по рядках} i:=l; repeat temp:=0; ( сума ел-тов поточного рядка } for j:=l to n do temp:=temp+a[i,j]; i:=i+l; if temp <> sum then ok:=false; until (not ok) or (i > n) ; if ok then { тут сума елементів кожного рядка рівна сумі ел-тов головної діагоналі } begin { обчислюємо суми по стовпцях } repeat temp:=0; { сума ел-тов поточного стовпця } . for i:=l to n do temp:=temp+a[i,j]; j:=j+l; if temp <> sum then ok:=false; until (not ok) or (j > n) ; if ok then { тут сума ел-тов кожного рядка рівна сумі ел-тов кожного стовпця і рівна сумі ел-тов головної діагоналі} begin ( обчислимо суму ел-тов другою головній діагоналі } temp:=0; j:=n; for i:=l to n do begin temp:=temp+a[i,j]; j:=j-l end; if temp <> sum then ok:=false; end; end; write('Введена матриця '); if not ok then write('не '); writeln('є магічним квадратом.'); readln; end. Завдання 173 f Підводить підсумки Олімпійських ігор } const N=10; (кількість країн-учасниць } strana: array[1..N] of string[9]=('Австрія','германія' 'Канада','китай','корея','норвегия','россия', 'Сша','фінляндія'array[1..Мах,1..MAX] of integer; { матриця ) n: integer; { розмір матриці, що перевіряється } ok:boolean; { TRUE - матриця є маг. квадратом} i,j: integer; { індекси масиву } sum: integer; { сума ел-тов головної діагоналі матриці temp: integer;{ сума елементів поточного рядка, стовпця або другої діагоналі матриці } begin write('Введіть розмір матриці (3..4) ', 'і натисніть ->'); readln(n); Writeln('Введіть рядки матріци1); Writeln('Після введення строки',п', цілих чисел' 'натискайте '); for i:=1 to n do begin write('->'); for j:=l to n-1 do read(а[i,j]); readln(а[i,n]); end; ok:=troe; { хай матриця - магічний квадрат } sum:=0; { обчислимо суму елементів головної діагоналі } for i: =1 to n do sum:=sum+a[i,i]; { обчислюємо суми по рядках} i :=1 repeat temp:=0; { сума ел-тов поточного рядка } for j:=l to n do temp:=temp+a[i,j]; i:=i+l; if temp <> sum then ok:=false; until (not ok) or (i > n) ; if ok then { тут сума елементів кожного рядка рівна сумі ел-тов головної діагоналі } end. { обчислюємо суми по стовпцях } repeat temp:=0; { сума ел-тов поточного стовпця }, for i:=l to n do temp:=temp+a[i,j]; if temp <> sum then ok:=false; until (not ok) or (j > n); if ok then ( тут сума ел-тов кожного рядка рівна сумі ел-тов кожного стовпця і рівна сумі ел-тов головної діагоналі} begin ( обчислимо суму ел-тов другою головній діагоналі } temp:=0; j:=n; for i:=l to n do begin temp:=temp+a[i,j]; end; if temp <> sum then ok:=false; end; end; write('Введена матриця '); if not ok then write('не '); writeln('є магічним квадратом.'); readln; { Підводить підсумки Олімпійських ігор } const N=10; (кількість країн-учасниць } strana: array[1..N] of string[9]=('Австрія','германія' 'Канада','китай','корея','норвегия','россия', 'Сша','фінляндія'абліца результатів } result: arrayfl..N+l, 1..5] of integer; { N+1-я рядок використовується як буфер при сортуванні таблиці } i,j: integer; max: integer; { номер рядка таблиці, в якій кількість очок максимальна } buf: string[9]; { використовується при сортуванні } begin writeln('Підсумки Олімпійських ігор'); writeln('Введіть в одному рядку кількість золотих ', 'срібних і бронзових медалей.'); { введення початкових даних } for i:=l to N do begin write(strana'[i] ->'); read(result[i,1],result[i,2]); { к-ть золотих і срібних } readln(result[i,3]); { к-ть бронзових } end; { обчислимо загальну к-ть медалей і окулярів } for i:=l to N do begin result[i,4]:=result[i, 1]+result[i,2]+result[i,3]; result [i,5]:=result[i,1]*7+result[i,2]* 6+result[ i, 3 ]* 5 ; end; { сортування масиву відповідно до кількості очок } { методом простого вибору } for i:=l to N-l do begin ( у частині таблиці починаючи з рядка i знайти j-ю рядок, в якому елемент result[j, 5] максимальний } max:=i; { хай це рядок з номером i } for j:=i+l to N do if result[j,5]> result[max,5] thenmax:=j; { Обміняємо i-ю рядок з рядком з номером max Як буфер використовуємо останній, не використовуваний рядок таблиці. } buf:=strana[i]; strana[i]:=strana[max]; strana[max]:=buf; for j:=1 to 5 do begin result[N+l,j]:=result[ i, j ] ; end; for j : =1 to 5 do begin result[i,j]:=result[max,j]; end; for j:=1 to 5 do begin result[max,j]:=result[N+l,j]; end; end; { тут таблиця впорядкована } writeln; writeln('Підсумки зимової Олімпіади в Нагано, 1998 г.1); writeln{'страна':12,'золото':8,'серебро':8,'бронза':8 'Всего':8,'очков' : 8) ; for i:=l to N do begin write(i:2,strana[i]:10); for j:=1 to 5 do write(result[i,j]:8); writeln; end; readln; end. Завдання 174 ( Гра "Вгадай число" } const N=3; { рівень складності - кількість цифр в числ igrok: array[1..N]of char; { комбінація гравця } comp: array[1..N]of char; { комбінація комп'ютера } a:- arrayfl..N] of boolean; { а[i]= TRUE, якщо i-я цифра комп'ютера співпала з однією з цифр гравця } ugad:integer;{ вгадано чисел } mesto:integer;{ з них на своїх місцях } i/ji integer; { індекси масиву }begin writeln('Комп'ютер задумав тризначне число. ', 'Ви повинні його відгадати.'); writeln('Після введення чергового числа, вам буде ', 'повідомлено, скільки цифр'); writeln('вгадано і скільки з них знаходяться ', 'на своїх місцях. ') ; writeln('Після введення числа натискайте .'); { комп'ютер "замислює" своє число } randomize; for i:=l to N do compfi]:=chr(random(lo)+48); ( 48 - код символу '0' } write('Комп'ютер задумав: '); for i:=l to N do write(comp[i]); writeln; repeat write('Ваш варіант-> '); {отримати варіант гравця } for i:=l to N-l do read(igrok[i]); readln(igrok[N]);for i:=l to N do а[i]:=FALSE; ( а[i]= TRUE, якщо i-я цифра числа комп'ютера співпала з однією з цифр числа гравця } { перевіримо, скільки цифр вгадано } ugad:=0; for i:=l to N do { перевіримо кожну цифру гравця } for j : =1 to N do begin if (igrok[i]= comp[j]) and not а[j] then begin ugad:=ugad+l; а[j]:=TRUE; { заборонимо порівнювати цю цифру комп'ютера з цифрами гравця, що залишилися, ще не перевіреними } end; end; { перевіримо, скільки на своїх місцях } mesto:=0; for i:=l to N do if igrok[i]= comp[i] then mesto:=mesto+l; writeln('Вгадано:',ugad,'. На своїх місцях:',mesto); until (ugad « N) and (mesto = N) ; writeln('***ви ВГАДАЛИ ЧИСЛО!***'); write('Натисніть для завершення.'); readln; end. Завдання 175 { Телеграф - передача повідомлень за допомогою азбуки Морзе. { Зауваження: можливо треба збільшити величини затримок. } uses Crt; const morse: array[128..159] of string[4]=( I I _ / I 1 f I I I I _ f 1 I I I I . I »___ I I / 1 1 / _ I I _ 1 1 f I 1 I . . 1 f . {А, Би, В, Г} {Д,е,ж,3} {І, Й,к,л} {М, Н,о,п} {Р,с,т,у} {Ф,х,ц,ч} {Ш,щ,',и} {Ь,е,ю,я} {параметри передачі } Tone=100; { частота сигналу (гц) } И=50; { тривалість (мс) "крапки" ) L2=100; ( тривалість (мс) "тире"} L3=50; { пауза (мс) між крапками і тире однієї букви } L4=100; { пауза (мс) між буквами } L5=150; { пауза (мс) між словами } var rues : string; sim: string[4]; { повідомлення } ( символ в кодуванні Морзе - послідовність крапок і тире } { "передаваний" знак - тире або крапка { номер символу і знаку } znak: string[l] i,j: integer; in Clrscr; writelnc*** Телеграф ***'); writeln('Введіть повідомлення, яке треба передати'); writeln('(використовуйте тільки великі російські букви)'); write('->'); readln(mes); for i:=l to Length(mes) do begin if (mes[i] >= 'a') and (mes[i] <='я') then begin ( визначимо код чергової букви (ф-я Ord) повідомлення і отримаємо з таблиці кодування відповідний елемент масиву - послідовність крапок і тире sim:=morse[ord(mes[i])]; repeat if (sim[j]= •-•) or (sim[j]= begin write (sim[j]) ; sound(1000); case sim[j] of 1.': Delay(50); '-': Delay(loo); end; Nosound; Delay(50); end; then until ((sim[j]= ' ') or (j>4)); Delay(100); { пауза між буквами } end else if mes[i]= ' ' then ( пропуск між словами } begin write(' '); { пропуск між словами повідомлення } Delay(150); end; end; writeln; writeln('Повідомлення передане!'); writeln('Для завершення роботи з програмою натисніть ', |'); readln; end. Завдання 177 { Функція max повертає максимальне з двох чисел function max(а,b: integer): integer; begin if а > b then max:=a else max:=b; end; Завдання 178 { Повертає результат порівняння чисел у вигляді символу відношення } function Compare(а,b: real): char; begin if а > b then Compare:='>' else if а < b then Compare:='<�• else Compare:='='; end; xl,x2: real; { порівнювані числа } res: char; { результат порівняння } begin writeln('Введіть два числа і натисніть '); write('->'); readln(xl,x2); res:=compare(xl,x2); ( виклик функції програміста } writeln(xl:6:2,res,x2:6:2); readln; end. Завдання 179 { Обчислює опір електричному ланцюгу } function Sopr(rl,r2: real; t: integer): real; ( rl,r2 - величини опорів t - тип з'єднання: 1 - послідовне; 2 - паралельне. Якщо тип з'єднання вказаний невірно, то повертає -1 } begin if t=l then Sopr:= rl+r2; if t=2 then Sopr:= rl*r2/(rl+r2) else Sopr:=-1; { невірно вказаний тип з'єднання} end; Завдання 180 { Обчислення ступеня числа з використанням властивостей логарифмів } function Instep(а,b:real):real; begin ( А в сепені В рівно З Логарифмуємо обидві частини рівності і отримуємо: В*in (A) = In (С) Нас цікавить значення З, тому обчислюваний Е в ступені В*in(А). Значення цього виразу рівне З, що і потрібно було обчислити. } Instep:=exp(b*ln(a)); end; var а: real; { число } b: real; { ступінь } з: real; { число в ступені } begin writeln('Введіть число і показник ступеня'); readln(а,b); c:=instep(а,b); writeln(a:6:3', в ступені ',ь:6:3' = ',с:б:3); readln; end. { обчислює дохід по внеску } function Dohod(sum: real; { сума внеску } stavka: real; { процентна ставка (річних) } srok: integer { термін внеску (днів) } ): real; begin Dohod:=sum*(stavka/100/365)*srok; { 365 к-ть днів у році } end; |
Фонд Освітніх та Інформаційних Технологій Обробка послідовності дробових чисел'); writeln('Після введення кожного числа натискайте '); sum:=0 |
Фонд Освітніх та Інформаційних Технологій Оголосите змінні, необхідні для обчислення вартості покупки, що складається з декількох зошитів, олівців і лінійки |
Фонд Освітніх та Інформаційних Технологій Дані дві цілі змінні а, b. Скласти фрагмент програми, після виконання якого значення змінних поменя |
Фонд Освітніх та Інформаційних Технологій У наступних завданнях змінні x, у, z передбачаються опісанними як array n] of integer (n деяке натуральне число, більше 0), якщо... |
Фонд Освітніх та Інформаційних Технологій Проте, в Turbo Pascal аргумент функції Sin повинен бути виражений в радіанах (1 радий. = 180 1415925, де 1415926 число "ПІ").) |
Фонд Освітніх та Інформаційних Технологій Проте, в Turbo Pascal аргумент функції Sin повинен бути виражений в радіанах (1 радий. = 180 1415925, де 1415926 число "ПІ").) |
ВИКОРИСТАННЯ НОВІТНІХ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ НА УРОКАХ ФІЗИКИ Для гармонійного поєднання останніх досягнень інформаційних технологій та шкільного курсу вивчення фізики постає проблема створення... |
Фонд Освітніх та Інформаційних Технологій Якщо на одну шальку терезів посадити Даринку, яка важить кілограмів, і Наталку, яка важить на 5 кілограмів менше, а на іншу насипати... |
СТВОРЕННЯ ОСВІТНЬОГО СЕРЕДОВИЩА ДЛЯ ПІДГОТОВКИ ПЕДАГОГІВ ЗАСОБАМИ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ Т педагогічних наук, доцент кафедри інноваційних та інформаційних технологій. Шевченко Людмила Станіславівна – кандидат педагогічних... |
Лекція Інформатизація діяльності інформаційних установ Лекція Інформатизація діяльності інформаційних установ. Електронний документний фонд як модель управління інформаційними ресурсами.... |