На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Сообщение: 1
ссылка на сообщение  Отправлено: 21.11.20 18:50. Заголовок: Проблема с чтением файла и форматом конца строки


Добрый вечер!
Разбираюсь с 24 заданием - работаю с файлами из архива к 24 заданию.
Успешная работа проходит только с одним файлом "24.txt", у которого формат UNIX (LF). Все остальные файлы формата WINDOWS (CRLF) - и с этими файлами программа просто останавливается на строке с assign и думает. И всё. Поменять формат никак не удаётся - в Notepad++ в отличие от обычного блокнота это сделать можно, но если сохраняешь файл, то он все равно выдает формат windows, а его паскаль никак не хочет читать. Что с этим делать?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 13 [только новые]


Администратор




Сообщение: 2144
ссылка на сообщение  Отправлено: 21.11.20 19:39. Заголовок: Уточните, пожалуйста..


Уточните, пожалуйста, в какой операционной системе и в какой версии Паскаля вы работаете.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 2
ссылка на сообщение  Отправлено: 21.11.20 22:19. Заголовок: Операционная система..


Операционная система windows 10, PascalAbc.Net 3.7.1

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 2145
ссылка на сообщение  Отправлено: 21.11.20 22:23. Заголовок: AniShika пишет: Опер..


AniShika пишет:
 цитата:
Операционная система windows 10, PascalAbc.Net 3.7.1

Неожиданно. Какой конкретно файл не читается?

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 3
ссылка на сообщение  Отправлено: 22.11.20 09:07. Заголовок: В общем-то все, кром..


В общем-то все, кроме 24.txt
То есть все остальные 24-ые с индексами, 7-ые и 8-ые мимо
И вот разницу между ними вижу именно в формате

24.txt


Любой другой файл


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 308
ссылка на сообщение  Отправлено: 22.11.20 09:46. Заголовок: А можно пример вашег..


А можно пример вашего кода посмотреть?

Проверил лично, все файлы читаются корректно.

Discussio mater veritas est Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 4
ссылка на сообщение  Отправлено: 22.11.20 10:27. Заголовок: Ну если взять просто..


Ну если взять просто максимально самое простое, потому что упростила до сам код до минимума, когда вдруг сложный не сработал на других файлах.
Имя файла меняется, расположение файла и программы всегда в одной папке. На 24-ом работает, на остальных файлах на строчке "assign( input, '24.txt');" зависает просто при запуске и дальше не идёт

var
s: string;
i: integer;
begin
assign( input, '24.txt');
readln(s);
for i:=1 to length(s) do
writeln(s);
end.

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 309
ссылка на сообщение  Отправлено: 22.11.20 10:30. Заголовок: Я удивлён что это во..


Я удивлён что это вообще работает!

Писать надо так

 var f1 :text; 
s : string;
begin
assign(f1,'24-j7.txt');
reset(f1);
s:=f1.ReadString();
...
end.


Discussio mater veritas est Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 5
ссылка на сообщение  Отправлено: 22.11.20 11:15. Заголовок: Просто в файле с поя..


Просто в файле с пояснениями про это задание написано так:

"В языке PascalABC.NET можно выполнить перенаправление потока ввода:
assign( input, 'k7.txt' );
readln(s);
программа будет «думать», что читает данные, введённые с клавиатуры (с консоли), а на самом деле эти данные будут прочитаны из файла k7.txt"

И что этого будет достаточно.

Так же разбором к задаче Р-07 (демо-21) (цитирую условие):
Текстовый файл 24.txt состоит не более чем из 106 символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых каждые два соседних различны. Для выполнения этого задания следует написать программу.

И приведённое решение:

var maxLen, curLen, i: integer;
s: string;
begin
assign(input, '24.txt');
readln(s);
maxLen := 1;
curLen := 1;
for i:=2 to Length(s) do
if s <> s[i-1] then begin
curLen := curLen + 1;
if curLen > maxLen then
maxLen := curLen;
end
else
curLen := 1;
writeln(maxLen);
end.

И для других заданий аналогично. Поэтому писала без того, как написали вы

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 6
ссылка на сообщение  Отправлено: 22.11.20 11:18. Заголовок: И как тогда правильн..


И как тогда правильно и что всё же нужно писать для чтения файла?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 2146
ссылка на сообщение  Отправлено: 22.11.20 11:34. Заголовок: AniShika пишет: И ка..


AniShika пишет:
 цитата:
И как тогда правильно и что всё же нужно писать для чтения файла?

На самом деле проблема была не в том, что используется перевод строки в стиле Windows, а в том, что в остальных файлах вообще не было символов перевода строки. А функция readline ждет, пока не получит такой символ. Сейчас я добавил перевод строки во все файлы и все должно работать.
В программе можно использовать оба варианта, в том числе с перенаправлением потока ввода из файла.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 8
ссылка на сообщение  Отправлено: 23.11.20 14:44. Заголовок: Про перевод строки н..


Про перевод строки не подумала. Тогда вот что непонятно:
Например, взяла файл, сделала в нём несколько строчек, на каждой строчке что-то написано.
Но тогда по тому, как я писала выше, что read, что readln считывают только первую строчку, в цикле посимвольно выводят. А как тогда реализовать, чтобы все последующие тоже захватывались?
То есть если перевода строки нет и всё как единая строка - тут проблем нет, считывает всё, не важно read, или readln.А если несколько строк, то как их тогда обрабатывать? Потому что я тогда read получаю одну строку, прохожусь по ней for, а остальные как? Если вот на экзамене дан файл именно с кучей переводов строк.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 2156
ссылка на сообщение  Отправлено: 24.11.20 18:23. Заголовок: AniShika пишет: что ..


AniShika пишет:
 цитата:
что read, что readln считывают только первую строчку

 var s: string; 
f: text;
begin
assign(f, 'test.txt');
reset(f);
while not eof(f) do begin
readln(f, s);
writeln(s);
end;
end.


___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 9
ссылка на сообщение  Отправлено: 23.11.20 15:00. Заголовок: Ещё я так понимаю мо..


Ещё я так понимаю можно сделать так:

assign(f, '...');
reset(f);
while not eof (f) do begin
readln(f, s);
...
end;

Где он читает посимвольно и каждый символ каждый раз закладывает в s. Но тут тогда мне не очень ясно, как делать какие-то проверки между соседними символами - и я так понимаю именно поэтому цикл while не очень здесь удобен. То есть чтобы сравнивать потом сразу две соседние буквы, например, на совпадение, нужно иметь всю строку разом и рассматривать её как массив, поэтому тот цикл for, что выше, в этом плане кажется как-то логичным, с учётом, что я могу делать проверки, что s <> s[i+1], например.
Но вот в цикле for так и не ясно то, что написала выше про чтение всех строк.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1970
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет