Статистика за файл

Да се напише програма, която прочита файл и отпечатва колко реда и колко символа се съдържат във файла.

По желание: Да се отпечата още:

  1. колко символа съдържа най-дългия ред
  2. има ли празни редове във файла и колко
  3. дали във този файл има записани email-и (за улеснение – да се разпознават само по знака @)
  4. други статистики – по желание на автора на програмата
Публикувано в 10в с етикети . Постоянна връзка.

2 Responses to Статистика за файл

  1. kaloyan каза:
    VAR
      F:text;
      a:array[1..100] of string;
      i,j,k,nai_dalag_red,prazen_red,simvoli:integer;
      email:boolean;
    BEGIN
      assign(F,'File.txt');
        reset(F);
        i:=1;
    //Записваме файла в масив
          while not EOF(F) do begin
            readln(F,a[i]);
            inc(i);
          end;
      close(F);
    //Проверяваме кой ред е най-дълъг
    nai_dalag_red:=0;
    for j:=1 to i do
      if length(a[j])>nai_dalag_red then nai_dalag_red:=length(a[j]);
    
    //Проверяваме дали има записани E-mail-и
    email:=false;
    for j:=1 to i do
      for k:=1 to length(a[j]) do
        if (a[j])[k]='@' then email:=true;
    
    //Проверяваме за празни редове
    prazen_red:=0;
    for j:=1 to i-1 do
      if length(a[j])=0 then inc(prazen_red);
    
    //Проверяваме колко символи съдържа файла
    simvoli:=0;
    for j:=1 to i do
      simvoli:=simvoli+length(a[j]);
    
    //Отпечатваме статистиката
    Writeln('Broi redove: ',i-1);
    Writeln('Broi simvoli: ',simvoli);
    Writeln('Broi na simvolite na nai-dalgiq red: ',nai_dalag_red);
    if prazen_red>0 then
      writeln('Broi prazni redove: ',prazen_red)
        else
      writeln('Nqma prazni redove');
    if email then writeln('Ima zapisani e-mail-i')
      else
    writeln('Nqma zapisani e-mail-i');
    
    readln;
    
    END.
    • Данаил каза:

      Браво, много добре! Всички тези действия може да бъдат обединени в един цикъл, за да е по-ефективна програмата, но от друга страна така както си я направил е по-прегледно и ясно, така че за учебна програма е добре. Проверката дали даден ред съдържа символ може да се направи с функцията Pos, но и така е правилно. Поне използвай команда break, така че като открие знака @ в реда, да не продължава нататък. Проверката за празен ред може да става и с a[j]=“, но и така е напълно коректно.

Вашият коментар