Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Оператор цикла 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. Лягушка каждый последующий прыжок делает в два раза короче предыдущего. Достигнет ли она болота и за сколько прыжков. Длину первого прыжка задайте самостоятельно.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.