- •Тема 1. Арифметика действительных чисел. Вычисления по формулам Задача 11 в
- •Тема 2. Разветвления
- •Задача 27б
- •Тема 3. Простейшая целочисленная арифметика
- •Задача 14в
- •Тема 4. Простейшие циклы Задача 11
- •Тема 5. Простейшие графические построения Задача 15
- •Тема 6. Пошаговый ввод данных и вывод результатов
- •Тема 7. Сочетания цикла и разветвления
- •Тема 8. Обработка последовательностей символов
- •Тема 9. Вычисления с сохранением последовательности значений
- •Тема 10. Вложенные циклы
- •Тема 11. Вложенные циклы в матричных задачах
- •Тема 12. Использование процедур
- •Тема 13.Файлы
- •Тема 14. Списки
Тема 9. Вычисления с сохранением последовательности значений
Задача 4
Задание:
Даны действительные числа a1,...,a[20]. Получить числа b1,...,b[20], где b[i] - среднее арифметическое всех членов последовательности a1,...,a[20], кроме a[i] (i=1, 2, ..., 20).
Алгоритм:
В цикле вводим значения a1,...,a[20].
i=1
j=1, s=0
Если j<>i, то s:=s+a[j]
j=j+1
Если j<=20, то переход к шагу 4
b[i]:=s/(n-1)
i=i+1
Если i<=20 то переход к шагу 3
Вывод на экран значений b[i] (в цикле)
Блок-схема:
Реализация:
Program t9_num4;
var
a,b:array [1..20] of real;
s:real;
i,j:integer;
begin
Writeln('Введите последовательность натуральных чисел a[i]');
for i:=1 to 20 do
begin
Write('a[',i,']=');
Readln(a[i]);
end;
for i:=1 to 20 do
begin
s:=0;
for j:=1 to 20 do
if j<>i then s:=s+a[j];
b[i]:=s/19;
end;
for i:=1 to 20 do
Writeln('b[',i,']=',b[i]:10:4);
Readln;
end.
Протокол:
Вводим значения a[i]=1 для любых a[i]
i=1
j=1, s=0
Если i<>j, то s=s+a[j]=s+1
j=j+1
Если j<=20, то возврат к шагу 4
b[i]=s/19=19/19=1
i=i+1
Если i<=20, то переход к шагу 3
Тогда после выполнения 2-9 получаем b[i]=1 для любых b[i]
Печать значений b[i]=1 (в цикле)
Тема 10. Вложенные циклы
Задача 11
Задание:
Найти 100 первых простых чисел.
Математическое обоснование:
Простые числа - это числа, которые делятся нацело только на себя или на 1. Таким образом, чтобы выделить простые числа, нужно их разделить последовательно на все предшествующие им числа(кроме 1), если ни на одно число оно не делится нацело – значит, число простое.
Алгоритм:
i=1,k=0
j=2
Если (i mod j)=0, то число не простое - переход к шагу 7
j=j+1
Если j<=I, то переход к шагу 3
Если число простое, то индекс элемента массива простых чисел k=k+1, а сам k-тый элемент массива будет равен i
i=i+1
если k=100, то выход, иначе – переход к шагу 2
Реализация:
program t10_num11;
var
simple:array [1..100] of integer;
i,j,k:integer;
t:boolean;
begin
i:=1;
k:=0;
repeat
t:=false;
for j:=2 to i-1 do
if ((i mod j)=0) then t:=true;
if not t then
begin
k:=k+1;
simple[k]:=i;
Write('|',simple[k]);
end;
i:=i+1;
until k=100;
Readln;
end.
Блок-схема:
Тема 11. Вложенные циклы в матричных задачах
Задача 3
Задание:
Получить получить целочисленную матрицу, для которой aij=i+2j.
Алгоритм:
i=1
j=1
Находим a[i,j]=i+2*j
j=j+1
Если j<=12, то переход к шагу 3
i=i+1
Если I<=10, то переход к шагу 2
Блок-схема:
Реализация
program t11_num3;
uses crt;
var
i,j:integer;
a:array [1..10,1..12] of integer;
begin
clrscr;
Writeln('Матрица элементы которой равны a[i,j]=i+2j');
for i:=1 to 10 do
for j:=1 to 12 do
begin
a[i,j]:=i+2*j;
GotoXY(3+j*4,3+i);
Writeln(a[i,j]);
end;
Readln;
end.
Протокол:
i=1, j=1 => a[i,j]=1+2=3
Печать «3»
i=1, j=2 => a[i,j]=1+4=5
Печать «5»
…
i=1, j=12 => a[i,j]=1+24=25
Печать «25»
i=2, j=1 => a[i,j]=2+1=3
Печать «3»
…
i=10, j=12 => a[i,j]=10+24=34
Печать «34»