Помощь - Поиск - Пользователи - Календарь
Полная версия: Записи и динамика
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
vi-rus
Вот 2 задачки :
1 ) Посчитать дату за m дней до текущей.
Помогите, пожалуйста, исправить. Программа неправильно считает високосный год

progrAM DFHSDJFKSD;
USES CRT;
type
Date=record
Day: integer;
Month: integer;
Year: longint;
end;
Mon=array[1..12] of word;
const
MYV: Mon=(31,29,31,30,31,31,30,31,30,31,30,31);
MYP: Mon=(31,28,31,30,31,31,30,31,30,31,30,31);
var
Date1, DateNext, DateBefore:Date;
m,k,y,plus,i,j:integer;
d,d1:longint;
begin
clrscr;
textcolor(11);
textcolor(15);
writeln;
textcolor(12);
writeln('Vvedite daty');
writeln;
textcolor(15);
with Date1 do
begin
write('Day: ');
readln(Day);
write('Month: ');
readln(Month);
write('Year: ');
readln(Year);
write('Vvedite m: ');
readln(m);



d:=Year*365;
d:=d+(Year div 4);

for i:=1 to Month do
begin
if Year mod 4=0 then
begin
k:=MYV[i]+k;
end
else
begin
k:=MYP[i]+k;
end;
end;
d:=d+k;
d:=d+Day;
d1:=d+m;
while d1>=365 do
begin
y:=y+1;
if y mod 4<>0 then
begin
d1:=d1-365;
end
else
begin
d1:=d1-366;
end;
end;
i:=1;


if y mod 4=0 then
begin
while d1>MYV[i] do
begin
d1:=d1-MYV[i];
i:=i+1;
end;
d1:=d1-2;
end
else
begin
while d1>MYP[i] do
begin
d1:=d1-MYP[i];
i:=i+1;
end;

end;


d1:=d1;
i:=i-1;
writeln(d1);
writeln(i);
writeln(y);
readln;

end;
end.



2-я программа: помогите дописать : Составить программу, которая вставляет в список temp за первым вхождением элемента Е все элементы списка temp2, если Е входит в temp.

program task3;
uses
crt;
type
pl = ^list;
str = string[7];

list = record
field : str;
next : pl;
end;

var
e:str;
first,temp,temp2:pl;
begin
highvideo;
clrscr;
{}
new(temp);
first := nil;
temp := first;
{INPUT}
writeln('Type temp ( if u want to finish type END)');
readln(temp^.field);
repeat
new(temp^.next);
temp := temp^.next;
readln(temp^.field);
until temp^.field = 'END';

writeln('Type temp2 ( if u want to finish type END)');
readln(temp2^.field);
repeat
new(temp2^.next);
temp := temp2^.next;
readln(temp2^.field);
until temp2^.field = 'END';

temp := nil;
temp := first;
writeln('Type e-element');
readln(e);
{OUTPUT}
temp^.next := first^.next;

while (temp^.field <> 'END') do
begin
if temp^.field = e then
begin
writeln(temp^.field);
temp := temp^.next^.next;
end
else
begin
writeln(temp^.field);
temp := temp^.next;
end;
end;
writeln('Press any key.');
readkey;
end.


volvo
Цитата
Программа неправильно считает високосный год
Естественно... Високосный год - не только тот, номер которого делится на 4 нацело... Есть еще условия... Вот полная проверка на високосность года:

if ((Year mod 4) = 0) and not (((Year mod 100) = 0) and ((Year mod 400) <> 0)) then { високосный }
else { не високосный }

Переделывай...

Добавлено через 1 мин.
А вторую программу с дословно тем же условием я уже выкладывал... Не думаешь ли ты, что я буду отлаживать твое творение?
vi-rus
Подскажи, пожалуйста ссылку, не могу найти unsure.gif
vi-rus
Не получается исправить задачку с датами. Сама программа работает неправильно. Как исправить - не знаю..... unsure.gif
vi-rus
Volvo, дай пожалуйста ссылку на задачу по динамике. Никак не могу найти

Добавлено через 11 мин.
Помогите ПОЖАЛУЙСТА со второй задачей. ОЧЕНЬ нужно сделать . ПОЖАЛУЙСТА!!!!!!!!!!!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.