Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Создать файл для результатов работы программы (http://www.tehnari.ru/f43/t54978/)

Yug7 26.07.2011 00:05

Создать файл для результатов работы программы
 
Для записи результатов работы программы необходимо создать файл. В ходе работы программа будет постоянно обращаться к этому файлу : брать КОПИЮ последней записи в файл ( сохраняя саму запись,иначе чего весь сыр-бор городить ), проделывать с этой КОПИЕЙ арифметические операции и записывать полученное число в хвост записи, т.е. файл будет постоянно пополняемый ( и еще нужно,чтобы после каждой новой записи-он должен быть постоянно сохраняемый). Файл создается с одним числом - 5 ( № 1 ).
Как наиболее правильно сформулировать такую задачу программе и где это записать : до или после объявления переменных ?

AlexZir 26.07.2011 11:57

Язык программирования, естественно, у вас из разряда "сами знаете какой"?

Исходя из раздела, могу в общих чертах назвать команды для работы с файлами:
assign(f,'путь к файлу.расширение') - связать файловую текстовую переменную с файлом, имеющим адрес.
reset(f) - открыть файл по чтению, понадобится при поиске последней строки в файле путем перебора.
append(f) - открыть файл для добавления информации в конец файла.
read(f, t) - считать из файла значение в переменную t.
write(f,t) - записать в файл значение переменной t.

Более подробно и детально можно будет вести диалог в случае не столь туманного описания задачи.

Vladimir_S 26.07.2011 13:18

Цитата:

Сообщение от AlexZir (Сообщение 558354)
Язык программирования, естественно, у вас из разряда "сами знаете какой"?

Да уж...
Yug7 И еще - какой тип файла? Что представляет собой каждая запись (текст, число, строка, переменная типа "запись")?
К сожалению, наши штатные экстрасенсы убыли в отпуск, а нам без них про всё это не догадаться...

Yug7 26.07.2011 21:00

Создать файл для результатов работы программы
 
:tehnari_ru_117: Море извинений за бестолково заданный вопрос. Уточняю : 1) Язык - Turbo Pascal.
2) " Запись" - число.

Yug7 26.07.2011 21:04

:tehnari_ru_117: А еще я наврал в вопросе с числом под № 1 - это не 5,а 3.

Yug7 26.07.2011 21:06

:tehnari_ru_117: И еще. Спасибо за участие.

AlexZir 26.07.2011 21:16

Файл типизированный или нетипизированный?

Насколько я понял, в исходном файле должно быть только одно число в начале выполнения программы и в процессе выполнения программы в него записывается ряд чисел, полученных в результате неких арифметических действий. Я вас правильно понял?

Работа с текстовым файлом вас устроит?

AlexZir 26.07.2011 21:31

Допустим, что все числа в файле записываются с новой строки и сам файл должен носить имя c:\results.txt и первоначально не создан.
Код:

var f:text;
a:integer;
begin
assign(f, 'c:\results.txt');
rewrite(f); // открываем файл по перезаписи
write(f,'3');  // записываем первое число 3 в файл
close(f);
reset(f)  // открываем файл по чтению и в цикле считываем числа
while not (eof(f)) do
readln(f, a);
close(f);
// здесь ваши арифметические операции над считанным числом
...
append(f);
writeln(f,''); write(f, a);
close(f);
end.

Дальше будем думать вместе, когда вы удосужитесь выложить все техзадание для реализации программы :)

AlexZir 26.07.2011 21:53

Приведенную программу можно зациклить на выполнение вычислений до наступления события, например, до нажатия на кнопку Esc для выхода. Сделать это можно, добавив цикл с условием, используя команды перехвата нажатия клавиш.

Yug7 27.07.2011 00:48

AlexZir ! Вы соверщенно правы: и изложил туманно и как верно сказано "...не удосужился выложить все техзадание для реализации программы."
Исправляюсь. Но, боюсь,что будет еще запутанней. Я хочу написать программу, генерирующую прогрессию таким образом : сначала объявить ДВЕ переменные : а ( непрерывно циклически принимает значения "0" или "1",цикл такой : =0,=1,=0,=1,=0 ...) , b ( непрерывно циклически принимает значения "1" или "0",цикл такой : =1,=0,=0,=1,=0,=0,=1 ...).
1. for i:=1 to n do
2. if i mod 3=1 then write(1) else write(0);
Так можно ? Или лучше взять a и b, как тип Boolean ?
А алгоритм работы такой : программа сравнивает первые значения переменных и если хоть одна переменная =1,программа переходит к оценке вторых значения переменных,а на счетчик идет k+1,так до тех пор,пока а=0 и b=0. Тогда из файла берется КОПИЯ последнего туда записанного числа, к нему +счетчик (после чего он обнуляется) и полученное записывается в файл. Затем вводится еще одна переменная того же типа,но со своим циклом. Для вычисления цикла из файла берется КОПИЯ последней записи(то,что вычислили) и от нее вычитается 1. Это и будет количество нулей между единицами в цикле. Цикл новой переменной начинается с 1, остальные переменные начинают оттуда,где остановились : а=0, b=0, c=1. Дальше алгоритмы повторяются. Количество переменных растет, в файл записываются все новые и новые члены прогрессии.
Еще больше тумана напустил ?


Часовой пояс GMT +4, время: 03:40.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.