Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1.docx
Скачиваний:
26
Добавлен:
15.02.2016
Размер:
1.16 Mб
Скачать

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. Алгоритмы поиска и присвоения значений элементам массива

  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.

  1. Дан одномерный массив размерностью 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.

  1. Дан одномерный массив размерностью 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.