• Нужно написать программу...

    Задание:

     

    Адрес, запрашиваемый пользователем, обычно состоит из четырех частей, из которых первые три являются доменными именами различного уровня и разделены точками, а последняя отделена от них двоеточием и является портом, к которому обращается пользователь. Например, при обращении пользователя к 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

Ответы 2

  • 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 doIF 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.

    • Автор:

      key
    • 6 лет назад
    • 0
  • Задачка из олимпиады) Простенькая вроде программулька

    varn,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;beginassign(f1, 'input.txt');reset(f1);readln(f1,n);for i:=1 to n doreadln(f1,m[i]);close (f1);

    k:=0;for i:=1 to n do beginpor:='';b:=false;sl:=m[i];for j:=1 to length(sl) do beginif (Ord(sl[j])>=48) and (Ord(sl[j])<=57) thenpor:=por+sl[j];end;for f:=1 to k do beginif por=p[f] thenb:=true;end;if b=false then begink:=k+1;p[k]:=por;end;end;assign(f2, 'output.txt');rewrite(f2);writeln (f2,k);for i:=1 to k dowriteln (f2,p[i]);close (f2);end.

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years