Ошибка в типизированном файле - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Работа с одним типизированным файлом. Создать файл и записать в него степени числа 3. Вывести на экран все компоненты числа с четным номером
Листинг программы
  1. var f: file of real;
  2. i,n,l:integer;
  3. x:real;
  4. begin
  5. assign(f,'1.dat');
  6. rewrite (f);
  7. write('Количество чисел '); readln(n);
  8. l:=0;
  9. for i:=1 to n do begin
  10. write ('ведите степень числа 3 у ',i,' компонента ');
  11. readln(x);
  12. x:=Power(3,x);
  13. write(f,x);
  14. end;
  15. close(f);
  16. reset(f);
  17.  
  18. for l:=1 to n do
  19. begin
  20. read(f,x);
  21. if l mod 2 = 0 then seek(f,l);
  22. writeln(x,' ')
  23. end;
  24. close(f);
  25. end.
О возникла идея, а что если так, как думаете пойдет?
Листинг программы
  1. {Работа с одним типизированным файлом.
  2. Создать файл и записать в него степени числа 3.
  3. Вывести на экран все компоненты числа с четным номером}
  4. var
  5. f: file of real;
  6. i, n, l: integer;
  7. x: real;
  8. begin
  9. assign(f, '1.dat');
  10. rewrite(f);
  11. write('Количество чисел ');readln(n);
  12. l := 0;
  13. for i := 0 to n-1 do
  14. begin
  15. write('ведите степень числа 3 у ', i, ' компонента ');
  16. readln(x);
  17. x := Power(3, x);
  18. write(f, x);
  19. end;
  20. close(f);
  21. reset(f);
  22. while l < filesize(f) do
  23. begin
  24. read(f, x);
  25. l := l + 2;
  26. seek(f, l);
  27. writeln(x, ' ');
  28. end;
  29. close(f);
  30. end.

Решение задачи: «Ошибка в типизированном файле»

textual
Листинг программы
  1. var
  2.   f: file of real;
  3.   i, n, l: integer;
  4.   x: real;
  5. begin
  6.   assign(f, '1.dat');
  7.   rewrite(f);
  8.   write('Количество чисел ');
  9.   readln(n);
  10.   l := 0;
  11.   for i:=1 to n do
  12.    begin
  13.     write('ведите степень числа 3 у ', i, ' компонента ');
  14.     readln(x);
  15.     x:=Power(3,x);
  16.     write(f,x);
  17.   end;
  18.   reset(f);
  19.   writeln('Созданный файл');
  20.   while not eof(f) do
  21.    begin
  22.     read(f,x);
  23.     write(x,' ');
  24.    end;
  25.   writeln;
  26.   reset(f);
  27.   writeln('Элементы с четными номерами');
  28.   for i:=0 to filesize(f)-1 do
  29.    begin
  30.     read(f,x);
  31.     if odd(i) then  write(x,' '); //если индекс нечетный, номер четный
  32.    end;
  33.  close(f);
  34. end.

Объяснение кода листинга программы

  1. Объявляются переменные: f (тип file of real), i, n, l (тип integer), x (тип real).
  2. Задается имя файла для записи и чтения данных — '1.dat'.
  3. Выполняется операция записи в файл 'Количество чисел' и считывается значение переменной n.
  4. Инициализируется переменная l, которая будет использоваться для отслеживания количества чисел, записанных в файл.
  5. Запускается цикл for, который выполняется от 1 до n. Внутри цикла выводится сообщение 'ведите степень числа 3 у ', i, ' компонента ' и считывается значение переменной x. Значение x затем преобразуется в степень числа 3 с помощью функции Power(3,x). Затем выводится значение x в файл '1.dat'.
  6. После завершения цикла for сбрасывается счетчик f и выводится сообщение 'Созданный файл'.
  7. Запускается цикл while, который выполняется до тех пор, пока не будет достигнут конец файла. Внутри цикла считывается значение из файла и выводится пробел.
  8. После завершения цикла while сбрасывается счетчик f и выводится сообщение 'Элементы с четными номерами'.
  9. Запускается цикл for, который выполняется от 0 до filesize(f)-1. Внутри цикла считывается значение из файла и проверяется, является ли индекс нечетным. Если это так, то выводится значение x в файл '1.dat'.
  10. После завершения цикла for закрывается файл '1.dat' с помощью функции close(f).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут