Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lec4.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
199.68 Кб
Скачать

Var n,k,y,s,I,j:integer;

Begin

Writeln(‘Введите исходные данные n и k’);

ReadLn(n,k);

S:=0;

For i:=1 To n Do

Begin

y:=1;

For j:=1 To k Do y:=y*i; {вычисление степени k числа i}

S:=S+y

End;

Writeln(‘Ответ ‘,S)

End.

Пример 3.5. Дано натуральное число N. Необходимо выполнить над этим числом следующие действия. Сложить все цифры числа, получив новое число. Сложить цифры вновь полученного числа, получив очередное число для обработки. Продолжать процесс до тех пор, пока не будет получено число, состоящее из одной цифры. Написать программу для нахождения такого однозначного числа. В конце вывести исходное число и однозначное число, полученное в результате преобразований.

Var n,k,s:LongInt;

Begin

Writeln(n);

s:=n;

While s>9 Do

Begin

k:=s; s:=0;

Repeat

s:=s+k Mod 10;

k:=k Div 10

Until k=0

End;

Writeln(‘Из числа ‘,n,’ получилось ’,s)

End.

Пример 3.6. Дан фрагмент программы. Определите значение целочисленной переменной  s  после его выполнения.

s:=128;    

For i:=1 to 4 do

For j:=2 to 3 do

s:=s–(i+j);

Мы имеем два вложенных цикла For. Присутствие операторных скобок begin … end здесь не обязательно, т.к. одни оператор подсоединяется к оператору цикла в любом случае, а вложенный цикл For j:=2 to 3 do s:=s–(i+j) так же рассматривается как один оператор. Для определения значений переменных в ходе выполнения программы составим трассировочную таблицу (см. табл. 8):

Таблица 8.

i

j

s

128

1

2

125

1

3

121

2

2

117

2

3

112

3

2

107

3

3

101

4

2

95

4

3

88

Ответ: в результате выполнения данного фрагмента s будет равно 88.

Пример 3.7. Вводится последовательность целых ненулевых чисел. Выяснить, есть ли в ней хотя бы одна пара рядом стоящих отрицательных чисел. Количество чисел, вводимых пользователем, не определено, но не меньше двух. После ввода очередного числа программа должна спрашивать, желает ли пользователь продолжать ввод. Ответ пользователя на такой вопрос должен быть только Y (“Yes”) или N (“No”).

Program neg;

Var a,a1:Integer; b:Boolean; answer:Char;

Begin

Write(‘Введите число ’);

ReadLn(a);

b:=false; {считаем, что таких чисел нет}

Repeat

Write(‘Введите число’);

ReadLn(a1);

b:=(a<0) and (a1<0) or b;

a:=a1; {сохраняем предыдущий элемент последовательности}

repeat

write(’Продолжать ввод? (Y/N) ’);

readLn(answer);

until (answer=’Y’)or(answer=’y’)or(answer=’N’)or(answer=’n’);

until (answer=’N’)or(answer=’n’);

If b

Then Writeln(‘Имеются два рядом стоящих отрицательных числа’)

Else Writeln(‘Рядом стоящих отрицательных чисел нет’)

End.

Для того чтобы исключить неверный ввод пользователя на вопрос о продолжении ввода использован вложенный цикл repeat.

Пример 3.8. Написать программу, которая находит и выводит на печать все четырёхзначные числ, где a, b, c, d - различные цифры, для которых выполняется: = a + b + c + d. Использовать 4 вложенных цикла for – по одному для каждой цифры числа.

Program abcd;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]