IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> файлы, ОЧЕНЬ НУЖНА ПОМОШЬ!!!!
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


задание : Дан файл, содержащий различные даты. Каждая дата – это число месяц и год. Найти самую раннюю дату.
Программа не работает. Помогите ,ПОЖАЛУЙСТА, найти ошибку.
На всякий случай прикреплю файл.


program zadanie2;
uses crt;
const god:array [1..12] of integer = (31,28,31,30,31,30,31,31,30,31,30,31);
godvisok: array [1..12] of integer =(31,29,31,30,31,30,31,31,30,31,30,31);
type zap = record
year,month,day:integer;
end;
tf= file of zap;
var f:tf;
minindex,i,n,k:integer;
result:file of longint;
min,y,sum,z: longint;
t:text;
data:array[byte] of zap;
massiv:array [1..100] of longint;
begin
clrscr;
sum:=0;
assign(t,'labfile\date.txt');
reset(t);

while not eof(t) do
begin
for i:=1 to 3 do
with data[i] do
begin
read(t, year);
read(t, month);
read(t, day);

z:=trunc(year div 4)*366+(year-trunc(year div 4))*365;{Ї®бзЁв «Ё Ј®¤л}
{ бзЁв Ґ¬ ¬Ґбпжл }
if year mod 4 = 0 then {if year visokosny}
for k:= 1 to month do
begin
sum:=sum+godvisok[k];
end
{end}
else {if year not visokosny}
for k:=1 to month do
begin
sum:=sum+god[k];
end;
{Є®­Ґж}
y:= z+sum+day;
massiv[i]:=y;
sum:=0;
writeln(massiv[i]:10);

end;

end;
readln;
close(t);
for i:=1 to 3 do
begin
min:=massiv[1];
for k:=1 to 3 do if min>=massiv[k] then minindex:=k;

end;
writeln(minindex);

with data[minindex] do begin
writeln(year);
writeln(month);
writeln(day);

end;

readln;


end.



Прикрепленные файлы
Прикрепленный файл  help.rar ( 1.45 килобайт ) Кол-во скачиваний: 164
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
if min>=massiv[k] then minindex:=k;

Этого делать недостаточно... Так попробуй:

min:=massiv[1]; { Перед циклом }
for i:=1 to 3 do
if min>=massiv[i] then begin
minindex:=i;
min := massiv[i];
end;


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


Не помогает. Почему-то все элементы массива становятся нулями
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость







var
f: text;
day,month,year: array [1..100] of integer;
date: array [1..100] of longint;
tmp,date_st: string;
i,datescount,ei,code: integer;
earliest: longint;

begin
assign(f,'date.txt');
reset(f);
i:=1;
while not eof(f) do
begin
readln(f,year[i],month[i],day[i]);
str(year[i],tmp); date_st:=tmp;
str(month[i],tmp);
if month[i]<10 then tmp:='0'+tmp; date_st:=date_st+tmp;
str(day[i],tmp);
if day[i]<10 then tmp:='0'+tmp; date_st:=date_st+tmp;
val(date_st,date[i],code);
inc(i);
end;
datescount:=i-1;
earliest:=date[1]; ei:=1;
for i:=2 to datescount do
if date[i]<earliest then begin earliest:=date[i]; ei:=i end;
writeln('Earliest date: ',day[ei],' ',month[ei],' ',year[ei]);
close(f);
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  -2  +


Не знаю, может тебе надо было другим способом делать, но я сделал так.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Вот так работает - проверено.
program zadanie2;
uses crt;
type
zap = record
year, month, day: integer;
end;

var
i, n: integer;
t: text;
data: array[byte] of zap;
min: zap;

begin
clrscr;
assign(t,'labfile\date.txt'); reset(t);

n := -1;
while not eof(t) do begin

inc(n);
with data[n] do begin { главное - чтобы у тебя в файле числа шли точно в таком же порядке: ГГ ММ ДД }
read(t, year);
read(t, month);
read(t, day);
readln(t);
end;

end;

min := data[0];
for i := 1 to n do
if (data[i].year < min.year) or
((data[i].year = min.year) and (data[i].month < min.month)) or
((data[i].year = min.year) and (data[i].month = min.month) and (data[i].day < min.day))
then min := data[i];

with min do begin
writeln(year);
writeln(month);
writeln(day);
end;
readln;
end.


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  -2  +


А чё файл не закрыл. Так не бывает smile.gif , надо закрывать.
А вообще у меня вроде меньше прога.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Срочно читать доки: я не обязан закрывать файл:

1) если он был открыт для чтения - потери данных не будет
2) при корректном завершении программы файл будет закрыт автоматически...

Насчет "меньше": это не значит "быстрее" - твой Val будет выполняться гораздо дольше.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  -2  +


Ну ты кабан!
Насчёт закрытия я шутил. cool.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


lol.gif это был комплимент?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  -2  +


Цитата(мисс_граффити @ 27.05.2007 18:20) *

lol.gif это был комплимент?


Да, мисс, это был комплимент.



Добавлено через 6 мин.
Цитата(volvo @ 27.05.2007 18:10) *

Насчет "меньше": это не значит "быстрее" - твой Val будет выполняться гораздо дольше.


Интересно, чё у тебя за комп.
Насколько дольше, братан?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 16:27
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name