Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 26.07.2011, 00:05   #1 (permalink)
Yug7
Member
 
Регистрация: 26.07.2011
Сообщений: 33
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Question Создать файл для результатов работы программы

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

Старый 26.07.2011, 00:05
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Безусловно стоит уделить немного внимания на аналогичные темы

Помогите создать библиотеку функций для работы с матрицами
Как создать файл ntosboot.bat?

Старый 26.07.2011, 11:57   #2 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

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

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

Более подробно и детально можно будет вести диалог в случае не столь туманного описания задачи.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 26.07.2011, 13:18   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
Язык программирования, естественно, у вас из разряда "сами знаете какой"?
Да уж...
Yug7 И еще - какой тип файла? Что представляет собой каждая запись (текст, число, строка, переменная типа "запись")?
К сожалению, наши штатные экстрасенсы убыли в отпуск, а нам без них про всё это не догадаться...
Vladimir_S вне форума   Ответить с цитированием
Старый 26.07.2011, 21:00   #4 (permalink)
Yug7
Member
 
Регистрация: 26.07.2011
Сообщений: 33
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Создать файл для результатов работы программы

Море извинений за бестолково заданный вопрос. Уточняю : 1) Язык - Turbo Pascal.
2) " Запись" - число.
Yug7 вне форума   Ответить с цитированием
Старый 26.07.2011, 21:04   #5 (permalink)
Yug7
Member
 
Регистрация: 26.07.2011
Сообщений: 33
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

А еще я наврал в вопросе с числом под № 1 - это не 5,а 3.
Yug7 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 26.07.2011, 21:06   #6 (permalink)
Yug7
Member
 
Регистрация: 26.07.2011
Сообщений: 33
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

И еще. Спасибо за участие.
Yug7 вне форума   Ответить с цитированием
Старый 26.07.2011, 21:16   #7 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

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

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

Работа с текстовым файлом вас устроит?
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 26.07.2011, 21:31   #8 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Допустим, что все числа в файле записываются с новой строки и сам файл должен носить имя 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   #9 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Приведенную программу можно зациклить на выполнение вычислений до наступления события, например, до нажатия на кнопку Esc для выхода. Сделать это можно, добавив цикл с условием, используя команды перехвата нажатия клавиш.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 27.07.2011, 00:48   #10 (permalink)
Yug7
Member
 
Регистрация: 26.07.2011
Сообщений: 33
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Smile

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. Дальше алгоритмы повторяются. Количество переменных растет, в файл записываются все новые и новые члены прогрессии.
Еще больше тумана напустил ?
Yug7 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.