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

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

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

> Задача на текст, Найти количество одинаковых слов в файле
dog
сообщение 30.09.2010 9:06
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 30.09.2010 10:33
Сообщение #2


Гость






Цитата
Количество слов в файле всего определить получилось
Кстати, не совсем корректно. Не каждый компилятор это "проглотит". Например, FPC со стандартными настройками вылетит с ошибкой при выполнении этой программы, потому что s[i - 1] при i = 1 - это выход за границу массива. Поменяй условия местами:
IF (i=1) OR (s[i-1]=' ') THEN
, и это будет работать везде и всегда. Кстати, еще одно: в следующий раз, когда обращаешься к нулевому символу строки, и сравниваешь его с пробелом, подумай, а что будет, если длина строки будет равна 32? В этом конкретном случае ничего страшного не произойдет, но вообще таких "сюрпризов" надо избегать.

А по поводу вопроса - ну что ж, надо ввести Count - счетчик количества символов между пробелами (который будет сбрасываться при s[ i ] = ' '), и массив:
var
WordLen: array[1 .. 15] of integer;

(слова длиной больше 15 символов ты вряд ли найдешь), и после нахождения длины очередного слова (как раз перед тем, как сбросить счетчик) - делать
Inc(WordLen[Count]);

, тогда у тебя в WordLen[ i ] будет храниться количество слов с длиной i
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 26.07.2025 22:15
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"