помогите пожалуйста нечего не получается смог смастерить программу для подсчета слов в фаиле и больше нечего паскаль идет всего неделю и нужно срочно сдать задачу
Заранее спасибо
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
задача "файлы" помогите решить, задали задачку уже 8 часов голову ломаю(((( |
Vigame |
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: 0 |
вот задача
Цитата Дан текстовый файл. Считая, что количество букв в одном слове не превосходит 20, определить, сколько в файле имеется слов, состоящих из одного, двух, трех и т.д. символов. Результат вывести в другой текстовый файл. помогите пожалуйста нечего не получается смог смастерить программу для подсчета слов в фаиле и больше нечего паскаль идет всего неделю и нужно срочно сдать задачу Заранее спасибо |
Айра |
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
Ну по сути большую часть ты сделал)) только интересно, по какому алгоритму)
А так, есть такие мысли: описываем массив из 20 элементов, номер элемента соответствует количеству букв в слове, заполняем его сначала нулями.. Затем просматриваем файл, считываем символы и загоняем их в строку s:=s+ch, пока очередной не будет пробелом (или какие там еще могут быть символы разделители), собрали слово, посчитали его длину через length(s), и увеличили значение соответствующего элемента массива.. Очистили строку s:='', и пошли выделять слова дальше.. Как-то так) |
Vigame |
Сообщение
#3
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: 0 |
в общем от что у меня получилась но дальше не могу уже 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 |
Сообщение
#4
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
... и загоняем их в строку Зачем вообще тут строка? Сохранять символы - лишняя работа, и место лишнее нужно ... Очистили строку ... Скорее, как-то так: const -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Vigame |
Сообщение
#5
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: 0 |
спасибо работает но нужно сделать сохранение в другой фаил....
делал вот так Assign(f,'Text2.txt'); но что-то не получается помогите пожалуйста за всех нужно форматировать... Сообщение отредактировано: Lapp - |
Lapp |
Сообщение
#6
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Если ты делаешь форматированный вывод, то файл должен быть типа text Заведи еще один файл:
g: text; - и выводи в него. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Vigame |
Сообщение
#7
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: 0 |
вот сделал
Код 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 кинуть на вебмани токо вечером |
Lapp |
Сообщение
#8
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
магу рублеф 50 кинуть на вебмани токо вечером Ну нет, браток, извиняй.. Если хочешь платить - иди в раздел На Заказ. Но спасибо, я понимаю, что это от чистого сердца В то же время надеюсь, что была польза не только сдаче задания, но и твоим знаниям -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Vigame |
Сообщение
#9
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: 0 |
да я уже все понял как делать огромное пасибо!!!!
|
Текстовая версия | 29.04.2024 18:33 |