13.10.2012, 12:04 | #1 (permalink) |
Новичок
Регистрация: 26.09.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Найти ошибку
Код:
rogram Project2; {$APPTYPE CONSOLE} uses SysUtils,windows; var s:string; i,n,k:Integer; f:TextFile; begin SetConsoleCP(1251); SetConsoleOutputCP(1251); Writeln('введи кол-во слов в кодировочной книге'); read(n); //--------------------------------------------- Assign(f,'Кодировочная книга.txt'); Rewrite(f); write('введи ',n,' слов'); k:=0; repeat Readln(s); Write(f,s); k:=k+1; until k=n; writeln('Исходный файл:'); reset(f); while not eof(f) do begin read(f,s); write(s,' '); end; Close(f); //------------------------------------------- writeln('Для выхода нажмите enter') readln end. |
13.10.2012, 12:04 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
На нашем форуме создается много подобных тем Не могу найти ошибку Помогите найти ошибку в программе Помогите найти ошибку Помогите найти ошибку Помогите найти ошибку Помогите найти ошибку |
13.10.2012, 14:47 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Что вполне естественно. Потому что Вы не разобрались в разнице между read и readln, а также write и writeln, и ставите эти операторы, как ни попадя. Конкретно:
1. У Вас: Код:
Writeln('введи кол-во слов в кодировочной книге'); read(n); Код:
Write('введи кол-во слов в кодировочной книге '); readln(n); Код:
write('введи ',n,' слов'); Код:
writeln('введи ',n,' слов'); 3. Но это всё "цветочки", а вот дальше пошли "ягодки". Код:
k:=0; repeat Readln(s); Write(f,s); k:=k+1; until k=n; 4. Код:
reset(f); Код:
close(f); reset(f); Код:
while not eof(f) do begin read(f,s); write(s,' '); end; Close(f); а) Каждое слово в файле располагается на своей отдельной строке. б) Вместо read(f,s); поставить readln(f,s); Если же слова в файле идут просто через пробел, то нужно организовывать довольно сложную процедуру посимвольного считывания до пробела - пропуск пробела - следующее считывание и т.д. Между прочим, использование оператора read для считывания строковой переменной вообще недопустимо. Никогда и нигде. Только readln. Вот Вам для начала. Размышляйте, исправляйте. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|