Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Оператор цикла FOR
Задача 1. Найти произведение положительных, сумму и количество отрицательных из 10 введенных целых значений. USES Crt; VAR X: INTEGER; S, K, P: INTEGER; I: BYTE; Begin P: =1; S: =0; K: =0; FOR I: =1 TO 10 DO Begin WriteLn(‘Введите ‘, I, ’ -е значение’); ReadLn(x); IF X> 0 Then P: =P*X; { произведение положительных } IF X< 0 Then Begin S: =S+X; { сумма отрицательных } K: =K+1; { количество отрицательных } End; End; WriteLn(‘ Произведение положительных значений = ‘, p); WriteLn(‘ Сумма отрицательных значений = ‘, s); WriteLn(‘ Количество отрицательных значений = ‘, k); END. Задача 2. Из N целых чисел найти минимальное значение. USES Crt; VAR MI, X: INTEGER; I, N: BYTE; BEGIN WriteLn('Введите количество значений'); ReadLn(n); WriteLn('Введите первое значение'); ReadLn(mi); FOR I: =2 TO N DO Begin WriteLn(‘Введите ‘, I, ’ -е значение’); ReadLn(x); IF X< MI Then MI: =X; End; WriteLn(‘Минимальное значение = ‘, MI); END. Задача 3. Из N целых чисел найти минимальное среди положительных и максимальное среди отрицательных значений. USES Crt; VAR MI, MA, N, I, X: INTEGER; FL, FL1: BYTE; BEGIN WriteLn('Введите количество значений'); ReadLn(N); FL: =0; FL1: =0; FOR I: =1 TO N DO Begin WriteLn('Введите ', I, ' значение'); ReadLn(X); IF (FL=0) AND (X< 0) Then Begin MA: =X; FL: =1; End; IF (FL1=0) AND (X> 0) Then Begin MI: =X; FL1: =1; End; IF (X< 0) AND (X> MA) Then MA: =X; IF (X> 0) AND (X< MI) Then MI: =X; End; IF FL=1 Then WriteLn('максимальное среди отрицательных = ', ma) Else WriteLn('отрицательных нет'); IF FL1=1 Then WriteLn('минимальное среди положительных = ', mi) Else WriteLn('положительных нет'); END. ..................................................................................................................................... Практические задания ..................................................................................................................................... 1. Найти среднее арифметическое минимального и максимального элементов из 10 введенных. 2. Напечатать лучший результат заплыва среди 8 участников. 3. Из n введенных чисел найти максимальное значение среди положительных элементов. 4. В группе определить самого высокого мальчика и самую маленькую девочку. 5. В ЭВМ вводятся результаты соревнований по прыжкам в высоту. Число участников произвольно. Напечатать сообщение о победителе. Оператор цикла WHILE Задача 1. Дано целое число а и натуральное (целое неотрицательное) число n. Вычислить а в степени n. {Введем целую переменную k, которая меняется от 0 до n, причем поддерживается такое свойство: b = (a в степени k).} USES Crt; VAR A, N, B, K: INTEGER; BEGIN ClrScr; Write(‘ Введите два значения ‘); ReadLn(A, N); K: = 0; B: = 1; While K < > N DO Begin K: = K + 1; B: = B * A; End; Write(‘ A в степени N = ’, B); END.
Другое решение той же задачи: USES Crt; VAR A, N, B, K: INTEGER; BEGIN ClrScr; { Чистка экрана } Write(‘ Введите два значения ‘); ReadLn(A, N); K: = N; B: = 1; {A в степени N = B * (A в степени K)} While K < > 0 DO Begin K: = K - 1; B: = B * A; End; Write(‘ A в степени N = ’, B); END. Задача 2. Даны натуральные числа а, b. Вычислить произведение а*b, используя в программе лишь операции +, -, =, < >. USES Crt; VAR A, B, C, K: INTEGER; BEGIN Write(‘ Введите два значения ‘); ReadLn(A, B); K: = 0; C: = 0; While K < > B DO Begin K: = K + 1; C: = C + A; End; {C = A * K и K = B, следовательно, C = A * B} Write(‘ A*B= ‘, C); END. Задача 3. Дано натуральное (целое неотрицательное) число A и целое положительное число D. Вычислить частное Q и остаток R при делении A на D, не используя операций DIV и MOD. (Согласно определению, А = Q * D + R, 0 < = R < D.) USES Crt; VAR A, D, R, Q: INTEGER; BEGIN ClrScr; Write(‘ Введите два значения ‘); ReadLn(a, d); R: = A; Q: = 0; While Not (R < D) DO Begin R: = R - D; {R > = 0} Q: = Q + 1; End; WriteLn(‘ Частное = ’, Q); WriteLn(‘ Остаток = ’, R); END. Задача 4. Каждый год урожайность повышается на 5%. Через сколько лет урожай удвоится? USES Crt; VAR YR, KL: BYTE; YRG: REAL; Begin ClrScr; Write('Введите урожайность '); ReadLn(YR); YRG: =YR; While (YRG < 2*YR) Do Begin YRG: =YRG+0.05*YRG; KL: =KL+1; End; WriteLn('Новый урожай ', YRG: 5: 0); Write('Через ', KL, ' лет урожай удвоится'); END. Задача 5. Деду M лет, а внуку N лет. Через сколько лет дед станет вдвое старше внука. И сколько при этом лет будет деду и внуку. USES Crt; VAR M, N: BYTE; Kl: BYTE; BEGIN ClrScr; Write('Введите количество лет деда '); ReadLn(m); Write('Введите количество лет внука '); ReadLn(n); KL: =0; While (M> 2*N) DO Begin M: =M+1; N: =N+1; KL: =KL+1; End; WriteLn(M, ' лет деду'); WriteLn(N, ' лет внуку'); WriteLn('Через ', KL, ' лет дед вдвое станет старше внука'); END. Задача 6. Поле засеяли цветами двух сортов на площади S1 и S2. Каждый год площадь цветов первого сорта увеличивается вдвое, а площадь второго сорта увеличивается втрое. Через сколько лет площадь первых сортов будет составлять меньше 10% от площади вторых сортов. USES Crt; VAR S1, S2: WORD; KL: BYTE; BEGIN ClrScr; Write('Введите площадь, которую засеяли цветами 1-го сорта '); ReadLn(S1); Write('Введите площадь, которую засеяли цветами 2-го сорта '); ReadLn(S2); KL: =1; While (S1> 0.1*S2) DO Begin S1: =S1*2; S2: =S2*3; KL: =KL+1; End; WriteLn('Площадь, которую засеяли цветами 1-го сорта ', S1); WriteLn('Площадь, которую засеяли цветами 2-го сорта ', S2); WriteLn('Через ', kl, ' лет'); END. Задача 7. Cоставить программу перевода числа из 10 системы счисления в 2 систему счисления. Для этой задачи представлено два решения. A) USES Crt; VAR DES, OST, I, DW: INTEGER; BEGIN ClrScr; Write('Введите десятичное число '); ReadLn(DES); I: =1; While (DES> =2) DO Begin OST: =DES mod 2; DES: =DES div 2; DW: =DW+OST*I; I: =I*10; End; DW: =DW+DES*I; Write('Двоичная запись числа ', DW); END. B) USES Crt; Const A=10; VAR DES, OST, I: INTEGER; DW: Array[1..100] OF INTEGER; BEGIN ClrScr; Write('Введите десятичное число '); ReadLn(des); I: =1; While (des> =2) DO Begin OST: =DES mod 2; DES: =DES div 2; DW[I]: =OST; I: =I+1; End; DW[I]: =DES; FOR I: =I DownTo 1 DO Write(DW[I]); END. ..................................................................................................................................... Практические задания ..................................................................................................................................... 1. Составить программу, печатающую квадраты всех натуральных чисел от 0 до заданного натурального n. 2. Дано натуральное n, вычислить n! (0! =1, n! = n * (n-1)!). 3. Последовательность Фибоначчи определяется так: a(0)= 1, a(1) = 1, a(k) = a(k-1) + a(k-2) при k > = 2. Дано n, вычислить a(n). 4. К старушке на обед ходят кошки. Каждую неделю две кошки приводят свою подружку. В доме у старушки 100 мисок. Через какое время появятся лишние кошки, и сколько кошек при этом останется голодными. 5. Известна сумма номеров страниц, определить номер страницы. 6. Лягушка каждый последующий прыжок делает в два раза короче предыдущего. Достигнет ли она болота и за сколько прыжков. Длину первого прыжка задайте самостоятельно.
|