|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
![]() |
|
Опции темы | Опции просмотра |
![]() |
#1 (permalink) |
Member
Регистрация: 20.12.2010
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]() В текстовом файле book.txt посчитать количество слов,в которых согласных букв больше чем глассных. Все найденные слова записать отдельными строками в файл words.txt program qwerty; uses crt; var i,m,n,j:integer; f,f1:text; st,word:string; kolg,kols,kol:byte; const glas=[перечисление глассных]; soglas=[перечисление согласных]; begin clrscr; kol:=0; kolg:=0; kols:=0; assign(f,'book.txt'); reset(f); assign(f1,'words.txt'); rewrite(fi); while not Eof(f) do begin while (st[i]=' ') and (i<=length(st)) do inc(i); m:=i; while (st[i]<>' ') and (i<=length(st)) do inc(i); n:=i; word:=copy(st,m,n-m); for j:=1 to length(word) do begin if (word[j] in glas) then begin kolg:=kolg+1; if (word[i] in soglas) then kols:=kols+1; if kols>kolg then begin kol:=kol+1; end; write(f1,word); close(f); close(f1); readln; end; end; end; end; end. Прога сначала выдает количество = 1,а потом выдает file not open ![]() Уже замучалась с задачей ![]() ![]() |
![]() |
![]() |
![]() |
|
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Поищите в этих ссылках ответы Касперский выдает ошибку Norton PartitionMagic 8.0 выдает ошибку. Не загружается ОС и комп выдает ошибку Фотошоп выдает ошибку. Ноутбук выдает ошибку 0х000000D1 |
![]() |
#4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,809
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
![]()
Хорошо. На самом деле, в программе имеется и куда более существенная ошибка.
Рассмотрим первую часть - выделение слов. Вы открыли два файла на чтение и запись, а потом начинаете анализировать символы строки St, при этом абсолютно никак не связав саму строку с содержимым файла f! Или опять "в программе всё правильно"? Если так, то выложите, пожалуйста, РАБОЧИЙ листинг программы. P.S. Кстати, слово "гласная" (как и "согласная") пишется с одним "с". |
![]() |
![]() |
![]() |
#5 (permalink) |
Member
Регистрация: 20.12.2010
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]()
Ну не ругайтесь на меня=) А как исправить мою ошибку?=)
|
![]() |
![]() |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
#8 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,809
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
![]()
Вот - вроде исправил кучу ошибок. В частности, убрал CRT и readln: ведь Вы работаете с файлами, так зачем Вам экран?
Код:
program qwerty; var i,m,n,j:integer; f,f1:text; st,word:string; kolg,kols,kol:byte; const glas=[перечисление гласных]; soglas=[перечисление согласных]; begin kol:=0; assign(f,'book.txt'); reset(f); assign(f1,'words.txt'); rewrite(f1); while not Eof(f) do begin readln(f,st); i:=1; while i<=length(st) do begin while st[i]=' ' do inc(i); m:=i; while (st[i]<>' ') do inc(i); n:=i; word:=copy(st,m,n-m); kolg:=0; kols:=0; for j:=1 to length(word) do begin if (word[j] in glas) then kolg:=kolg+1; if (word[j] in soglas) then kols:=kols+1; end; if kols>kolg then begin kol:=kol+1; write(f1,word,' '); end; end; end; close(f); close(f1); end. |
![]() |
![]() |
![]() |
#10 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,809
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
![]()
Еще ошибку заметил:
в строке if (word[i] in soglas) then kols:=kols+1; нужно i заменить на j. В листинге поправлено. |
![]() |
![]() |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
Опции темы | |
Опции просмотра | |
|
|