Главная / Информатика / Программирование обработки строковых данных

Программирование обработки строковых данных

Дано: Найти самую длинную симметричную строку, читающуюся одинаково слева направо и справа налево, в заданном массиве строк.

Функция получает строку и возвращает ее длину, если она симметрична, или ноль — в противном случае.

Блок-схема:

начало abr(a)
да,f=true,i=1,½l(a)/2½,s1<>a2,f=false,1,s2=ala-i+1,s1=ai
2
1
да,f=true,abr=l(a),abr=0
2
конец abr(a)

Программа:

Program pr_2_3;

Uses crt;

Type mas=Array[1..20] Of string ;

Var a, b:mas;

s:string;

i, n,dl:integer;

Procedure input(var a:mas;var n:integer);

var i:integer;

Begin

writeln(‘введите число строк’);

readln(n);

for i:=1 To n Do

Begin

writeln(‘введите ‘,i:3,’ строку’);

readln(a[i]);

End;

End;

Procedure output(Const b:mas;n:integer);

var i:integer;

begin

For i:=1 To n Do Writeln(b[i]);

End;

Function abr(Const a:string):integer;

var i:integer;

f:boolean;

s1,s2:string[1];

Begin

f:=true;

For i:=1 To trunc( length(a)/2) Do Begin

s1:=copy(a, i,1);

s2:=copy(a, length(a)-i+1,1);

If s1<>s2 Then Begin f:=false; break; End;;

End;

if f Then abr:=length(a) Else abr:=0;

End;

Procedure fabr(Const a:mas;n:integer;Var s:string;Var col:integer);

Var i, j:integer;

Begin

j:=1;

col:=abr(a[1]);

For i:=1 To n Do if abr(a[i])>col Then Begin j:=i; col:=abr(a[i]); End;;

If abr(a[j])>0 Then s:=a[j] Else s:=»;

End;

Begin

clrscr;

input(a, n);

writeln;

output(a, n);

writeln;

fabr(a, n,s, dl);

writeln(s,’ ‘,dl);

End.

Результат:

При вводе 3, Sasha, abba, sos :

Введите число строк

3

Введите 1 строку

Sasha

Введите 2 строку

Abba

Введите 3 строку

Sos

Sasha

Abba

Sos

Abba 4

ПРОСТЕЙШИЕ ГРАФИЧЕСКИЕ ПОСТРОЕНИЯ

Дано: Получить на экране:

Программа:

Program pr_4;

Uses graph, crt;

Var c1,c2,gr, gm, i:integer;

Procedure pp(x, y:integer;c:word);

Var i, j:integer;

Begin

For i:=x*10-10 To x*10 Do

For j:=y*10-10 To y*10 Do

putpixel(i, j,c);

End;

Procedure l(x, y,x1,y1,c:integer);

Var i, j:integer;

Begin

For i:=x To x1 Do

For j:=y To y1 Do

pp(i, j,c);

End;

Begin

Clrscr;

Writeln(‘введите № цвета фона’);

Readln(c1);

Writeln(‘введите № цвета рисунка’);

Readln(c2);

Gr:=0;

Gm:=0;

Initgraph(gr, gm,’d:_userssashaturbop~1bgi’);

Setbkcolor(c1);

Pp(10,15,c2);

Pp(11,14,c2);

L(12,13,23,13,c2);

L(14,12,19,12,c2);

L(14,11,25,11,c2);

L(15,10,19,10,c2);

Pp(24,14,c2);

For i:=1 To 6 Do

pp(i*2+10,15,c2);

For i:=1 To 7 Do

Pp(i*2+10-1,16,c2);

Pp(12,17,c2);

Pp(22,17,c2);

For i:=1 To 5 Do

pp(i*2+10+1,18,c2);

T:= readkey;

Repeat

delay(100);

pp(26+i,11,c1);

pp(26+1+i,11,c2);

i:=i+1; While keypressed Do

t:=readkey ;

Until t<>’ ‘;

T:=’q’;

Pp(26+i,11,c1);

Randomize;

For j:=1 To 100 Do Begin

Putpixel(260+i*10+random(40)-20,110+random(40)-20,random(16)); delay(10);

End;

Readln;

Closegraph;

End.

Результат: