Osnovy_informatiki_-_5_Primery_programm-1
.pdfvar i,n:integer; a,ap:real; k:integer;
begin read(n);
{подготовка} read(ap); k:=0; for i:=2 to n do begin
read(a);
if (a<>0) and (ap=0) then {серия закончилась} k:=k+1;
ap:=a;
end;
if a=0 then k:=k+1; {серия в конце посл-ти} writeln(k);
end.
27.10.2012 |
Чердынцева М.И. |
11 |
Пример 6
•Длина самой большой серии из одинаковых чисел
27.10.2012 |
Чердынцева М.И. |
12 |
var i,n,a,ap,max,k :integer; begin
read(n); {подготовка}
read(ap); max:=0; k:=1; for i:=2 to n do
begin read(a);
if (a=ap) then {серия продолжается} |
|
|
k:=k+1 |
|
|
else begin |
|
|
if k>max then max:=k; |
|
|
k:=1; |
{для новой серии} |
|
end; |
|
|
ap:=a; |
|
|
end; |
|
|
if k>max then max:=k;{серия в конце посл-ти} |
|
|
writeln(max); |
|
|
end. |
Чердынцева М.И. |
13 |
27.10.2012 |
Пример 7.
•Последовательности произвольной длины, у которых есть признак конца.
•Последовательность символов произвольной длины. Признак конца последовательности – точка.
•Слово – последовательность символов, отличных от пробела.
•Посчитать количество слов.
27.10.2012 |
Чердынцева М.И. |
14 |
var с,сp:char; k:integer;
begin {подготовка} read(cp); k:=0;
while (cp<>’.’) do begin
read(c);
if c in [’ ’,’.’] and (cp<>’ ’) then {слово закончилось} k:=k+1;
сp:=с; end; writeln(k);
end.
27.10.2012 |
Чердынцева М.И. |
15 |
Пример 8
•Напечатать каждое слово предложения с новой строки, перевернув его.
27.10.2012 |
Чердынцева М.И. |
16 |
var с:char;
zn: set of char; word:string;
begin {подготовка}
zn:=[’ ’,’,’,’:’,’;’]; read(c);
while c<>’.’ do begin
while c in zn do read(c);{пропуск} word:=’’; {пусто}
while (c<>’.’) and not c in zn do begin
word:=c+word;
read(c);
end;
writeln(word);
end;
end. |
Чердынцева М.И. |
17 |
27.10.2012 |
Анализ итерационного цикла while
•Обозначим V –множество всех переменных программы.
•V принимает значения vi из T
•Состояние V на каждом этапе выполнения v0, v1, v2, v3,… vn – трасса программы
•Каждый оператор переводит V из одного состояния в другое (можно считать его функцией из T в T)
27.10.2012 |
Чердынцева М.И. |
18 |
Анализ итерационного цикла while
V:=v0; {B(v0)} |
V |
B(V) |
S(V) |
|
v0 |
B(v0)=true |
S(v0 ) |
while B(V) do |
v1 |
B(v1 )=true |
S(v1 ) |
S(V); {B(vi)} |
|
|
|
v2 |
B(v2 )=true |
S(v2 ) |
|
|
|
|
|
|
. . . |
|
|
{ V= vn+1 ;¬B(vn+1)} |
|
|
|
vn |
B(vn )=true |
S(vn ) |
|
|
vn+1 |
B(vn+1 )=false |
|
27.10.2012 |
Чердынцева М.И. |
19 |
Рекуррентные соотношения
• Функции вида
xi |
a, i |
0 |
|
f (xi 1 ), |
i [1, n] |
||
|
x:=a; i:=0; while (i<=n) do begin
i:=i+1; x:=f(x); end;
x:=a;
for i:=1 to n do x:=f(x);
{ условие B зависит от номера и номера берутся последовательно}
27.10.2012 |
Чердынцева М.И. |
20 |