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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2008, 16:18   #1
Corwin88
 
Регистрация: 12.05.2008
Сообщений: 8
По умолчанию Определить содержимое файла f после выполнения операторов

очень нужна помощь по задаче:

Цитата:
var f:file of integer; i:integer;

Определить содержимое файла f после выполнения следующих операторов:

rewrite(f);
for i:=3 downto 1 do write(f,sqr(i))
я практически не разбираюсь в работе с файлами,но накалякал такой код(на выходе получаю ошибку)

Код:
program proga2;
var f:file of integer;
i:integer;
const
name='Y:\3.txt';
begin
assign(f,name);
rewrite(f);
for i:=3 downto 1 do write(f,sqr(i));
close(f);
readln
end.
и еще неаверно нужно добавить открытие файла в конце("Определить содержимое файла f..").
Corwin88 вне форума Ответить с цитированием
Старый 30.05.2008, 16:25   #2
ryton
Пользователь
 
Аватар для ryton
 
Регистрация: 23.05.2008
Сообщений: 97
По умолчанию

во-первых,раздел const идет перед var,насколько я помню,
а так верно мыслишь
я не для этого мира и это так
ryton вне форума Ответить с цитированием
Старый 30.05.2008, 16:50   #3
Corwin88
 
Регистрация: 12.05.2008
Сообщений: 8
По умолчанию

Цитата:
Сообщение от ryton Посмотреть сообщение
во-первых,раздел const идет перед var,насколько я помню,
а так верно мыслишь
исправил-все равно туже самую ошибку выдает. "Invalid variable reference"
Corwin88 вне форума Ответить с цитированием
Старый 30.05.2008, 16:52   #4
ryton
Пользователь
 
Аватар для ryton
 
Регистрация: 23.05.2008
Сообщений: 97
По умолчанию

посмотри на каком моменте выдает,от этого и танцуй
я не для этого мира и это так
ryton вне форума Ответить с цитированием
Старый 30.05.2008, 17:00   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что значит определить? Перечитать его весь что ли?
тогда грубо говоря
Код:
While not eof do begin readln(f,...); writeln(...); end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.05.2008, 17:03   #6
Corwin88
 
Регистрация: 12.05.2008
Сообщений: 8
По умолчанию

Цитата:
посмотри на каком моменте выдает,от этого и танцуй
я уже давно "танцую". ошибка вроде как в этой строке- for i:=3 downto 1 do write(f,sqr(i));

Цитата:
Что значит определить? Перечитать его весь что ли?
скорее всего да. в задаче так написано.
Stilet а в чем ошибка в коде?

Последний раз редактировалось Corwin88; 30.05.2008 в 17:07.
Corwin88 вне форума Ответить с цитированием
Старый 30.05.2008, 18:00   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а так попробуйте:
Код:
program proga2;
const
  name='Y:\3.txt';
var 
  f:file of integer;
  i,k:integer;
begin
  assign(f,name);
  rewrite(f);
  for i:=3 downto 1 do
  begin
    k := sqr(i);
    write(f,k);
  end;
  close(f);
  WriteLn('File was saved.')
  readln
end.
только зря Вы файлу расширение txt придумали - он совсем даже не текстовый получается ;-)

Последний раз редактировалось Serge_Bliznykov; 30.05.2008 в 18:02. Причина: дополнение
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.05.2008, 18:19   #8
Corwin88
 
Регистрация: 12.05.2008
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а так попробуйте:
Код:
program proga2;
const
  name='Y:\3.txt';
var 
  f:file of integer;
  i,k:integer;
begin
  assign(f,name);
  rewrite(f);
  for i:=3 downto 1 do
  begin
    k := sqr(i);
    write(f,k);
  end;
  close(f);
  WriteLn('File was saved.')
  readln
end.
только зря Вы файлу расширение txt придумали - он совсем даже не текстовый получается ;-)
да, спасибо, программа выполнилась, но в конечном файле непонятный мне результат - "". Конечно, может я не понял, но по логике там же должно быть "941"...хотя, в условии же
Цитата:
f:file of integer;
..
и как теперь "Определить содержимое файла f после выполнения следующих операторов.." ? ?

Последний раз редактировалось Corwin88; 30.05.2008 в 18:29.
Corwin88 вне форума Ответить с цитированием
Старый 30.05.2008, 21:15   #9
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Сообщение

Всё правильно, они недолжны отображаться в читабельном виде, в файле будут значения 9 4 1.
Они могут быть просмотренны Hex редактором.
Знайте что символ и код символа, неодно(строковое значение - их код):
'0' - 30h
'1' - 31h
и т.д.
Alter вне форума Ответить с цитированием
Старый 30.05.2008, 23:24   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Alter прав. файл у Вас двоичный (бинарный).
Вы, наверное, не поняли, почему я сказал, что у Вас расширение (.txt) не соответствует Вашему содержимому.
в TurboPascal'е - тип Integer занимает ровно 2 байта
(можете проверить через WriteLn(SizeOf(Integer)); )
полученный файл 3.txt длиной 6 байт:
09 00 04 00 01 00
(в Intel структуре данных сначала идут старшие байты, потом младшие)...

Либо, можно написать простеньку программу, которая выведет все числа из файла f:file of Integer:
Код:
const
  name='Y:\3.txt';
var 
  f:file of integer;
  k:integer;
begin
  assign(f,name);
  reset(f);
  while Not Eof(f) do
  begin
    Read(f,k);
    writeln(k);
  end;
  close(f);
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить размер файла перед скачиванием. kalexi Работа с сетью в Delphi 12 17.02.2012 18:17
Можно ли после аварийного закрытия приложения внести/удалить запись из файла Ramires Общие вопросы Delphi 9 06.08.2008 10:38
скачивание файла после просмотра рекламы westakof JavaScript, Ajax 3 02.07.2008 15:48
Перегрузка операторов, Организация перегрузки операторов chagin_yav Помощь студентам 2 12.05.2008 09:15