Форум » Обработка числовых последовательностей » 27 задание » Ответить

27 задание

greycat9515: Разбираю 27 задания с вашего сайта. Решил этот пример: [more]8) На вход программе подаются сведения о телефонах всех сотрудников некоторого учреждения. В первой строке сообщается количество сотрудников N, каждая из следующих N строк имеет следующий формат: <Фамилия> <Инициалы> <телефон> где <Фамилия> – строка, состоящая не более чем из 20 символов, <Инициалы> - строка, состоящая не более чем из 4-х символов (буква, точка, буква, точка), <телефон> – семизначный номер, 3-я и 4, я, а также 5-я и 6-я цифры которого разделены символом «–». <Фамилия> и <Инициалы>, а также <Инициалы> и <телефон> разделены одним пробелом. Пример входной строки: Иванов П.С. 555-66-77 Сотрудники одного подразделения имеют один и тот же номер телефона. Номера телефонов в учреждении отличаются только двумя последними цифрами. Требуется написать как можно более эффективную программу, которая будет выводить на экран информацию, сколько в среднем сотрудников работает в одном подразделении данного учреждения. [/more] вот написанная мной программа:[more]var info: array[1..100] of integer; n, i, count: integer; s: string; begin count := 0; readln(n); for i := 1 to 100 do info := 0; for i := 1 to n do begin readln(s); inc(info[strToInt(copy(s, length(s) - 1, 2))]); end; for i := 1 to 100 do if info > 0 then inc(count); writeln(n / count) end.[/more] а вот решение с ответов:[more]var podr: array[1..100] of integer; i, k, p, count, N: integer; c: char; exist: boolean; av: real; begin readln(N); { ввод исходных данных } count := 0; for i:=1 to N do begin for k:=1 to 2 do repeat read(c); until c = '-'; readln(p); exist := False; for k:= 1 to count do if podr[k] = p then begin exist := True; break; end; if not exist then begin count := count + 1; podr[count] := p; end; end; { вывод результата } av := N / count; writeln(av:0:2); end. [/more] верно ли мое решение?и какой вариант эффективней?

Ответов - 2

Поляков: greycat9515 пишет: верно ли мое решение?и какой вариант эффективней? Ваше решение не работает, если в конце строк есть пробелы.

greycat9515: По условию задачи входная строка имеет вид <Фамилия> <Инициалы> <телефон>, могут ли за мое решение снизить баллы?



полная версия страницы