Нужно написать программу... Задание:   Адрес, запрашиваемый пользователем, обычно состоит из четырех частей, из которых первые три являются доменными именами различного уровня и разделены точками, а последняя отделена от них дв...

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