Задача 7 Урок 18
Primary tabs
Задача 7 Урок 18Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл).
(пока не введёт строку end) -- где слева указаны имена участников, а справа -- число баллов.
Используя массив строк и массив целых чисел (пусть оба массива будут максимальной длины =3) считайте отдельно имена и баллы и определите победителя, выведя его имя и полученный им балл.
var
intChislo, Code : Integer; // подпрограмма val для преобразования
s,s1,s2 : string; // для ввода строки
n: string; // для первичного хранения имени
n1: string; // для первичного хранения числа
a: array [1..300] of string; // неотредактированная запись имени в массив
a1: array [1..300] of string; // массив для записи отредактированных имён
a11: array [1..300] of string; // массив для хранения первичных строковых чисел
a12: array [1..300] of Integer; // массив для хранения преобразованных из строк в числа
j,j1,j2,i,q:integer; // счётчики
begin
writeln('Enter');
repeat
readln(s);
if s='end' then break;
s1:=s1+s;
s2:=s1;
until s='end';
n:='';
for i:=1 to length(s1) do
begin
val(s1[i], intChislo, code);
if (code<>0) then // если буква
n:=n+s1[i] // запись в переменную
else // если цифра
begin
j+=1; // +1 к счётчику
a[j]:=n; // запись в массив
n:=''; // обнуление переменной(возвращение к FOR)
end;
end;
for i:=1 to j do
begin
val(a[i], intChislo, code); // в val для удаления пустых значений
if (code<>0) and (a[i]<>'') and (a[i]<>' ') then // если буква и не пусто
begin
j2+=1; // +1 к счётчику
a1[j2]:= a[i]; // запись в массив
end;
end;
for i := 1 to length(s2) do
if (s2[i] >= '0') and (s2[i] <= '9') then // если цифра
begin
n1:= n1+s2[i]; // запись в переменную
if not ((s2[i+1] >= '0') and (s2[i+1] <= '9')) and (n1 <> '') then // если не цифра и переменная не пуста
begin
j1 += 1; // + к счётчику
a11[j1] := n1; // запись в массив
n1 := ''; // обнуление переменной
end;
end;
writeln();
for i := 1 to j1 do
begin
val(a11[i],intChislo, Code); // в подпролг для прербразования в число
q+=1; // + к счётчику
a12[q]:=intChislo; // запись в массив
end;
for i := 1 to q do
writeln(a1[i],a12[i]); // вывод имени и балла
writeln();
if (a12[1]>a12[2]) and (a12[1]>a12[3]) then
writeln ('pobeditel',' ', a1[1],a12[1]);
if (a12[2]>a12[1]) and (a12[2]>a12[3]) then // Ищем победителя
writeln ('pobeditel',' ', a1[2],a12[2]);
if (a12[3]>a12[1]) and (a12[3]>a12[2]) then
writeln ('pobeditel',' ', a1[3],a12[3]);
readln();
end.
Вывод консоли:
Enter Vovan 55 Ilia 77 Pasha 99 end Vovan 55 Ilia 77 Pasha 99 pobeditel Pasha 99
- Log in to post comments
- 566 reads