Цитата:
Сообщение от nice5531
2. В заданном предложении найти самое короткое и самое длинное слова
|
Код:
uses crt;
const rz=[' ','.',',','?','!'];
var s,s1,s2,s3:string;
sk,sd:string;
k,d,i,ik,id,j,p:byte;
begin
clrscr;
writeln('Введите строку из слов, отделенных разделителями:');
readln(s);
i:=1;
d:=0;id:=1;{длина длинного слова и его начало в строке}
k:=255;ik:=1;{длина корткого слова и его начало в строке}
while i<=length(s) do
if not(s[i] in rz) then
begin
s1:='';{будем составлять слово}
j:=i;
p:=0;
while not(s[j] in rz)and(j<=length(s)) do
begin
s1:=s1+s[j];
j:=j+1;
p:=p+1;
end;
if length(s1)<k then{если меньше короткого}
begin
sk:=s1;{это короткое}
k:=length(s1);{его длина}
ik:=i;{начало в строке}
end;
if length(s1)>d then{то же с длинным}
begin
sd:=s1;
d:=length(s1);
id:=i;
end;
i:=i+p;
end
else i:=i+1;
writeln('Самое короткое слово ',sk);
writeln('Самое длинное слово ',sd);
if ik<id then{если короткое раньше}
begin
insert(sk,s,id);{вставляем короткое перед длинным}
delete(s,id+k,d);{удаляем длинное}
insert(sd,s,ik);{вставляем длинное на старое место короткого}
delete(s,ik+d,k);{удаляем короткое}
end
else{если длинное раньше, то все наоборот}
begin
insert(sd,s,ik);
delete(s,ik+d,k);
insert(sk,s,id);
delete(s,id+k,d);
end;
write(s);
readln
end.
Цитата:
Сообщение от nice5531
4. Составьте программу меняющую местами элементы матрицы симметрично побочной диагонали
|
Код:
program matrix;
uses crt;
var n: BYTE;
A: array[0..10, 0..10] of Integer;
i, j: BYTE;
num: Integer;
begin
clrscr;
writeln('Vvedite n');
read(n);
writeln('vvedite matricy');
for i:= 0 to n-1 do begin
for j:= 0 to n-1 do begin
gotoxy((j+1)*5, 5+i);
read(A[i, j]);
end;
end;
for i:= 0 to n-1 do
for j:= 0 to n-1 do
if (j < n-i) then begin
num:= A[i, j];
A[i, j]:= A[n-j-1, n-i-1];
A[n-j-1, n-i-1]:= num;
end;
for i:= 0 to n-1 do begin
for j:= 0 to n-1 do begin
gotoxy((j+1)*5, 7+i+n);
write(A[i, j]);
end;
end;
readkey;
end.