Задача 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
- 241 reads