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

4.3.4. Вложенные циклы

Если телом цикла является циклическая структура, то такие циклы называются вложенными или сложными. Цикл, содержащий в себе другой цикл, называют внешним. Цикл, содержащийся в теле другого цикла, называется внутренним. Вложенные циклы могут быть любого типа и в различных сочетаниях. Правила организации как внешнего, так и внутреннего циклов такие же, как и для простого цикла каждого из этих типов. При построении вложенных циклов все операторы внутреннего цикла должны полностью находиться в теле внешнего цикла. Возможная глубина вложенности циклов может быть различной. Она зависит от конкретной реализации языка и объема имеющейся памяти ЭВМ.

Параметры циклов разных уровней изменяются не одновременно. Вначале все свои значения изменит параметр цикла наивысшего уровня вложенности при фиксированных (начальных) значениях параметров циклов с меньшим уровнем. Затем изменяется на один шаг значение параметра цикла следующего уровня и снова полностью выполняется самый внутренний цикл и т.д. до тех пор, пока параметры циклов всех уровней не примут все требуемые значения.

Задача 1. Составить программу нахождения всех совершенных чисел в интервале от 1 до N. Натуральное число называется совершенным, если оно может быть представлено в виде суммы всех своих делителей (кроме самого себя). Например, 6 является совершенным числом, так как 6=1+2+3.

При решении задачи рассматриваем числа от 2 до N, а делители от 1 до N–1.

program Sov_Chisla;

var i,j,S,N: integer;

begin

Write('Введите границу интервала N= '); Readln(N);

for i:=2 to N do

begin S:=0;

for j:=1 to i-1 do

if i mod j=0 then S:=S+j;

if i=S then writeln(i)

end

end.

Задача 2. Вводятся пять слов. Составить программу, печатающую TRUE, если в слове буква 'а' встречается чаще, чем буква 'б', и FALSE, если иначе. Если в слове нет букв 'а' и 'б' или одинаковое число букв 'а' и 'б', то информация об этом также должна выводиться на экран.

Напомним, что над символьными величинами можно выполнять только операции сравнения: <, <=, <>, =, =>, >=, >. Каждому символу соответствует свой десятичный код ASCII. Символы сравниваются в соответствии с их кодом.

При обработке символьной информации будем учитывать, что:

1) коды строчных букв латинского алфавита – упорядоченное множество, поэтому 'A'<'B'<...<'Z';

2) коды прописных букв латинского алфавита – упорядоченное множество, поэтому 'a'<'b'<...<'z';

3) коды букв русского алфавита не образуют упорядоченное множество, при этом следует отметить, что коды русских букв меньше, чем коды латинских букв, т.е. ‘z’<’a’, если а – буква русского алфавита.

4) коды цифр образуют упорядоченное множество, поэтому '0'<'1'<'2'<...<'9'.

При составлении программы организуем внешний цикл по количеству слов, переменная i – параметр цикла изменяется от 1 до 5. Во внутреннем цикле каждое слово вводится по одному символу. Заканчивается ввод очередного слова нажатием клавиши ввода.

program Slova;

var Sim: char; {вводимый символ}

n: integer; {счетчик букв 'a'}

k: integer; {счетчик букв 'б'}

f: integer; {длина очередного слова}

i, j: integer; {параметры циклов}

w: boolean; {результат обработки очередного слова, }

{если в нем есть буквы 'a' и 'б'}

begin for i:=1 to 5 do

begin n:=0; k:=0;

Writeln('введите длину ',i,'–го слова:'); Readln(f);

Writeln('введите ' ,i, '–ое слово:');

for j:=1 to f do

begin Read(sim);

if sim='a' then n:=n+1;

if sim='б' then k:=k+1;

end;

if (n=0) and (k=0) then Writeln('В слове нет букв 'a' и 'б')

else if n=k then

Writeln('В слове одинаковое число букв 'a' и 'б')

else begin w:= n>k; Writeln(w) end;

Writeln

end

end.

Задача 3. Найти сумму ряда

program summa;

var k, n: integer;

s, x, s1: real;

begin Write(‘введите x ’);

Readln(x);

s:=0;

for k:=1 to 10 do

begin s1:=0;

for n:=1 to 100 do

s1:=s1+(n+k)/sqr(n+1);

s:=s+s1*(x+k)/sqr(k)

end;

Writeln(‘сумма s=’, s:7:2)

end.

Задача 4. Долгожитель (более 100 лет) заметил, что если к сумме квадратов цифр его возраста прибавить число его дня рождения, то получится как раз его возраст. Сколько ему лет.

program vozrast;

var i,j,k,c,g,y:integer;

begin

for c:=101 to 200 do

begin i:=c mod 10; {выделяем последнюю цифру числа}

j:=c div 10 mod 10; {выделяем вторую цифру числа}

k:=c div 100; {выделяем первую цифру числа}

g:=sqr(i)+sqr(j)+sqr(k);

for y:=1 to 31 do

if c=g+y then writeln(c,' ',g,' ',y,' ', i,j,k);

end;

end.

В результате выполнения программы получим возраст долгожителя 109 лет.

Задачи для самостоятельного решения.

  1. Найти сумму квадратов всех целых чисел от 10 до 50.

  2. Дано натуральное n. Найти сумму n2+(n+1)2+…+(2n)2.

  3. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через 3, 6, 9,. …, 24 часа, если первоначально была одна амеба.

  4. Вычислить значение выражения ((…(202-192)2-182)2-…-12)2.

  5. Дано натуральное N. Выясните, сколько цифр оно содержит.

  6. Найдите сумму цифр заданного натурального числа.

  7. Цифры заданного натурального числа запишите в обратном порядке.

  8. Найдите наименьший делитель заданного натурального числа A (не считая единицы).

  9. Определите, является ли заданное натуральное число палиндромом (палиндром - число, одинаково читаемое слева направо и справа налево).

  10. Известен начальный вклад клиента в банк и процент годового дохода. Определите, через сколько лет вклад превысит заданный размер и каков при этом будет размер вклада.

  11. Торговая фирма в первый день работы реализовала товаров на P тыс. руб., а затем ежедневно увеличивала выручку на 3%. Какой будет выручка фирмы в тот день, когда она впервые превысит заданное значение Q ? Сколько дней придется торговать фирме для достижения этого результата?

  12. Малое предприятие в первый день работы выпустило P единиц товарной продукции. Каждый последующий день оно выпускало продукции на Q единиц больше, чем в предыдущий. Сколько дней потребуется предприятию, чтобы общее количество выпущенной продукции за все время работы впервые превысило запланированный объем?

  13. Даны два натуральных числа M и N - числитель и знаменатель дроби M/N. Требуется сократить дробь, насколько это возможно.

  14. Вычислите P = 1 . 2 + 2 . 3 . 4 + 3 . 4 . 5 . 6 + ...+ N . (N+1) . ... . 2N.

  15. Пифагоровыми называются тройки натуральных чисел  a, b, с , удовлетворяющие условию:  a2 + b2 = c2 . Например, пифагоровой является тройка чисел 6, 8, 10. Найдите все тройки пифагоровых чисел, не превышающих 25.

  16. Найти 100 первых простых чисел.

  17. Найти все целые числа из промежутка от 100 до 300, сумма делителей равна 50.

  18. Найти все целые четырехзначные числа, в десятичной записи которых есть цифра 9.

  19. Шестизначный номер автобусного билета называют "счастливым", если равны суммы его первых трёх и последних трёх цифр. Подсчитайте количество "счастливых" билетов.

  20. Числом Армстронга называется целое n-значное число, сумма n-х степеней цифр которого равна самому этому числу. Например, числом Армстронга является число 407, так как 407 = 43 + 03 + 73. Найдите все числа Армстронга для заданного n <= 10.

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