Глава 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
- 1405 reads