- •1. Простые операторы
- •2 Условный оператор If
- •3 Условный оператор Case.
- •Ручной счет.
- •4 Оператор цикла For
- •5. Оператор циклаRepeat…Until
- •6. Оператор повтораWhile
- •7.Вложенные циклы
- •8 Одномерные массивы
- •1. Алгоритмы поиска и присвоения значений элементам массива
- •2. Алгоритмы нахождения суммы, произведения и количества элементов массива. Работа с индексами элементов массива
- •3. Алгоритмы нахождения наибольшего или наименьшего элемента массива и его индекса
- •9. Двумерные массивы
- •1. Алгоритмы действий над элементами двумерного массива
- •2 Алгоритмы формирования одномерного массива
7.Вложенные циклы
1.Сложим все цифры какого-либо числа. Получим новое число, равное сумме всех цифр исходного числа. Продолжим этот процесс до тех пор, пока не получим однозначное число (цифру). Оно называется цифровым корнем исходного числа. Например, цифровой корень числа 34697 равен 2(3+4+6+9+7=29; 2+9=11; 1+1=2). Составьте программу нахождения цифрового корня натурального числа.
program cikl;
var
n,k,s:real;
begin
writeln('vvedite chislo');
readln(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('chislovoi koren chisla ',n,' raven ',s);
end.
Ручной счет
(3+5+8+9)=25;2+5=7
2. Старинная задача. Сколько можно купить быков, коров и телят, если бык стоит 10 рублей, корова – 5 рублей, теленок – полтинник (0,5 рубля), при условии, что на 10 рублей надо купить 100 голов скота.
Решение:обозначим черезb– количество быков,k– количество коров,t– количество телят. После этого можно записать два уравнения:
10b + 5 k + 0,5t = 100 и b + k + t = 100
Преобразуем их:
20b + 10k + t = 200 и b + k + t = 100
На 100 рублей можно купить:
не более 10 быков, т.е. 0 ≤ b≤ 10,
не более 20 коров, т.е. 0 ≤ k≤ 20,
не более 200 телят, т.е. 0 ≤ t≤ 200.
Таким образом, получаем:
program ctar;
var b,k,x,q,t:integer;
begin
for k:=0 to 10 do;
for b:=0 to 100 do;
for t:=0 to 200 do;
q:=(20*b+10*k+t=200);
x:=(b+k+t=100);
if(q=200) and (x=100);
then writeln('bykov ',b,'korov ',k,' telyat ',t');
end.
Ручной счет.
20b+10k+t=200=>b=1 k=9 t=90
20*(1)+10*(9)+90=200=>20+90+90=200
b+k+t=100=>1+90+9=100
3. Написать программу, которая находит все четырехзначные числа abcd(a,b,c,d– цифры числа, причем все они различны), для которых выполняется условие:
ab–cd=a+b+c+d
Другими словами, разность чисел, составленных из старших цифр числа и из младших, должна быть равна сумме цифр числа.
program cikl3;
var
a,b,c,d:integer;
for c:=0 to 7 do begin
a:=c+2; d:=9-c;
for b:=0 to 9 do
if (b<>c) and (b<a) and (b<>d) then
write (a,b,c,d,' ');
end;
readln;
end.
Ручной счет.
ab–cd=a+b+c+d
2109=> 21-9=12=2+1+0+9
7254=> 72-54=18=7+2+5+4
8163=>81-63=18=8+1+6+3
9472=>94-72=22=9+4+7+2
4. Дано натуральное число, кратное 3. Найдем сумму кубов цифр данного числа. Получим новое число. Применим к нему такое же преобразование и т.д. Оказывается, что любая последовательность чисел сходится к числу 153.
program cikl4;
var
s,n,m,k:integer;
begin
writeln('vvedite chislo kratnoe 3');
readln(n);
until n mod 3=0;
while n<> 153 do begin
s:0;
while n>0 do begin
m:=n mod 10;
s:= s +m*m*m;
n:=n div 10;
end;
n:=s;
inc(k);
end;
writeln('vypolneno preobrsaaz=',k);
readln;
end.
Ручной счет
8 Одномерные массивы
1. Алгоритмы поиска и присвоения значений элементам массива
Дан одномерный массив размерностью 10, заполненный целыми числами, введенными с клавиатуры, и величина N. Отрицательные элементы заменить наN. Измененный массив вывести на экран одной строкой.
program od;
var
n,i:integer;
m:array [1..10] of integer;
begin
writeln('vvedite n');
read(n);
for i:=1 to 10 do begin
readln (m[i]);
end;
for i:=1 to 10 do begin if m[i]<0 then m[i]:=n;
write(m[i]);
end;
end.
Дан одномерный массив размерностью N, заполненный случайными числами в интервале от -15 до 20. Вывести на экран значения элементов массива, абсолютное значение которых >10.
program od2;
var
i,n:integer;
m:array [1..3] of integer;
begin
m[i]:=random(20-15+1)-15 ;
for i:=1 to 10 do if (m[i]) >10 then
write(m[i]);
readln;
end.
Дан одномерный массив размерностью N, заполненный случайными числами. Каждый третий элемент массива возвести в квадрат, если элемент отрицательный. Измененный массив вывести на экран.
program od3;
var
i:integer;
m:array [1..10] of integer;
begin
for i:=1 to 10 do begin
readln(m[i]);
end;
for i:=1 to 10 do begin if
( i mod 3)=0) and (m [i]<0) then m[i]:= (m[i]*m[i]);
write(m[i]);
end;
readln;
end.
4.Составить программу вычисления и печати значений функции Y=(sinx+1)cos4x. Значения аргументов задать в массиве X, состоящего из 10 элементов. Значения функции записать в массив Y.
program od4;
var
i:integer;
x,y:array [1..10] of real;
begin
for i:=1 to 10 do begin
write ('vvedite ,i, znahenie');
readln (x [i]);
end;
for i:=1 TO 10 DO BEGIN
y[i]:= (sin (x[i]+1)* sqrt (4*(x[i])));
write(y[i]);
end;
readln;
end.
5.Из элементов массива А, состоящего из 25 элементов, сформировать массив Dтой же размерности по правилу: первые 10 элементов находятся по формулеDi=Ai+i, остальные - по формулеDi=Ai-i.
Program m5;
n=25;
var
a:array[1..n] of integer;
d:array[1..n] of integer;
i:integer;
begin
for i:=1 to n do begin
writeln('Vvedite ',i,' Znachenie');
readln(a[i]);
end;
for i:=1 to 10do
d[i]:=a[i]+i;
for i:=11 to 25 do
d[i]:=a[i]-i;
for i:=1to n do
writeln(d[i]);
readln;
end.