Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2019, 12:06   #1
L1s1c1a
Пользователь
 
Регистрация: 27.03.2019
Сообщений: 11
По умолчанию Работа с файлами в Pascal

дан файл f, элементы которого являются действительными числами. Найти сумму квадратов элементов файла и последний элемент файла.
L1s1c1a вне форума Ответить с цитированием
Старый 17.04.2019, 12:20   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
var f : file of real;
 d, sumq : real;
begin
  Assign(f, 'ИмяФайла.dat'); { если Pascal современный, то AssignFile(...) }
  Reset(f);
  if Eof(f) then WriteLn('Файл пуст')
  else begin
     sumq := 0;
     while Not Eof(f) do begin
         Read(f, d);
         sumq := sumq + sqr(d);
     end;
     WriteLn('Сумма квадратов = ',sumq:0:2,' последний элемент файла =',d:0:2);
  end;
  Close(f); { если Pascal современный, то  CloseFile(f) }
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.04.2019, 15:26   #3
L1s1c1a
Пользователь
 
Регистрация: 27.03.2019
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Код:
var f : file of real;
 d, sumq : real;
begin
  Assign(f, 'ИмяФайла.dat'); { если Pascal современный, то AssignFile(...) }
  Reset(f);
  if Eof(f) then WriteLn('Файл пуст')
  else begin
     sumq := 0;
     while Not Eof(f) do begin
         Read(f, d);
         sumq := sumq + sqr(d);
     end;
     WriteLn('Сумма квадратов = ',sumq:0:2,' последний элемент файла =',d:0:2);
  end;
  Close(f); { если Pascal современный, то  CloseFile(f) }
end.
При выполнении выдает ошибку на 10 строке "Чтение после конца потока невозможно"
L1s1c1a вне форума Ответить с цитированием
Старый 17.04.2019, 15:37   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А в каком виде те действительные числа во входном файле? Файл то типизированный
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.04.2019, 15:41   #5
L1s1c1a
Пользователь
 
Регистрация: 27.03.2019
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А в каком виде те действительные числа во входном файле? Файл то типизированный
Числа через пробел, обычный txt файл
L1s1c1a вне форума Ответить с цитированием
Старый 17.04.2019, 15:43   #6
L1s1c1a
Пользователь
 
Регистрация: 27.03.2019
Сообщений: 11
По умолчанию

Всё, понял свою ошибку, извиняюсь, работает.
Спасибо за помощь
L1s1c1a вне форума Ответить с цитированием
Старый 17.04.2019, 15:43   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В типизированном файле двоичная информация. file of real не пойдет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.04.2019, 15:43   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от L1s1c1a Посмотреть сообщение
При выполнении выдает ошибку на 10 строке "Чтение после конца потока невозможно"
Аватар, правильно Вам ответил. Вы не такой файл пытаетесь подсунуть.
для начала нужно подготовить файл с действительными числами.
Это нельзя сделать "вручную" (в текстовом редакторе), это можно сделать только написав для этого отдельную программу.
например, такую:
Код:
var f : file of real;
 d : real;
 i, n : integer;
begin
  WriteLn('Сколько чисел записать в файл: ');
  ReadLn(n);

  Assign(f, 'ИмяФайла.dat'); { если Pascal современный, то AssignFile(...) }
  Rewrite(f); // перезаписать файл
  
  for i:=1 to n do begin
    Write('Введите ',i,' действительное число: ');
    ReadLn(d);

    Write(f, d); // запишем это число в типизированный файл действительных чисел

  end;

  Close(f); { если Pascal современный, то  CloseFile(f) }

end.
А в качестве домашнего задания, чтобы убедиться, что Вы поняли тему, напишите программу, которая выведет на экран все числа из вашего типизированного файла.


UPDATE

опоздал...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами(Pascal ABC) Tanya-Manya Паскаль, Turbo Pascal, PascalABC.NET 2 13.03.2013 18:58
Работа с файлами (Pascal) ryslan94 Помощь студентам 1 04.01.2013 01:16
Работа с файлами (Pascal) andrey256 Помощь студентам 5 25.10.2011 20:52
Pascal работа с файлами A.S.W Помощь студентам 1 07.01.2010 19:01