Работы учащихся Решение сложных задач по программированию | Page 3
© Иванов Дмитрий, МБОУ «Лицей № 2», г. Нижневартовск
Задача № 2
На вход программы подаются фамилии и имена учеников. Известно, что общее количество учеников
не превосходит 100. В первой строке вводится количество учеников, принимавших участие в
соревнованиях, N. Далее следуют N строк, имеющих следующий формат:
<Фамилия> <Имя>
Здесь <Фамилия> – строка, состоящая не более чем из 20 символов; <Имя> – строка, состоящая не
более чем из 15 символов. При этом <Фамилия> и <Имя> разделены одним пробелом. Примеры
входных строк:
Иванова Мария
Петров Сергей
Требуется написать программу, которая формирует и печатает уникальный логин для каждого
ученика по следующему правилу: если фамилия встречается первый раз, то логин – это данная
фамилия, если фамилия встречается второй раз, то логин – это фамилия, в конец которой
приписывается число 2 и т.д. Например, для входной последовательности
Иванова Мария
Петров Сергей
Бойцова Екатерина
Петров Иван
Иванова Наташа
будут сформированы следующие логины:
Иванова
Петров
Бойцова
Петров2
Иванова2
Решение:
program login;
var N,k,i,l:integer;
a:array[1..100] of string;
z:string;
begin
readln(N);
for i:=1 to N do begin
readln(z); k:=Pos(' ',z);
delete(z,k,length(z)-k+1); a[i]:=z;
end;
k:=1;
while k<>0 do begin
k:=0; z:=' ';
for i:=1 to N do
if length(a[i]) >2 then z:=a[i];
for i:=1 to N do if a[i]=z then begin
k:=k+1; a[i]:='a';
end;
if k<>0 then writeln(z);
if k>1 then
for i:=2 to k do writeln(z,i);
end;
end.
май, 2015 г.