Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 13:27   #1
newcome
Новичок
Джуниор
 
Регистрация: 29.11.2012
Сообщений: 2
По умолчанию Тестовые файлы(Паскаль)

Здравствуйте,помогите пожалуйста доработать программу.
Задание следующее:
В исходном текстовом файле записаны строки, содержащие текст на английском языке. Требуется написать программу, которая будет проводить частотный анализ текста и последовательно выводить в результирующий файл только букву и через пробел символ * в количестве, равном количеству повторений этой буквы в тексте (в каждой строке результирующего файла информация об одной букве, другие символы не учитываются). Сведения о буквах, которые в тексте отсутствуют, на экран выводиться не должны. Сами буквы должны выводиться в алфавитном порядке.
Например, для текста:
It is science
в результирующем файле должно быть:
C **
E **
I ***
N *
S**
T *

сам код:


Код:
   program lab7;
type     mas=array['a'..'z'] of integer;
procedure alg(s:string;var a:mas);
      var i:byte;c:char;
      begin
      for c:='a' to 'z' do a[c]:=0;
      for i:=1 to length(s) do
          begin
          if s[i] in ['a'..'z'] then a[s[i]]:=a[s[i]]+1;
          end;
      end;
Procedure FiletoFile(var f1,f2:text);
    var s:string;var a:mas;c:char;k:integer;
    begin
    reset(f1);
    rewrite(f2);
    while not eof(f1) do
       begin
       readln(f1,s);
       if s<>'' then
          begin
          alg(s,a);
          for c:='a' to 'z' do
             if a[c]>0 then begin
          write(f2,c,' ');
          for k:=1 to a[c] do write(f2,'*');
          writeln
          end
          else writeln(f2,#13);
     end;
  end;
end;
var f1,f2:text; fname1,fname2: string;
begin

writeln('Введите имя исходного файла');
     readln(fname1);
     if FileExists(fname1) then
        begin
        writeln('Введите имя результирующего файла');
        readln(fname2);
        assign(f1,fname1);
        assign(f2,fname2);
        FileToFile(f1,f2);
        close(f1);
        close(f2);
        end
     else writeln('файл не существует');
end.
проблема в том,что у меня для каждой строки выводит одинаковые буквы
Например я написал:
aaaaa
aaaaaaaa
У меня выводит:
a *****
a ********
На самом деле мне нужно чтобы выводило(складывало буквы со всех строк) и было вот так:
a *************
newcome вне форума Ответить с цитированием
Старый 30.11.2012, 09:44   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

уберите обнуление массива из процедуры alg.
Цитата:
Код:
procedure alg(s:string;var a:mas);
      var i:byte;c:char;
begin
    for c:='a' to 'z' do a[c]:=0;
      for i:=1 to length(s) do
....
вот, так попробуйте:
Код:
procedure alg(s: string; var a: mas);
var i: byte;
begin
  for i := 1 to length(s) do
  begin
    if s[i] in ['a'..'z'] then a[s[i]] := a[s[i]] + 1;
  end;
end;

procedure FiletoFile(var f1, f2: text);
var s: string; var a: mas; c: char; k: integer;
begin
  reset(f1);
  rewrite(f2);

    //обнулим массив
  for c := 'a' to 'z' do a[c] := 0;

  while not eof(f1) do
  begin
    readln(f1, s);
    alg(s, a);
  end;

  // сохраним результаты массива подсчёта в выходной файл
  for c := 'a' to 'z' do
    if a[c] > 0 then begin
      write(f2, c, ' ');
      for k := 1 to a[c] do write(f2, '*');
      writeln(f2, #13);
    end;
end;

p.s. Если пользуйтесь всякими извращениями в виде PascalABC - то обязательно это указывайте!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тестовые задания при приеме на работу atenon Свободное общение 9 24.07.2012 14:00
Тестовые файлы! Марат05 Помощь студентам 2 11.12.2010 21:06
Тестовые задания при приеме на работу crazy horse Свободное общение 3 02.07.2010 21:32
Тестовые Файлы Ranger Помощь студентам 8 22.12.2008 14:56
Яндексоиды ищют программиста, оцените тестовые вопросы... Alar Свободное общение 1 10.06.2007 02:04