Pascal - praca s datumami - pomoze niekto ? pls - do 14.5.
Pascal - praca s datumami - pomoze niekto ? pls - do 14.5.
Neviete niekto pomoct ?
Potrebujem pomoct s programom v pascale s tymto zadanim:
"Napiste program, ktory dokaze spocitat pocet dni, ktore uplynuli medzi zadanymi datumami a vypisat den v tyzdni pripadajuci na zadany datum."
dakujem
spero
Potrebujem pomoct s programom v pascale s tymto zadanim:
"Napiste program, ktory dokaze spocitat pocet dni, ktore uplynuli medzi zadanymi datumami a vypisat den v tyzdni pripadajuci na zadany datum."
dakujem
spero
Kód: Vybrať všetko
char d[7][9]={"Pondelka","Utorka","Stredy","Stvrtka","Piatka","Soboty","Nedele"};
int dni[11]={31,28,31,30,31,30,31,31,30,31,30};
int den[2],mes[2],pr,dr,i;
main(){
ini: clrscr();
printf("Zadaj den a mesiac zaciatku: ");scanf("%i%i",&den[0],&mes[0]);
printf("Zadaj den a mesiac konca: ");scanf("%i%i",&den[1],&mes[1]);
if(mes[0]>mes[1]){clrscr();goto ini;};
pr+=den[0];
for(mes[0]-=2;mes[0]>=0;mes[0]--){
pr+=dni[mes[0]]; };
dr+=den[1];
for(mes[1]-=2;mes[1]>=0;mes[1]--){
dr+=dni[mes[1]]; };
printf("uz uplynulo %i dni",dr-pr);
pr=(pr-1)%7;dr=(dr-1)%7;
printf("\n od %s do %s",d[pr],d[dr]);
}:..:ale pondelok 1.1. a kedze je 2007 tak nepriestupny rok.
Velmi pekne dakujem, len sa chcem este spytat, ci to v zmysle toho zadania nemalo fungovat pre hociktory rok (teda aj s udajom roku pri zadavani) ?
... a hodil by sa aj komentar za kodom
, ja z toho musim este urobit analyzu premennych a strukturogram a do zajtra odovzdat 
Nemozes do toho kodu doplnit este nejaky komentar, musim to tam mat a z niektorymi vecami mam dost problem (hlavne v spodnej casti).
Napriklad toto:
for q:=0 to 1 do begin
i:=0;
poc[q]:=poc[q]+den[q];
while(mes[q]>1) do begin dec(mes[q]);
if(mes[q]=3) then poc[q]:=poc[q]-2;
poc[q]:=poc[q]+dni;
if(i=0) then inc(i) else dec(i);
end;
end;
dik.
//audiotrack: používaj tlačítko uprav na editáciu vlastných príspevkov aby si nemal viac postov za sebou
... a hodil by sa aj komentar za kodom
Nemozes do toho kodu doplnit este nejaky komentar, musim to tam mat a z niektorymi vecami mam dost problem (hlavne v spodnej casti).
Napriklad toto:
for q:=0 to 1 do begin
i:=0;
poc[q]:=poc[q]+den[q];
while(mes[q]>1) do begin dec(mes[q]);
if(mes[q]=3) then poc[q]:=poc[q]-2;
poc[q]:=poc[q]+dni;
if(i=0) then inc(i) else dec(i);
end;
end;
dik.
//audiotrack: používaj tlačítko uprav na editáciu vlastných príspevkov aby si nemal viac postov za sebou
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
no nechem spochybňovať juhov algoritmus, ale pri tej úprave čo tam má sa mi to nechce ani pozerať.. skús toto (nerobil som ho ja, ale vyzerá že tam nie je chyba a je prehladnejší)
Kód: Vybrať všetko
program dni;
uses crt;
var mesiace: array [1..12] of integer;
i,den,mesiac,mesiacc,denn,pocet,pocet_druhy,rozdiel,ktory_den: integer;
begin
clrscr;
mesiace[1]:=31;
mesiace[2]:=28;
mesiace[3]:=31;
mesiace[4]:=30;
mesiace[5]:=31;
mesiace[6]:=30;
mesiace[7]:=31;
mesiace[8]:=31;
mesiace[9]:=30;
mesiace[10]:=31;
mesiace[11]:=30;
mesiace[12]:=31;
writeln('Zadajte prvy datum');
write('Mesiac (1-12): '); readln(mesiac);
write('Den(1-30/31): '); readln(den);
writeln;
writeln('Zadajte druhy datum');
write('Mesiac (1-12): '); readln(mesiacc);
write('Den(1-30/31): '); readln(denn);
writeln;
if mesiac>1 then
for i:=1 to (mesiac-1) do pocet:=pocet+mesiace[i];
if mesiacc>1 then
for i:=1 to (mesiacc-1) do pocet_druhy:=pocet_druhy+mesiace[i];
pocet:=pocet+den;
pocet_druhy:=pocet_druhy+denn;
if pocet > pocet_druhy then rozdiel:=pocet-pocet_druhy
else rozdiel:=pocet_druhy-pocet;
writeln('Medzi datumom ',den,'.',mesiac,'. a datumom ',denn,'.',mesiacc,'. ubehlo ',rozdiel,' dni.');
while (pocet > 7 ) do
pocet:=pocet-7;
if pocet = 1 then writeln ('Prvy datum pripada na pondelok');
if pocet = 2 then writeln ('Prvy datum pripada na utorok');
if pocet = 3 then writeln ('Prvy datum pripada na stredu');
if pocet = 4 then writeln ('Prvy datum pripada na stvrtok');
if pocet = 5 then writeln ('Prvy datum pripada na piatok');
if pocet = 6 then writeln ('Prvy datum pripada na sobotu');
if pocet = 7 then writeln ('Prvy datum pripada na nedelu');
while (pocet_druhy > 7 ) do
pocet_druhy:=pocet_druhy-7;
if pocet_druhy = 1 then writeln ('Druhy datum pripada na pondelok');
if pocet_druhy = 2 then writeln ('Druhy datum pripada na utorok');
if pocet_druhy = 3 then writeln ('Druhy datum pripada na stredu');
if pocet_druhy = 4 then writeln ('Druhy datum pripada na stvrtok');
if pocet_druhy = 5 then writeln ('Druhy datum pripada na piatok');
if pocet_druhy = 6 then writeln ('Druhy datum pripada na sobotu');
if pocet_druhy = 7 then writeln ('Druhy datum pripada na nedelu');
readkey;
end.V prvom rade by som zmenil inicializáciu poľa mesiace na:(podľa mňa je to tak krajšie)
Ešte by tam bolo vhodné pridať podporu pre priestupné roky.
Kód: Vybrať všetko
mesiace: array [1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);Ešte by tam bolo vhodné pridať podporu pre priestupné roky.