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

Тема 9. Вычисления с сохранением последовательности значений

Задача 4

Задание:

Даны действительные числа a1,...,a[20]. Получить числа b1,...,b[20], где b[i] - среднее арифметическое всех членов последовательности a1,...,a[20], кроме a[i] (i=1, 2, ..., 20).

Алгоритм:

  1. В цикле вводим значения a1,...,a[20].

  2. i=1

  3. j=1, s=0

  4. Если j<>i, то s:=s+a[j]

  5. j=j+1

  6. Если j<=20, то переход к шагу 4

  7. b[i]:=s/(n-1)

  8. i=i+1

  9. Если i<=20 то переход к шагу 3

  10. Вывод на экран значений 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.

Протокол:

  1. Вводим значения a[i]=1 для любых a[i]

  2. i=1

  3. j=1, s=0

  4. Если i<>j, то s=s+a[j]=s+1

  5. j=j+1

  6. Если j<=20, то возврат к шагу 4

  7. b[i]=s/19=19/19=1

  8. i=i+1

  9. Если i<=20, то переход к шагу 3

  10. Тогда после выполнения 2-9 получаем b[i]=1 для любых b[i]

  11. Печать значений b[i]=1 (в цикле)

Тема 10. Вложенные циклы

Задача 11

Задание:

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

Математическое обоснование:

Простые числа - это числа, которые делятся нацело только на себя или на 1. Таким образом, чтобы выделить простые числа, нужно их разделить последовательно на все предшествующие им числа(кроме 1), если ни на одно число оно не делится нацело – значит, число простое.

Алгоритм:

  1. i=1,k=0

  2. j=2

  3. Если (i mod j)=0, то число не простое - переход к шагу 7

  4. j=j+1

  5. Если j<=I, то переход к шагу 3

  6. Если число простое, то индекс элемента массива простых чисел k=k+1, а сам k-тый элемент массива будет равен i

  7. i=i+1

  8. если 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.

Алгоритм:

  1. i=1

  2. j=1

  3. Находим a[i,j]=i+2*j

  4. j=j+1

  5. Если j<=12, то переход к шагу 3

  6. i=i+1

  7. Если 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.

Протокол:

  1. i=1, j=1 => a[i,j]=1+2=3

  2. Печать «3»

  3. i=1, j=2 => a[i,j]=1+4=5

  4. Печать «5»

  5. i=1, j=12 => a[i,j]=1+24=25

  6. Печать «25»

  7. i=2, j=1 => a[i,j]=2+1=3

  8. Печать «3»

  9. i=10, j=12 => a[i,j]=10+24=34

  10. Печать «34»