Var ar:array[1..n] of re; i,j,c:integer; cs:string; begin; for i:=1 to n do begin write('Введите имя участника №',i,':'); readln(ar[i].name); write('Введите результат участника №',i,':'); readln(ar[i].res); end; for i:=1 to n-1 do for j:=i to n do if ar[i].res>ar[j].res then begin; c:=ar[i].res; ar[i].res:=ar[j].res; ar[j].res:=c; cs:=ar[i].name; ar[i].name:=ar[j].name; ar[j].name:=cs; end;for i:=1 to n do writeln(i,' ',ar[i].name,' ',ar[i].res); end.
Пример ввода: Двачевская 23 Персунов 22 Хацуне 3 Пример вывода: 1 Хацуне 3 2 Персунов 22 3 Двачевская 23
{Вариант с поиском, Пока что просто решил игнорировать 0, раз он все равно в конце}
var s: string; i,j,k,l: integer; t,f: boolean; mi,mj: integer; x,y:array[boolean] of integer; begin mi := 1; mj := 0; readln(s); l := length(s); //- 1; {оканчивается на 0?} k := 1; f := true; while f and (k <= l) do begin f := s[k] <> '0'; if f then k := k + 1 end; x[false] := 1; y[false] := k - 1; x[true] := k + 1; y[true] := l;
for f := false to true do for i := x[f] to y[f] do begin j := y[f]; while j - i >= mj - mi do begin t := true; k := 0; while t and (k <= (j - i) div 2) do begin t := s[i + k] = s[j - k]; k := k + 1 end; if t then if j - i > mj - mi then begin mi := i; mj := j; end else if j - i = mj - mi then begin k := 0; t := true; while t and (k <= j - i) do begin t := s[i + k] = s[mi + k]; if t then k := k + 1 end; t := not t; if t then t := s[i + k] < s[mi + k]; if t then begin mi := i; mj := j; end end; j := j - 1 end end; for k := mi to mj do write(s[k]) end.
{Вариант с составлением}
var a: array['1'..'9'] of integer; i: integer; c: char; t: boolean; begin for c := '1' to '9' do a[c] := 0; repeat read(c); if (c >= '1') and (c <= '9') then a[c] := a[c] + 1; until c = '0'; for c := '1' to '9' do for i := 1 to a[c] div 2 do write(c); c := '1'; t := true; while t and (c <= '9') do begin if odd(a[c]) then begin write(c); t := false end; c := succ(c) end; for c := '9' downto '1' do for i := 1 to a[c] div 2 do write(c)
type
re=Record
name:string;
res:integer;
end;
Const
n=3;
Var
ar:array[1..n] of re;
i,j,c:integer;
cs:string;
begin;
for i:=1 to n do
begin
write('Введите имя участника №',i,':');
readln(ar[i].name);
write('Введите результат участника №',i,':');
readln(ar[i].res);
end;
for i:=1 to n-1 do
for j:=i to n do
if ar[i].res>ar[j].res then
begin;
c:=ar[i].res;
ar[i].res:=ar[j].res;
ar[j].res:=c;
cs:=ar[i].name;
ar[i].name:=ar[j].name;
ar[j].name:=cs;
end;for i:=1 to n do
writeln(i,' ',ar[i].name,' ',ar[i].res);
end.
Пример ввода:
Двачевская
23
Персунов
22
Хацуне
3
Пример вывода:
1 Хацуне 3
2 Персунов 22
3 Двачевская 23