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

Тема 6. Пошаговый ввод данных и вывод результатов

Задача 1д

Задание:

Даны натуральное число n, действительные числа a1, ..., an. Вычислить: д) a[1]*a[2]* ...* a[n];

Алгоритм:

  1. Вводим натуральное n

  2. I=1

  3. Вводим a[i]

  4. i=i+1

  5. Если i<=n, то переход к шагу 3, иначе- идем дальше

  6. s=1

  7. i=1

  8. s=s*a[i]

  9. i=i+1

  10. Если i<=n, то переход к шагу 8, иначе - идем дальше

  11. Вывод на экран результата s

Протокол:

  1. В процессе диалога вводим n=5

  2. 2.1. i=1, вводим a[i]=1

2.2. i=2, вводим a[i]=2

2.3. i=3, вводим a[i]=3

2.4. i=4, вводим a[i]=4

2.5. i=5, вводим a[i]=5

  1. s=1

  2. 4.1 i=1, s=1*1=1

4.2 i=2, s=1*2=2

4.3 i=3, s=2*3=6

4.4 i=4, s=6*4=24

4.5 i=5, s=24*5=120

5) Печать «Ответ : 120.0000»

Блок-схема:

Реализация :

program t6_num1d;

var

a:array [1..100] of real;

i,n:integer;

s:real;

begin

Write('Введите натуральное n (n<=100) :');

Readln(n);

Writeln('Введите последовательность действительных чисел');

for i:=1 to n do

begin

Write('a[',i,']=');

Readln(a[i]);

end;

s:=1;

for i:=1 to n do

s:=s*a[i];

Writeln('Ответ :',s:10:4);

Readln;

end.

Тема 7. Сочетания цикла и разветвления

Задача 69 а

Задание:

Дано натуральное число n, x1,y1,...,x[n],y[n]. Построить на экране точки с координатами x[i],y[i]: a) расположенные в верхней половине экрана;

Алгоритм:

  1. Ввод n

  2. Ввод координат точек x[i], y[i] (в цикле, см. тема 6, задача1д)

  3. i=1

  4. Блок построения точек, расположенных в верхней части экрана:

2.1 Если y[i]<=240, то стоим эту точку

2.2 i=i+1

  1. Выход из программы

Блок-схема:

Реализация:

program t7_num69a;

uses graph;

var

koord:array [1..1000] of PointType;

i,n,mode,regim:integer;

begin

Write('Введите натуральное n (n<=100) :');

Readln(n);

Writeln('Введите последовательность натуральных чисел x[i], y[i]');

for i:=1 to n do

begin

Write('x[',i,']=');

Readln(koord[i].x);

Write('y[',i,']=');

Readln(koord[i].y);

end;

mode:=Detect;

InitGraph(mode,regim,'');

ClearDevice;

SetBkColor(blue);

for i:=1 to n do

if koord[i].y<=240 then

PutPixel(koord[i].x,koord[i].y,yellow);

Readln;

end.

Протокол:

  1. В процессе диалога вводим n=2

  2. x[1]=50, y[1]=100

  3. x[2]=100,y[2]=50

  4. y[1]=100<240, строим точку 1

  5. y[2]=50<240, строим точку 2

  6. В результате получаем две желтые точки в верхней части синего экрана

Тема 8. Обработка последовательностей символов

Задача 9

Задание:

Дана строка символов. Преобразовать ее, удалив каждый символ * и повторив каждый символ, отличный от *.

Алгоритм:

  1. Вводим начальную строку

  2. i=1, s=’’

  3. Если st[i]<>’*’, то дублируем этот символ в строку s:=st[i]+st[i]

  4. i=i+1

  5. Если i<= длины строки, то переходим к шагу 3, иначе – выход

Реализация:

program t8_num9;

var

i:integer;

st,S:string;

begin

Writeln('Введите строку символов');

Readln(st);

s:='';

for i:=1 to length(st) do

if st[i]<>'*' then s:=s+st[i]+st[i];

Writeln('Получили строку :');

Writeln(s);

Readln;

end.

Блок-схема:

Протокол:

  1. В процессе диалога вводим st=’wr*t*’

  2. s=’’

3.1 st[1]=’w’<>’*’ , s=s+’w’+’w’=’ww’

3.2 st[2]=’r’<>’*’ , s=s+’r’+’r’=’wwrr’

3.3 st[3]=’*’

3.4 st[4]=’t’<>’*’ , s:=s+’t’+’t’=’wwrrtt’

3.5 st[5]=’*’

3.6 length(st)=5

  1. Печать ‘Получили строку : wwrrtt’