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

Цитата
Дан текстовый файл. Считая, что количество букв в одном слове не превосходит 20, определить, сколько в файле имеется слов, состоящих из одного, двух, трех и т.д. символов. Результат вывести в другой текстовый файл.


помогите пожалуйста нечего не получается смог смастерить программу для подсчета слов в фаиле и больше нечего паскаль идет всего неделю и нужно срочно сдать задачу

Заранее спасибо
Айра
Ну по сути большую часть ты сделал)) только интересно, по какому алгоритму)

А так, есть такие мысли:
описываем массив из 20 элементов, номер элемента соответствует количеству букв в слове, заполняем его сначала нулями.. Затем просматриваем файл, считываем символы и загоняем их в строку s:=s+ch, пока очередной не будет пробелом (или какие там еще могут быть символы разделители), собрали слово, посчитали его длину через length(s), и увеличили значение соответствующего элемента массива.. Очистили строку s:='', и пошли выделять слова дальше..
Как-то так)
Vigame
в общем от что у меня получилась но дальше не могу уже 8 часов мучаюсь

Код
Uses crt;
  var
        MyFile: Text;
        i,n: integer;
        s: String;
        x,y,yItog: integer;
  begin
         clrscr;
         x:=0;
         y:=0;
         Assign(MyFile,'Text1.txt');
         ReSet(MyFile);
   while not EOF(myFile) do begin
         ReadLn(MyFile,s);
         n:= Length(s);
         for i:=1 to n do begin
         if s[i]=' ' then x:=x+1;
   end;
         y:=x+1;
         x:=0;
         yItog:=yItog+y;
   end;
         Close(MyFile);
         Assign(MyFile,'Text2.txt');
         ReWrite(MyFile);
         Write(MyFile,yItog);
         Close(MyFile);
         end.
Lapp
Цитата(Айра @ 16.12.2008 3:22) *
... и загоняем их в строку
... Очистили строку ...
Зачем вообще тут строка? Сохранять символы - лишняя работа, и место лишнее нужно smile.gif

Скорее, как-то так:
const
Letters=['A'..'Z','a'..'z'];

var
f: file of char;
a: array[1..20]of integer;
i: integer;
c: char;

begin
Assign(f,'text1.txt');
ReSet(f);
i:=0;
while not EoF(f) do begin
Read(f,c);
if c in Letters then Inc(i) else if i>0 then begin
Inc(a[i]);
i:=0
end
end;
Close(f);
if c in Letters then Inc(a[i]);
for i:=1 to 20 do WriteLn(i,':',a[i]:10)
end.
Vigame
спасибо работает но нужно сделать сохранение в другой фаил....


делал вот так

         Assign(f,'Text2.txt');
ReWrite(f);
Write(f,i,':',a[i]:10);
Close(f);


но что-то не получается помогите пожалуйста

за всех нужно форматировать...
Lapp
Если ты делаешь форматированный вывод, то файл должен быть типа text Заведи еще один файл:
g: text;

- и выводи в него.
Vigame
вот сделал

Код
  for i:=1 to 20 do begin
   WriteLn(i,':',a[i]:10);
   Assign(g,'text2.txt');
   Append(g);
   Write(g,i, ' - ',a[i]);
   Close(g);
   end;


а как сделать чтобы в тексте выводилось с новой страки
у меня вот что получилось
Код
01 - 12 - 43 - 84 - 135 - 16 - 77 - 08 - 09 - 310 - 011 - 012 - 013 - 014 - 015 - 016 - 017 - 018 - 019 - 020 - 0


а мне надо
Код
01 - 12
02 - 43
03 - 84
04 - 135
.....


можно такое сделать???

Добавлено через 7 мин.
ура все сделал вначале ступил)))))
вот код если кому интересно
Код
const
  Letters=['A'..'Z','a'..'z'];

var
  f: file of char;
  g: text;
  a: array[1..20]of integer;
  i: integer;
  c: char;

begin
  Assign(f,'text1.txt');
  ReSet(f);
  i:=0;
  while not EoF(f) do begin
    Read(f,c);
    if c in Letters then Inc(i) else if i>0 then begin
      Inc(a[i]);
      i:=0
    end
  end;
  Close(f);
  if c in Letters then Inc(a[i]);
  Assign(g,'text2.txt');
   Append(g);
  for i:=1 to 20 do begin
   WriteLn(i,':',a[i]:10);
   Writeln(g,i, ' - ',a[i]:10);
   end;
    Close(g);
end.


Lapp спасибо тебе огромное если хочешь за помощь магу рублеф 50 кинуть на вебмани токо вечером smile.gif
Lapp
Цитата(Vigame @ 16.12.2008 13:15) *
магу рублеф 50 кинуть на вебмани токо вечером smile.gif
Ну нет, браток, извиняй.. smile.gif Если хочешь платить - иди в раздел На Заказ.
Но спасибо, я понимаю, что это от чистого сердца smile.gif

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