Глава 17.Задача №6.Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл) с помощью процедуры
Primary tabs
Решите предыдущую задачу:
Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл): Вася 485 Коля 555 Юра 61 .......... .... end // признак завершения ввода (пока не введёт строку end) -- где слева указаны имена участников, а справа -- число баллов. Используя массив строк и массив целых чисел (пусть оба массива будут максимальной длины =3) считайте отдельно имена и баллы и определите победителя, выведя его имя и полученный им балл.С использованием процедуры, которая разбирала бы очередную строку, изменяя по ссылке значения двух перемененных (одна для имени и одна для балла), уже после вызова этой процедуры для очередной строки записывайте очередные значения переменных в массивы (каждую в свой).
program pascal_17_5;
type a = array[1..3] of integer; // секция обьявления типов
b = array[1..3] of string;
{ процедура изменения двух переменных, с именем и баллами по ссылке }
procedure filling_arrays( s : string; var ball_int: integer; var name_string : string );
var i, num, code : integer;
ball_string : string;
begin // начало тела процедуры
num := 0;
for i := 1 to length( s ) do // обходим строку
begin
if( s[i] <> ' ' ) and ( num = 0 ) then // если условие верно
name_string += s[i] // в пустую строку добавляем элемент
else
begin
if( s[i] = ' ' ) then // если равна пустой строке
begin
num := 1; // делаем первый if невыполнимым
continue; // пропускаем если символ пустая строка
end;
if ( s[i] >= '0' ) and ( s[i] <= '9' ) then
ball_string += s[i]; // добавляем в другую пустую строку символы
end;
end;
Val( ball_string , ball_int ,code ); // преобразуем в число
end; // завершение тела процедуры
{ процедура вывода строки результата }
procedure print_result( ind_arr, max_value : integer;str_name_arr : b );
begin // начало тела процедуры
writeln( str_name_arr[ ind_arr ], ' max completed ', max_value );
end; // завершение тела процедуры
{ процедура вывода результата }
procedure conclusion( arr_ball : a; arr_str_name : b );
var i, max, index : integer;
begin // начало тела процедуры
max := 0;
index := 0;
for i := 1 to high( arr_ball ) do // обходим integer массив
begin
if( arr_ball[i] > max ) then // если значение массива больше max
begin
max := arr_ball[i]; // присваиваем max значение массива
index := i; // считаем индекс string массива
end;
end;
print_result( index, max, arr_str_name ); // вызов процедуры
end; // завершение тела процедуры
var name, str : string; // секция обьявления переменных
i, j, count, ball: integer;
arr_int_ball : a;
arr_str_name : b;
begin // начало тела основной программы
str := '';
while( str <> 'end' ) do
begin
name := '';
ball := 0;
writeln('input name and ball: ' );
readln( str );
if( str <> 'end' ) then
begin
filling_arrays( str, ball, name ); // вызов процедуры
j += 1; // увеличиваем индекс массива с баллами
arr_int_ball[j] := ball;
i += 1; // увеличиваем индекс массива с именами
arr_str_name[i] := name;
end;
end;
conclusion( arr_int_ball , arr_str_name ); // вызов процедуры
end.// завершение программы- Log in to post comments
- 1815 reads