Автор работы: Пользователь скрыл имя, 30 Октября 2013 в 18:05, лабораторная работа
Часто при решении задач приходится многократно вычислять значения по одним и тем же зависимостям для различных значений входящих в их величины. Такие многократно повторяемые участки вычислительного процесса называются циклами. Использование циклов позволяет существенно сократить объем схемы алгоритма и длину соответствующей ей программы. Различают циклы с заданным и неизвестным числом повторений. С заданным числом повторений - цикл со счетчиком. С неизвестным числом повторений - цикл с предусловием, цикл с постусловием.
Часто при решении задач приходится многократно вычислять значения по одним и тем же зависимостям для различных значений входящих в их величины.
Такие многократно повторяемые
участки вычислительного
Использование циклов позволяет существенно сократить объем схемы алгоритма и длину соответствующей ей программы. Различают циклы с заданным и неизвестным числом повторений. С заданным числом повторений - цикл со счетчиком. С неизвестным числом повторений - цикл с предусловием, цикл с постусловием.
Для организации цикла необходимо выполнить следующие действия:
Алгоритм цикла с предусловием - While. Серия команд будет исполняться до тех пор, пока выполняется условие, если условие не выполняется, то цикл завершает работу и выполняется следующая за циклом команда. Следует отметить, что число повторений серии команд цикла заранее не определено и, если при первом входе в цикл условие уже не выполняется, то серия команд в цикле не будет выполнена ни одного раза.
Формат записи:
while Условие выполнения цикла do
begin
{Инструкции}
end;
Алгоритм цикла с постусловием - Repeat. Серия команд будет исполняться до тех пор, пока не выполнится условие, если условие выполняется, то цикл завершает работу и выполняется следующая за циклом команда. Следует отметить, что число выполнений серии команд цикла заранее не определено и если при первом входе в цикл условие уже выполняется, то серия команд в цикле будет выполняться один раз.
Формат записи:
repeat
{Инструкции}
until Условие выхода из цикла
Алгоритм цикла со счетчиком - For. Цикл со счетчиком или цикл с параметром является частным случаем цикла с предусловием. Отличие состоит в том, что в цикле со счетчиком задаются границы диапазона, по которым определяется количество повторений тела цикла.
Формат записи:
Вариант 1 (с увеличением счетчика)
for Счетчик := НачальноеЗначение to КонечноеЗначение do
begin
{Инструкции}
end;
Вариант 2 (с уменьшением счетчика)
for Счетчик := КонечноеЗначение downto НачальноеЗначение do
begin
{Инструкции}
end;
Вложенные циклы. В цикл, называемый внешним, могут входить один или несколько вложенных циклов, называемых внутренними. Организация как внешнего, так и внутреннего цикла осуществляется по тем же правилам, что и простого цикла. Параметры внешнего и внутреннего циклов разные и изменяются не одновременно, т.е. при одном значении параметра внешнего цикла параметр внутреннего цикла принимает поочередно все значения.
Задачи |
1.Дано два числа. Определить какое число имеет больше делителей.
program zadacha_1;
uses crt;
var
a,b:integer; {два числа}
k1, k2: integer; {количество делителей чисел}
i: integer; {переменная счетчик}
begin
clrscr;
writeln('Введите два числа');
readln(a,b);
for i:=1 to a do
begin
if a mod i=0 then k1:=k1+1;
end;
writeln('Количество делителей числа ',a,' равно ',k1);
for i:=1 to b do
begin
if b mod i=0 then k2:=k2+1;
end;
writeln('Количество делителей числа ',b,' равно ',k2);
if k1>k2 then
begin
writeln('Число ',a,' имеет больше делителей')
end
else
begin
writeln('Число ',b,' имеет больше делителей')
end;
readln;
end.
2.В возрастающем порядке напечатать все целые числа из диапазона 1..10000, представимые в виде n2+m2, где n,m > =0
program zadacha_2;
uses crt;
var
k,i,m,n: longint;
begin
clrscr;
for i:=1 to 20 do
for n:=1 to i do
for m:=1 to i do
begin
if i=sqr(n)+sqr(m) then
begin
writeln (i,'=',sqr(n),'+',sqr(m));
end;
end;
readln;
end.
3.Вычислить k-количество точек с целочисленными координатами, попадающих в круг радиуса R (R > 0).
program zadacha_3;
uses crt;
var
k,r,y,x: integer;
begin
clrscr;
writeln ('vvedite radius');
readln (r);
for x:=0 to r do
for y:=0 to r do
begin
if r>sqrt(sqr(x)+sqr(y)) then
begin
k:=k+1;
end;
end;
k:=((4*k)-(6*(r-1)))-1;
writeln ('k=',k);
readln;
end.
4. Найти количество четырехзначных чисел, делящихся на 23 и на последнюю свою цифру.
program zadacha_4;
uses crt;
var
s, a, b, c, d, g: integer;
begin
clrscr;
s:= 0; a:= 1;
while a<= 9 do begin
b:=0;
while b<= 9 do begin
c:=0;
while c<= 9 do begin
d:=0;
while d<= 9 do
begin
g:= 1000*a + 100*b + 10*c + d;
if (g mod 23 = 0) and (g mod d = 0) then
begin
s:= s + 1;
writeln (g);
end;
d:= d + 1;
end;
c:= c + 1;
end;
b:= b + 1;
end;
a:= a + 1;
end;
writeln (s);
readln;
end.
5. Определить пары натуральных чисел a < 100 и b < 100, произведение которых в 10 раз больше их суммы. Сколько таких пар?
program zadacha_5;
uses crt;
var
a, b, s, p, k : integer;
begin
clrccr;
k:=0;
for a:=1 to 100 do
for b:=1 to100 do
begin
s:= a + b; p:= a*b;
if p=10*s then
begin
writeln (‘a=’,a,’b=’,b);
k:=k+1;
b:=b+1;
end;
end;
a:=a+1;
writeln(k); readln;
end.
6. Совершенным числом называется число, равное сумме всех делителей, меньших, чем оно само. Например, 28=1+2+4+7+14. Составить программу, которая находит все совершенные числа в пределах некоторого числа. (вариант 1)
program zadacha_6;
uses crt;
var
n: integer; {число в пределах которых будут находятся совершенные числа}
d: integer; {делители}
s: integer; {сумма делителей}
i: integer; {искомые числа}
begin
clrscr;
writeln ('введите число в пределах которого будут находиться совершенные числа');
readln (n);
for i:= 2 to n-1 do
s:= 1;
for d:= 2 to i-1 do
begin
if i mod d = 0 then
begin
s:= s + d;
d:= d + 1;
end;
if s = i then begin
end;
end.
6. Составить программу, которая находит все совершенные числа в пределах от 2 до 10000. (вариант 2)
program zadacha_6;
uses crt;
var
i,j,k: integer;
s,s1: integer;
begin
clrscr;
for i:=2 to 10000
do
begin
s:=0;
for j:=1
to i-1 do
begin
if i mod j=0 then
begin
s:=s+j;
end;
end;
if (s=i) then
begin
writeln ('Число ',i,' совершенное ');
end;
end;
readln;
end.
7. Найти максимальное из натуральных чисел, не превышающих 5000, которое нацело делится на 39.
program zadacha_7;
uses crt;
var
i,b : integer {числа}
max : integer {максимальное число}
begin
clrscr;
max := 39;
for i := 1 to 5000 do
begin
if i mod 39 = 0 then
b := i;
if b > max then
max := b;
end;
writeln (‘max число= ‘,max);
readln;
end.
8. Найдите двузначное число, равное квадрату числа его единиц , сложенному с кубом числа его десятков.
program zadacha_8;
uses crt;
var
a,b,kb,q,kv:integer;
begin
clrscr;
a:=1;
while a<=9 do
begin
for b:=0 to 9 do
begin
kv:=b*b;
kb:=a*a*a;
q:=10*a+b;
if q = kv + kb then
write ('искомое двузначное число', q );
b:=b+1 ;
end ;
a:=a+1;
end;
readln;
end.
9. Найти все простые числа - близнецы (пример: 3 и 5, 5 и 7 и т.д.) в интервале от 3 до 100.
program zadacha_9;
uses crt;
var
i,j,q,j1 : integer; {Переменная счётчик}
k,k1: integer;
begin
clrscr;
for i:=3 to 100 do {проверяемые числа}
begin
k:=0;
for j:=1 to i do
begin
if (i mod j)=0 then
begin
k:=k+1;
end;
end;
q:=i+2;
k1:=0;
for j1:=1 to q do
begin
if (q mod j1)=0 then
begin
k1:=k1+1;
end;
end;
if (k=2) and (k1=2) then
begin
writeln ('числа ',i, ' и ',i+2, ' близнецы');
end;
end; readln;
end.
10. Ввести шесть чисел и найти произведение чисел больших 5
program zadacha_10;
uses crt;
var
x,p: integer;
i: integer;
begin
clrscr;
p:=1;
for i:=1 to 6 do
begin
writeln('Введите число');
readln(x);
if x>5 then
begin
p:=p*x;
end;
end;
writeln('p=',p);
readln;
end.
11. Даны целые числа от 1 до n. Посчитать среднее арифметическое этих чисел, если оно превышает 17, то на экран вывести число на 5 меньше среднего арифметического. В противном случае на экран вывести произведение этих чисел.
program zadacha_11;
var
i: integer; {счетчик}
n: integer; {количество
чисел}
s: integer; {сумма
чисел}
sr: real; {среднее
арифметическое}
p: integer; {произведение}
msr: real; {величина
на 5 меньше ср. арифметического}
begin
writeln
('введите количество чисел
readln
(n);
s:=0; p:=1;
for i:=1 to n do
begin
s:=s+i;
sr:=s/n;
p:=p*i;
end;
if sr>17 then
begin
msr:=sr-5;
writeln ('величина на 5 меньше среднего арифметического', ' ',);
readln;