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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2020, 09:36   #1
tara-ta-ta
Пользователь
 
Регистрация: 25.10.2019
Сообщений: 36
По умолчанию Типизированный файл в паскале

Есть вот такой код, но он не выдает ошибку. Что я сделал не так?

Код:
var
  f1, f2: file of real;
  c, i, a: integer;
  flag: boolean;
  t1: string;
  e: array[1..100] of real;

begin
  assign(f1, 'c:\in.docx');
  reset(f1);
  i := 0;
  while not (eof(f1)) do
  begin
    inc(i);
    read(f1, e[i]);
  end;
  for c := 1 to i - 1 do
  begin
    
    if e[c] < e[c + 1] then flag := true
    else flag := false;
  end;
  for c := 1 to i do
    writeln(e[c]);
  close(f1);
  reset(f1);
  writeln;
  writeln('Новый файл:');
  assign(f2, 'c:\out.txt');
  rewrite(f2);
  if flag = true then 
    writeln(f2, 'Да')
  else 
    write(f2, 'Нет');
  close(f2);
  reset(f2);
    read(t1);
    seek(f2, filepos(f2));
  close(f2);
end.
Само задание звучит если что так: "Дан файл вещественных чисел. Определить, являются ли числа в файле упорядоченными по возрастанию. Ответ «ДА» или «НЕТ» записать в новый файл."
tara-ta-ta вне форума Ответить с цитированием
Старый 01.06.2020, 10:01   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

А надо чтоб ы выдавал ошибку?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 01.06.2020, 10:08   #3
tara-ta-ta
Пользователь
 
Регистрация: 25.10.2019
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
А надо чтоб ы выдавал ошибку?
ой, немного не так написал))) надо чтобы работала прога, уже весь интернет облазил
tara-ta-ta вне форума Ответить с цитированием
Старый 01.06.2020, 10:31   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Компилируется, но выдаёт ошибку при запуске ? Естественно. Как создаётся исходый файл? В Word ? Но он отродясь в float формате не выдавал. Так что нужно написать ещё одну прогу, которая формировала бы входной файл. "Что-то_там.dat" . f2 должен быть открыт как текстовый, а не file of real;
После close(f1); уже ни к чему reset(f1);

Вот пример файла с данными float. Прочитай в массив, распечатай и работай с массивом.
https://cloud.mail.ru/public/4SsR/5bWdfhLQU

Но открыть файл f2 только чтоб записать в него Да или Нет ? Уже смешно. Чего только не напридумывают преподы, одуревшие от CV-19.

А проверку лучше делать так:
Код:
  flag := true ;
  for c := 1 to i - 1 do
        if e[c] > e[c + 1] then 
           begin
              flag := false; Break
           end;

Последний раз редактировалось digitalis; 01.06.2020 в 13:42.
digitalis вне форума Ответить с цитированием
Старый 03.06.2020, 15:16   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Несколько моих замечаний:
1. Из условия задачи не следует, что файл с вещественными числами задан в типизированном формате.
а) Типизированный файл можно подготовить, если генерировать, например, вещественные числа случайным образом. При этом в файл записывать значение переменной без преобразования в текст:
Код:
writeln(fh, rVar);
или
Код:
write(fh, rVar);
Чувствуете разницу?
Имя и расширение файла могут быть любыми.
б) Текстовый файл вещественных чисел может быть подготовлен, например, в Блокноте.
Имя файла любое, а расширение *.txt.
В принципе это не так важно, так как после создания файла его имя и расширение можно изменить.
Текстовый файл вещественных чисел можно сформировать и программно.
Просто пишем:
Код:
6.765 
32.4
-765.2
...
В этом случае следует задаться вопросом: "Сколько чисел будет в одной строке?"

Чтение чисел следует так же делать разными методами:
Код:
readln(f1, rVar);
или
Код:
read(f1,rVar);
В том случае, когда при записи использовался writeln(), в файл добавлялись возвраты кареток.
Такие файлы следует читать через readln().

Если файл формировался через вложенные циклы:
Код:
(1) - Число строк
      (2) - число чисел в строке
             ...
,то пишем во вложенном цикле:
Код:
write(f1, rVar);
а во внешнем:
Код:
writeln(f1, rVar); {это последнее число в строке}
или
Код:
writeln(f1); {это добавили Cr - возврат каретки и Lf - новая строка}
и тем самым завершаем запись строки.

PS: Использование read() не по назначению - это частая ошибка.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 03.06.2020, 15:32   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
1. Из условия задачи не следует, что файл с вещественными числами задан в типизированном формате.
Следует. Вариант безальтернативный:
Цитата:
"Дан файл вещественных чисел
, а не "текстовый файл, содержащий вещественные числа" . Иначе не будет соответствия названию задания Типизированный файл в паскале : прочитали текстовый, обработали, выдали текстовый. В чём типизация ?

Последний раз редактировалось digitalis; 03.06.2020 в 15:38.
digitalis вне форума Ответить с цитированием
Старый 03.06.2020, 16:56   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Да, не обратил внимание на тему.
Но в объяснении описал, как правильно писать и читать
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Pascal ABC] Дан типизированный файл,состоящий из целых чисел.Удалить из него все числа с последней цифрой 2.Помогите написать программу в паскале абц. Ваася Паскаль, Turbo Pascal, PascalABC.NET 1 21.04.2017 12:25
Имеется типизированный файл с тридцатью числами. Записать в другой файл числа имеющегося файла в обратном порядке. Валентин77 Общие вопросы C/C++ 8 17.12.2013 22:53
Типизированный файл. Создание в паскале Ann2807 Помощь студентам 0 26.05.2013 22:52
Типизированный файл с натуральными числами. Числа, встречающиеся 1 раз переписать в другой файл [Паскаль] mifomen Помощь студентам 7 16.12.2010 22:00