
Нужно написать программу...Задание:Адрес, запрашиваемый пользователем, обычно состоит из четырех
частей, из которых первые три являются доменными именами различного уровня и разделены точками, а последняя отделена от них двоеточием и является портом, к которому обращается пользователь. Например, при обращении пользователя к www.ifmo.ru:8080 слово ru является доменным именем первого уровня, слово ifmo — доменным именем второго уровня, слово www — доменным именем третьего уровня, а 8080 является портом.Вам необходимо по списку запросов пользователей в таком формате перечислить все различные порты, к которым обращались пользователи.Формат входного файлаВ первой строке входного файла input.txt находится одно натуральное число n (1 ≤ n ≤ 100) — количество адресов в данном вам списке. В следующих n строках содержатся сами адреса в формате, описанном выше.Все доменные имена всех уровней состоят только из строчных букв латинского алфавита, а порты — только из цифр. Длина любого данного вам адреса не превышает 250 символов.Формат выходного файлаВ первой строке выходного файла output.txt выведите одно целое число k — количество различных портов, к которым обращались пользователи. В следующих k строках выведите сами порты. Каждый порт должен быть выведен ровно один раз в отдельной строке. Порты могут быть выведены в любом порядке.Пример входных и выходных данныхinput.txt3 www.ifmo.pl:3389 www.ya.pl:65535 www.ifmo.kz:3389output.txt2 65535 3389

Ответы на вопрос

Задачка из олимпиады) Простенькая вроде программулька
var
n,i,k,j,f:integer;
m:array [1..100] of string;
p:array[1..100] of string;
sl,por:string;
b:boolean;
f1,f2:text;
begin
assign(f1, 'input.txt');
reset(f1);
readln(f1,n);
for i:=1 to n do
readln(f1,m[i]);
close (f1);
k:=0;
for i:=1 to n do begin
por:='';
b:=false;
sl:=m[i];
for j:=1 to length(sl) do begin
if (Ord(sl[j])>=48) and (Ord(sl[j])<=57) then
por:=por+sl[j];
end;
for f:=1 to k do begin
if por=p[f] then
b:=true;
end;
if b=false then begin
k:=k+1;
p[k]:=por;
end;
end;
assign(f2, 'output.txt');
rewrite(f2);
writeln (f2,k);
for i:=1 to k do
writeln (f2,p[i]);
close (f2);
end.



PROGRAM_PORT;
VAR
n,c,i:integer;
s,s1:string;
a:array [1..1000] of string;
b:boolean;
BEGIN
Assign(input,'input.txt'); reset(input);
Assign(output,'output.txt'); rewrite(output);
READLN(input,n);
b:=true;
c:=0;
WHILE n<>0 do
BEGIN
Readln(input,s);
WHILE s[1]<>'.' do delete(s,1,1);
delete(s,1,1);
s1:=Copy(s,1,pos('.',s)-1);
FOR i:=1 to c do
IF a[i]=s1 then begin
b:=false;
break;
end;
IF b then begin
inc(c);
a[c]:=s1;
End;
b:=true;
dec(n);
End;
WRITELN(output,c);
FOR i:=1 to c do writeln(output,a[i]);
Close(input);
Close(output);
END.


Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili