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

Хех, судя по вашему листингу, вы записываете в файл 2 введенные с клавиатуры значения переменных s и n, причем совсем без изменения числовых данных
Навскидку, ряд грубейших ошибок:
Вы не определили массив, в который будете считывать данные из файла, хотя тип для него прописали.
Цитата:
Сообщение от gazon Посмотреть сообщение
fl=file of city;
пишется в разделе переменных, а не до него
Цитата:
Сообщение от gazon Посмотреть сообщение
type city=record
name:string;
chis:real;
end;
Вы пишете, что численность населения всегда целое число, а определяете переменную для нее вещественной, хотя на рассчеты это не повлияет, скорее уж на форму вывода числа.
Цитата:
Сообщение от gazon Посмотреть сообщение
s:string;
n:real;
Совершенно непонятно, чем вы руководствовались, определяя эти переменные для хранения считанных из файла данных, вы же уже определили свой тип, так создайте массив вашего типа и считывайте данные непосредственно в него.
Цитата:
Сообщение от gazon Посмотреть сообщение
reset(f);
while not eof(f) do
begin
read(s,n);
end;
Исходя из вышесказанного, использование переменных s и n бессмысленно, тем более так, как вы прописали, то есть в данном цикле вы просто запрашиваете ввод с клавиатуры, так как в команде read(s,n) вы не ссылаетесь на файловую переменную как на источник, следовательно, программа будет считывать данные из стандартного потока ввода, то есть с клавиатуры. Правильнее будет так read(f,s,n), хотя лучше все же использовать массив типа city.
Цитата:
Сообщение от gazon Посмотреть сообщение
assign(f2,'d:\lab\4\file2.txt');
rewrite(f2);
write(f2,s,n);
Это явно нужно поместить в другое место, а то вы открываете результирующий файл по перезаписи и вносите в него последние значения переменных s и n, даже не увеличивая числовое значение.
Предлагаю строки
Цитата:
Сообщение от gazon Посмотреть сообщение
assign(f2,'d:\lab\4\file2.txt');
rewrite(f2);
поместить до цикла, а
Цитата:
Сообщение от gazon Посмотреть сообщение
write(f2,s,n*1.05);
в цикл, чтобы данные сразу после чтения передавались во второй файл. Естественно, опять повторюсь, что считывать данные из файла лучше в массив, причем наилучшим вариантом будет динамический массив, то есть с изменяемой размерностью.
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

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