Помощь - Поиск - Пользователи - Календарь
Полная версия: кол-во знаков в *.txt-файле
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Флогримм
почему не совпадает кол-во знаков, которое считает прога и кол-во знаков, которе, нарпимер, считает текстовый редактор?

Код

program count_symbils;
uses crt;

const chars = [#33..#159, #160..#175, #224..#239];

var i:byte;
   filename, filename1, str:string;
   mas:array[byte] of longint;
   fil, fil1:text;



Function FileExists(FileName : String) : Boolean;

{ Функция возвращает True, если файл существует, иначе
 возвращает False. Закрывает файл, если он существует. }

Var F : File;
Begin
{$I-}
Assign(F, FileName);
Reset(F);
Close(F);
{$I+}
FileExists := (IOResult = 0) And (FileName <> '');
End;  { FileExists }




begin
{
clrscr;
}
filename1:='symbols.txt';
assign(fil1, filename1); rewrite(fil1);


if paramcount=0 then
  begin
  writeln('В командной строке не указано ни одного параметра.');
  writeln('В качестве параметра введите имя файла, с которым бы вы хотели работать.');
  writeln('Нажмите любую клавишу.');
  readln; exit;
  end else
      begin
      filename:=paramstr(1);
      if fileexists(filename) then begin
      writeln(fil1, filename);
      writeln(fil1, '');

      writeln('Вы указали файл: ', filename);
      writeln('Нажмите любую клавишу.');
      readln;


      assign(fil, filename);
      reset(fil);
         while not EOF(fil) do begin

         readln(fil, str);
              for i:=1 to length(str) do
                  begin
                  {if str[i] in chars then}
                  inc(mas[ord(str[i])]);
                  end;
         str:='';
         end;
      close(fil);

      writeln('Таблица символов файла ', filename,': ');
      writeln('Символ Код Повторяемость');
      writeln;

      for i:=1 to high(mas) do begin
      if mas[i]>0 then

         begin
         writeln('''',chr(i),'''','   #',i:3,mas[i]:9);
         writeln(fil1,'''',chr(i),'''','   #',i:3,mas[i]:9);

         end;

      end;

      end else
          begin
          writeln('Такого файла не существует или вы указали неправильный путь.');
          writeln('Нажмите любую клавишу.'); readln; exit;
          end;

      writeln('Нажмите любую клавишу.'); readln; exit;
     
      end;
close(fil1);

end.
Altair
Цитата
почему не совпадает кол-во знаков, которое считает прога и кол-во знаков, которе, нарпимер, считает текстовый редактор?

Это зависит от того, что ты подсчитываешь... и что считает редактор.
Ты считаешь только символы? а редактор может считать симовлы, (кирилица, латиница), цифры и проч...
а можно вообще считать что все коды есть символы... только часть управляюще. ТОгда кол-во символов равно размеру файла в байтах.
volvo
Флогримм
Так а с чем сравнивать-то? Oleg_Z прав, ты не знаешь что считает редактор, а мы кроме всего прочего еще и результатов редактора не знаем...
sad.gif
sandman
В какую сторону, кстати отличается? Файл в какой кодировке?
Флогримм
берете простой ворд, копируете туда текст, который считала прожка, затем берете любой символ, делаете замену на другой а в конце замены ворд пишет, мол, произведено столько-то замен, а затем сравниваете результаты
volvo
Цитата(Флогримм @ 20.01.05 5:25)
берете простой ворд, копируете туда текст, который считала прожка, затем берете любой символ, делаете замену на другой а в конце замены ворд пишет, мол, произведено столько-то замен, а затем сравниваете результаты

... и получаем следующее:
Программа:
Цитата
' ' # 32    17
';' # 59        6
'a' # 97        8
'b' # 98        3
'c' # 99        1
'd' #100    15...


Потом запускаем Word - меняем 'd' на 'L' - "произведено 15 замен", меняеи 'a' на 'F' - произведено 8 замен... Как видишь, все совпадает... Можешь привести тот файл, для которого результаты не совпали? (Кстати, интересно, где ты его набирал?)
sandman
Туплю может, но с символами перевода строки и возврата каретки как?
Altair
а зачем их считать? это управляющие символы!
Флогримм
вот фтестируемый текст
Цитата
Будни кота
Нассал под кресло. Хорошо!
Скучно.
Вспомнил бурную молодость.
Сидел я как-то на столе, жрал лапой сгущёнку из банки.
Пришли Эти и давай орать. Ну я же не дурак, опустил
лапу в банку сколько влезла, и на трёх костях - за холодильник. Эти орали ещё
дня три. Был очень горд.
Сегодня всё лень. Ссать - лень. Жрать - не могу больше. Сижу тихо, дремлю.
Эти нервничают, озираются по сторонам, дрожат и ждут подвоха.
Какие ж у Этих миски неудобные. Пытался сожрать кусок мяуса, так пока
лапой не зацепил - ни хрена не получалось. Нет бы взять приличные миски и жрать на полу. Ур-р-роды.

вот фрагмент результатов
Цитата
...
'с' #241    21
'т' #242    27
'у' #243    20
'х' #245        7
'ц' #246        1
'ч' #247        5
'ш' #248        3
...

а в ворде получилось "у" - 21 штука, а с большими текстами так вообще...
Altair
Цитата
а в ворде получилось "у" - 21 штука, а с большими текстами так вообще...


а на самом деле сколько? (мне лень считать) smile.gif
Если ворд не правильно считает, то и нечего его в качестве образца выставлять smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.