С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для LeDep
74 / 74 / 44
Регистрация: 12.02.2011
Сообщений: 380

Последний элемент при чтении из файла построчно всегда 0, почему ?

05.11.2013, 18:47. Показов 1147. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите, почему при чтении из файла у меня все время 0 является последним элементом, в чем ошибка ?
В файле находится 4 элемента в столбик и нуля нету.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const
n=5;
var i,j,k,c:integer;
    z,r,a:array[1..n] of integer;
    f,f1:text;
begin
  assign(f,'c:/input.txt');
  rewrite(f);
  for i:=1 to n do
   begin
    writeln('Enter ','a[',i,']: ');
    readln(a[i]);
    writeln(f,a[i]);
   end;
   close(f);
 
  assign(f1,'c:/output.txt');
  rewrite(f1);
   for i:=2 to n do
    begin
     r[i]:=a[i]+a[i-1];
     writeln(f1,r[i]);
    end;
  reset(f1);
  while not eof(f1) do
   begin
    read(f1,r[i]);
    writeln('Result: ',r[i]);
    writeln;
   end;
  close(f1);
  readln;
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2013, 18:47
Ответы с готовыми решениями:

Почему при чтении файла последний символ выводится 2 раза?
если структура файла: 1\nEOF. То почему не выполняется условие if(Ch != '\n') { cout.put(Ch); } и программа выводит в...

При чтении файла последний элемент повторяется дважды
появилась необходимость выучить работу с файлами за 9 часов #include <iostream> #include <time.h> #include <stdio.h> ...

Всегда возвращает -1 при чтении файла
Вот полный код программы: #include <fcntl.h> /* open() and O_XXX flags */ #include <sys/stat.h> /* S_IXXX flags */ #include...

9
 Аватар для Valenth
120 / 110 / 19
Регистрация: 04.11.2013
Сообщений: 471
05.11.2013, 19:03
Delphi
1
writeln(f1,r[i]);
При записи в файл оставляет после себя символ конца строки, который в дальнейшем при чтении тоже учитывается. В итоге в выходном файле у вас в конце пустая строка, отсюда и ноль.

Сделайте так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
...
  assign(f1,'c:/output.txt');
  rewrite(f1);
   for i:=2 to n do
    begin
     r[i]:=a[i]+a[i-1];
     if (i<n) then
      writeln(f1,r[i])
     else
      write(f1,r[i]);
    end;
  reset(f1);
...
В итоге последняя строчка будет без символа конца строки.
0
 Аватар для LeDep
74 / 74 / 44
Регистрация: 12.02.2011
Сообщений: 380
05.11.2013, 19:09  [ТС]
Почему то нету кнопки, чтобы плюсануть к репутации.
Все равно спасибо, понял.
0
Платежеспособный зверь
 Аватар для кот Бегемот
8964 / 4387 / 1654
Регистрация: 28.10.2009
Сообщений: 11,645
05.11.2013, 19:18
Фигня это всё. дело в том, что цикл до 5, а считывается 4 числа. Пятое автоматически равно нулю. Исправь n на 4 и ошибка исчезнет
1
 Аватар для Valenth
120 / 110 / 19
Регистрация: 04.11.2013
Сообщений: 471
05.11.2013, 19:22
Цитата Сообщение от кот Бегемот Посмотреть сообщение
Фигня это всё. дело в том, что цикл до 5, а считывается 4 числа. Пятое автоматически равно нулю. Исправь n на 4 и ошибка исчезнет
А мне кажется, что Вы ошибаетесь.
0
Платежеспособный зверь
 Аватар для кот Бегемот
8964 / 4387 / 1654
Регистрация: 28.10.2009
Сообщений: 11,645
05.11.2013, 19:26
Ну, перекрестись, если кажется.
0
 Аватар для Valenth
120 / 110 / 19
Регистрация: 04.11.2013
Сообщений: 471
05.11.2013, 19:28
Цитата Сообщение от кот Бегемот Посмотреть сообщение
Ну, перекрестись, если кажется.
Достойный и очень предсказуемый ответ. А Вы всегда даёте советы налево и направо, не попробовав их хотя бы проверить (это я про n=4)?
0
 Аватар для LeDep
74 / 74 / 44
Регистрация: 12.02.2011
Сообщений: 380
05.11.2013, 19:29  [ТС]
Если n=4, то тоже 0 последним выводит. Щас проверил. Все равно спасибо всем!
0
Платежеспособный зверь
 Аватар для кот Бегемот
8964 / 4387 / 1654
Регистрация: 28.10.2009
Сообщений: 11,645
05.11.2013, 19:49
Нет я не даю советы направо и тем более налево. Я просто мельком глянул программу и подумал, что он считывает данные из файла, а они записываются. И я согласен с тобой. Но раз в программе известно количество записанных чисел, можно было не применять команду
Pascal
1
while not eof(f1) do
заменив её командой
Pascal
1
for i:=1 to 4 do
и прочиталось бы ровно 4 числа.
или
Pascal
1
for i:=1 to n-1 do
если n=5
0
 Аватар для Valenth
120 / 110 / 19
Регистрация: 04.11.2013
Сообщений: 471
05.11.2013, 19:53
кот Бегемот, можно и так, но я предпочитаю указывать на допущенные ошибки и показывать "как надо" тем же образом, каким написан код. Так усвояемость материала лучше, и понимание нюансов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.11.2013, 19:53
Помогаю со студенческими работами здесь

Почему пропускается строка при чтении XML файла?
Доброго времени суток дамы и господа. Столкнулся с такой проблемой. Есть XML файл, я его разбираю и ищу соответствующие элементы X и Y, но...

Почему возращается пустая строка при чтении ini-файла?
Всем привет. Непойму почему мне возращается пустая строка.К примеру есть переменная: const char *mystr; Бустом я читаю INI: ...

Почему при чтении бинарного файла происходит экстренное завершение программы?
в Windows XP при чтение бинарного файла происходит екстренное завершение программы !!! /*Writing to a random access file */ #include...

Почему при чтении exe файла средствами python выводит ошибку?
Вот сам код: file = open(&quot;f.exe&quot;, &quot;r&quot;, encoding=&quot;cp1251&quot;) print(file.read()) (ничего сложного) Но вот когда открываю...

Последний элемент массива всегда заменяется нулём
Товарищи, ну прям оказия. Весь вечер не могу ошибку отловить. Имеется таблица JTable mainTable = new JTable(4, 2); Нужно всего лишь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru