IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача на текст, Найти количество одинаковых слов в файле
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +


Дан текстовой файл, знаки препинания отсутствуют, слова разделены пробелами.

Необходимо вычислить количество слов одинаковой длины.

Например слов диной в один символ - столько-то, в два символа столько то, в три символа - столько то.


PROGRAM PRP7;

VAR
f:text;
s:string;
i:INTEGER;
n:INTEGER;

BEGIN
ASSIGN(f,'in.txt');
RESET(f);
n:=0;
WHILE NOT EOF(f) DO
BEGIN
READLN(f,s);
FOR i:=1 TO LENGTH(s) DO
IF (s[i-1]=' ') OR (i=1) THEN
BEGIN
n:=n+1;
END;
END;
CLOSE(f);
WRITELN;
WRITELN(n);
END.



Количество слов в файле всего определить получилось, а вот как посчитать количества слов с одинаковыми количествами букв не знаю.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +


Честно не совсем понятно

Допустим ввели новые переменные


PROGRAM PRP7;

VAR
f:text;
s:string;
i:INTEGER;
n:INTEGER;


WordLen: array[1 .. 15] of integer;
count:INTEGER;


BEGIN
ASSIGN(f,'in.txt');
RESET(f);
n:=0;
WHILE NOT EOF(f) DO
BEGIN
READLN(f,s);
FOR i:=1 TO LENGTH(s) DO
IF (i=1) OR (s[i-1]=' ') THEN
BEGIN
n:=n+1;

Inc(WordLen[Count]);
WRITELN('Количество слов длины','i',' - ', WordLen[ i ]);



END;
END;
CLOSE(f);
WRITELN;
WRITELN(n);
END.




И в общем программа какую-то ахинею выдает.

Сообщение отредактировано: dog -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(dog @ 1.10.2010 6:10) *
Честно не совсем понятно

...

И в общем программа какую-то ахинею выдает.
Программа всегда выдает то, что ты ей сказала выдавать )).

Да, логика в твоей проге явно хромает..
Используешь то n, то Count.. Подсчет тоже неверный.
volvo, извини, но мне кажется, что тут простыми советами не обойтись.. Ладно, приводить всю прогу не буду. Но основной кусок - придется.
  RESET(f);
for i:=1 to nLen do WordLen[i]:=0;
WHILE NOT EOF(f) DO BEGIN
READLN(f,s);
n:=0;
FOR i:=1 TO LENGTH(s) DO IF s[i]=' ' THEN begin // по пробелу..
if n>0 then Inc(WordLen[n]); // .. увеличиваем счетчик слов длины n
n:=0 // .. и обнуляем n
end
else Inc(n); // по НЕпробелу просто увеличиваем длину текущего слова
if n>0 then Inc(WordLen[n]) // в конце строки тоже увеличиваем счетчик
END;
CLOSE(f);
// теперь выводим результаты
for i:=1 to nLen do if WordLen[i]<>0 then WriteLn(i,'-char words: ',WordLen[i]);


понятно так? если нет - спрашивай )).


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 20:49
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name