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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2012, 17:08   #1
Женька Good
Форумчанин
 
Регистрация: 15.03.2011
Сообщений: 126
По умолчанию Паскаль. Как вывести числа из файла начиная с определенного?

Собственно говоря, то всё сказано в заголовке.
Как вывести на экран файлы записанные в файле?
Как вывести на экран числа начиная с определенного, например с 10.

Вот так я записываю числа в файл:
Код:
Procedure Fo(a:mas1; f1:myfile);
Var i:integer;
    j:integer;
begin
Randomize;
Assign(f1,'i:\OdMassiv');
rewrite(f1);
 For i:=1 to 100 do begin
  c1.a[i]:=round(10+random*(100-10));
  write(f1,c1);
 end;
 close(f1);
end;
Женька Good вне форума Ответить с цитированием
Старый 03.04.2012, 18:25   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Цитата:
Для облегчения перемещения указателя по файлу и доступа к компонентам типизированного файла существуют специальные процедуры и функции:

fileSize(<имя_ф_переменной>) – функция Паскаля, определяющая число компонентов в файле;

filePos(<имя_ф_переменной>) – функция Паскаля, значением которой является текущая позиция указателя;

seek(<имя_ф_переменной>,n) – процедура Паскаля, смещающая указатель на компоненту файла с номером n. Так, процедура seek(<имя_ф_переменной>,0) установит указатель в начало файла, а процедура seek(<имя_ф_переменной>, FileSize(<имя_ф_переменной>)) установит указатель на признак конца файла.
Используйте seek.
Зачем передаете в процедуру файловую переменную, а потом все равно ее инициализируете в процедуре файлом? Ну это, конечно, ваше личное дело.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 03.04.2012, 20:17   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Женька Good, во-первых, ЗАЧЕМ вы ещё одну тему создаёте?! Вот в этой
Паскаль. В файл записываются только "0". Что делать? вы тот же вопрос задавали. и ответы получили..
видимо, ответы не помогли..

во-вторых, Вы думаете, что написанного Вами достаточно?
Когда неизвестно, что такое типы mas1 и myfile, откуда взялась (и главное, какого типа переменная C1) ?!

Цитата:
вот моя прога
Код:
Program Xme1ez_6_Record;
Uses Crt;
Type mas1=array [1..100] of integer;
Type mas2=array [1..100, 1..100] of integer;
type Xm=record
     a:mas1;
     a1:mas2;
     end;
     myfile=file of Xm;
Var f1:myfile;
    f2:myfile;
    c1:Xm;

Procedure Fo(a:mas1; f1:myfile);
Var i:integer;
    j:integer;
begin
Randomize;
Assign(f1,'i:\OdMassiv');
rewrite(f1);
 For i:=1 to 100 do begin
  c1.a[i]:=round(10+random*(100-10));
   Write('x',i,'=',c1.a[i],' ');
  write(f1,c1);
 end;
 close(f1);
end;


BDA, если вдруг соберётесь отвечать TC - весьма настойчиво рекомендую ознакомится предварительно с его предыдущей темой. я несколько постов подряд повторял ему одно и то же, повторял.. пока не устал..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.04.2012, 22:35   #4
Женька Good
Форумчанин
 
Регистрация: 15.03.2011
Сообщений: 126
По умолчанию

BDA, если вдруг соберётесь отвечать TC - весьма настойчиво рекомендую ознакомится предварительно с его предыдущей темой. я несколько постов подряд повторял ему одно и то же, повторял.. пока не устал.. [/QUOTE]

Если уж решили потратить свое, как я понимаю, драгоценное время, чтобы помочь, так уж потрудитесь, чтобы человек, которому вы помогаете понял то, что вы пытаетесь к нему донести.
P.S.Если вы знаете, то это не значит, что все знают.
Женька Good вне форума Ответить с цитированием
Старый 04.04.2012, 00:12   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я Вам пытаюсь объяснить, Вы меня не понимаете. А я не понимаю, что именно Вы не можете понять.. замкнутый круг..

ладно. сделаю ещё одну попытку..


то, что Xm - это тип данных, который описывает в своём составе ДВА массива - это, надеюсь, понятно?

var c1:Xm;
то, что переменная C1 это переменная, которая имеет тип Xm, таким образом эта переменная одна содержит в себе ДВА массива одновременно, это понятно?

дальше.
то, что если взять конструкцию с циклом
For i:=1 to 100 do <Что-То Делаем>,
то, очевидно, что <Что-То Делаем> выполнится (в теле цикла) ровно 100 раз. Это тоже очевидно?

если есть тип myfile=file of Xm;
то это описывает типизированный файл, каждый элемент которого является собой компонентой типа Xm. Это понятно?

Var f1:myfile;А если есть переменная f1 такого типа, то
Read(f1, C1); прочитает из файла f1 ровно одну компоненту (запись) типа Xm в переменную C1 - это понятно? А то, что переменная C1 представляет собой ДВА массива мы уже выяснили ранее. Значит,
Read(f1, C1); прочитает (за одну команду) ДВА массива из файла в переменную C1. Это понятно?

Дальше, если у нас это написано в цикле,
for i:=1 to 100 do
Read(f1, C1);
то мы прочитаем 100 раз по ДВА массива.
Это понятно?

То, что нам НЕ НУЖНО ЧИТАТЬ 200 МАССИВОВ из файла (да и не факт, что они в этом файле вообще есть!!) - это понятно?

Т.е. написанный Вами код по меньшей мере - некорректный (и почему так) - Вам теперь, надеюсь, стало понятно?!!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести корень из числа? GidroFobia Помощь студентам 14 17.03.2012 15:33
Вывести на экран все простые числа, не превосходящие заданное число М - Паскаль bibek13 Помощь студентам 4 06.12.2011 08:17
Как найти наибольшую степень двойки, не превышаюшую определенного числа N (Паскаль) Mandy007 Помощь студентам 9 12.10.2011 14:08
Как числа в двоичном виде вывести в столбик по 4 числа? Equalizer Общие вопросы C/C++ 11 27.09.2009 14:15
Как вывести из диапозона не хватающие числа... boy24 Microsoft Office Excel 7 08.06.2009 06:08