Predovšetkým, osekal som ti to od chýb. Ak máš premennú definovanú v rozsahu 1..12, nikdy nebude platiť podmienka [c]if(dnes.mesiac > 12)...[/c], takže tam som logiku trochu upravil, pozri si to.
Kód:
program datumy;
type datum=record
den:1..31;
mesiac:1..12;
rok:word;
end;
var dnes:datum;
poc_dni:byte;
begin
writeln('Zadaj datum dd.mm.rrrr');
readln(dnes.den,dnes.mesiac,dnes.rok);
case dnes.mesiac of
1,3,5,7,8,10,12: poc_dni:=31;
2: poc_dni:=28;
else
poc_dni:=30;
if((dnes.den+7)<=poc_dni) then
dnes.den:=dnes.den+7
else begin
dnes.den:=dnes.den+7-poc_dni;
if(dnes.mesiac<12) then
inc(dnes.mesiac)
else
dnes.mesiac:=1;
dnes.rok:=dnes.rok+1;
end;
end;
writeln('O tyzden bude: ',dnes.den,'.',dnes.mesiac,'.',dnes.rok,'.');
readln;
end.
...ani tak to nefunguje, niekde tam bude nejaká logická chyba, bohužiaľ ale nemám viac času.
Mimochodom vôbec napríklad nepočítaš s prestupným rokom. Odporúčam nájsť nejaký dátový typ priamo na dátum na ktorom by mohla fungovať operácia
pripočítaj(x dní), aj hnusný pascal by mohol niečo také obsahovať.