Задание № 1 «Обработка символьных данных»
1.Выполнить на ЭВМ программу обработки символьных данных в соответствии с вариантом, указанным в таблице. Предусмотреть ввод исходных данных как с клавиатуры, так и из файла.
2.Проверить правильность выполнения программы с помощью тестового варианта.
1 часть. Обработка текста.
Вопрос:Задан список городов. Поменять местами названия любых двух городов, заканчивающихся буквой "а".
PHP код:
uses crt;
const sp:array[1..10]of string=('Москва','Орел','Глазов','Коломна','Ванино',
'Калуга','Серов','Ростов','Орша','Клин');
var i,j:integer;
x:string;
begin
clrscr;
writeln('Ishodnyj spisok:');
for i:=1 to 10 do
writeln(sp[i]);
writeln;
writeln('Izmenennyj spisok:');
for i:=1 to 10 do
begin
for j:=1 to 10 do
if (sp[i][length(sp[i])]='а')and(sp[j][length(sp[j])]='а')and(i<>j) then
begin
x:=sp[i];
sp[i]:=sp[j];
sp[j]:=x;
break;
end;
break;
end;
for i:=1 to 10 do
writeln(sp[i]);
readln
end.
II часть. Работа с файлами.
Дана последовательность, содержащая от 2 до 10 слов, в каждом из которых от 2 до 6 латинских букв; между соседними словами - не менее одного пробела, за последним словом точка. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу:
удалить из слова все последующие вхождения первой буквы;
PHP код:
uses crt;
var
s, lastword, currword: string;
i, j, k, p: integer;
begin
write('s: ');readln(s);
repeat
p := pos(' ', s);
if p > 0 then delete(s, p, 1);
until p = 0;
p := length(s) - 1;
while s[p] <> ' ' do dec(p);
lastword := copy(s, p + 1, length(s) - p - 1);
i := 1;
while i < p do begin
k := i;
while(i < p) and (s[i] <> ' ') do inc(i);
currword := copy(s, k, i-k);
if currword <> lastword then
begin
for j := length(currword) downto 2 do
if currword[j] = currword[1] then delete(currword, j, 1);
writeln(currword);
end;
inc(i);
end;
readln
end.
Задание № 2 «Обработка графических данных»
1 часть.
Напишите процедуру рисования графика функции в соответствии с вариантом, указанным в таблице. Предусмотреть вывод оцифрованных координатных осей соответственно области построения, подписей к графику. Рационально расположить элементы рисунка (график, оси, цифры и штрихи масштабирования, подписи) на экране.
y=SQR(Sin(x))
PHP код:
Uses Graph, CRT;
VAR
i,j:INTEGER;
S:String;
x,y:Real;
BEGIN
InitGraph (i,j,'');
Line(40,420,640,420);
Line(40,420,40,20);
SetTextStyle(DefaultFont,HorizDir,1);
SetTextJustify(CenterText,TopText);
OutTextXY(40,430,'0');
FOR i:=1 TO 5 DO
begin
Line(40+i*100,420,40+i*100,410);
Str(i/2:3:1,S);
OutTextXY(40+i*100,430,S+'*Pi');
end;
SetTextJustify(RightText,CenterText);
FOR i:=0 TO 10 DO
begin
Line(40,420-i*40,50,420-i*40);
Str(0.1*i:3:1,S);
OutTextXY(35,420-i*40,S);
end;
SetLineStyle(SolidLn,0,ThickWidth);
MoveTo(40,420);
x:=0;
For i:=1 to 600 do
begin
x:=x+Pi/200;
y:=SQR(Sin(x));
LineTo(40+Round(x*200/Pi),Round(420-y*400));
end;
ReadKey;
CloseGraph;
END.
II часть
Напишите программу для отображения движения многоугольника (плоской фигуры) по экрану по принципу «угол падения равен углу отражения», поверхностями считать границы экрана. Предусмотреть изменение цвета многоугольника (плоской фигуры) при смене направления движения.
Придумать оригинальную плоскую фигуру.
PHP код:
uses graph,crt;
var x,y,x0,y0,d,r,dx,dy,i:integer;
begin
x:=0;
initgraph(x,y,'');
x0:=getmaxX div 2;
y0:=getmaxY div 2;
outtextXY (x0-80,20,'Vyhod - press and key...');
d:=200;
r:=100;
rectangle (x0-d,y0-d,x0+d,y0+d);
x:=x0;
y:=y0-d+r+1;
dx:=-1;
dy:=1;
i:=10;
repeat
setcolor(i);
circle(x,y,r);
setfillstyle(1,i);
fillellipse(x,y,r,r);
delay(10);
setcolor(0);
circle(x,y,r);
setfillstyle(1,0);
fillellipse(x,y,r,r);
x:=x+dx;
y:=y+dy;
if x=x0-d+r+2 then
begin
dx:=1;
i:=i+1;
if i=16 then i:=1;
end
else if y=y0+d-r-2 then
begin
dy:=-1;
i:=i+1;
if i=16 then i:=1;
end
else if x=x0+d-r-2 then
begin
dx:=-1;
i:=i+1;
if i=16 then i:=1;
end
else if y=y0-d+r+2 then
begin
dy:=1;
i:=i+1;
if i=16 then i:=1;
end
until keypressed;
end.
Правильно ли составлены программы?