Kezdőoldal » Számítástechnika » Programozás » Hogyan tudnám megcsinálni?...

Hogyan tudnám megcsinálni? Milyen parancs kell ide?

Figyelt kérdés
Az lenne a kérdésem (most tanulok otthon egyedül programozást nagyon az elején vagyok) hogy az újonnan elkezdett programom hogyan fejezhetném be. 2 időpont közti időt szeretném vele kiszámolni de órák és percek túl könnyűek voltak igy bele akartam tenni évet is. A szökőévet meg is oldottam már de a hónapoknál a 31 és 30 napok váltakozást sehogy sem tudom megoldani. gondoltam arra, hogy megadok változóknak nap számokat és a beolvasott hónap számot meg párosítom vele(pl beírja valaki hogy 8 hónap vagyis csak a 8azt kell akkor kikeresi hogy a 8 hónap az hány napos csak nem tudok ilyen parancsról hogy keresés), szóval valahogy igy próbáltam megoldani de nem jött össze. kérlek segítsetek ha tudtok.

2016. aug. 11. 11:39
 1/10 A kérdező kommentje:
Elfelejtettem írni, hogy free pascalt használok.
2016. aug. 11. 11:40
 2/10 SimkoL ***** válasza:
Simán kivonod a régebbi időpontot a korábbiból, nem kell törődnöd mással. A TDateTime típusú változók az időpontot egy Double típusú változóban tárolják - 1899.12.30 óta eltelt idő, legalábbis Delphiben - Az egész rész a napok, a törtrész pedig az órák. Utána már amivel akarod - DecodeDateTime, DateTimeToStr... - átalakítod a neked megfelelő formátumra és kiíratod.
2016. aug. 11. 12:42
Hasznos számodra ez a válasz?
 3/10 tabaki ***** válasza:

@SimkoL:

Gyanúm, hogy Kérdező a kész lehetőségeket még nem használja, hanem maga akarja felépíteni a rendszert alapelemekből.


@Kérdező:

Nem egészen értem, hogy mit csinálsz, de első blikkre az tűnik logikusnak, hogy használj tömböt, és a beolvasott hónapszámmal indexeld.

Például, csak ez a rész, nagyon leegyszerűsítve valahogy így:


var

melyikhonap: byte;

honap: array[1..12] of byte;


begin


// feltöltöd a tömb elemeit a napok számával:

honap[1] := 31;

honap[2] := 28;

honap[3] := 31;

.

.

.

// stb.


readln(melyikhonap);

writeln('Ebben a hónapban ', honap[melyikhonap], ' nap van.');


end.


Természetesen ez finomítandó, pl. szökőévekben honap[2] értékéhez egyet hozzá kell adnod a kiíráskor, a beolvasás hibalehetőségeit ki kell szűrnöd, stb.

Szerintem hasznos lenne, ha a kész programodat feltennéd valahova (mondjuk [link] ), hátha még tudunk tanácsokat adni.

2016. aug. 11. 13:10
Hasznos számodra ez a válasz?
 4/10 tabaki ***** válasza:

Ööö... hoppá, szánom-bánom, SimkoL, a kapkodásban elfeledkeztem a szépészeti javaslataidról.

Gyorsan a vonatkozó linked:

[link]


Tehát -- annak ellenére, hogy a pascal nem érzékeny a kis- és nagybetűk közti különbségre, érdemes megszokni a korrekt használatukat, mert később más nyelvekben ez majd életbevágó is lehet. Vagyis korrigálva:


ReadLn(melyikhonap);

WriteLn('Ebben a hónapban ', honap[melyikhonap], ' nap van.');

2016. aug. 11. 13:21
Hasznos számodra ez a válasz?
 5/10 tabaki ***** válasza:

Egy (valamilyen szinten) működőképes változat:


program napok_szama;


var

melyik_ev : integer;

melyik_honap : byte;

honap : array[1..12] of byte =

      (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);


begin

Write('Melyik évről van szó? ');

ReadLn(melyik_ev);

Write('Melyik hónapra vagy kíváncsi? ');

ReadLn(melyik_honap);

Write(melyik_ev, '. év ', melyik_honap, '. hónapjában ');

if (melyik_honap = 2) and (melyik_ev mod 4 = 0) then

      Write(honap[melyik_honap] + 1)

else

      Write(honap[melyik_honap]);

WriteLn(' nap van.');

end.

2016. aug. 11. 13:59
Hasznos számodra ez a válasz?
 6/10 SimkoL ***** válasza:

Szánom-bánom elfogadva :), de hadd javítsak picit egy függvénnyel:


function szokoev(ev : integer) : Boolean;

begin

{Szökőévek a következők: minden néggyel osztható év,

kivéve a százzal is oszthatókat. Szökőévek viszont a

400-zal osztható évek. Vagyis a századfordulók évei

közül csak azok szökőévek, amelyek 400-zal is oszthatók.}

szokoev := (ev mod 4 = 0) and (ev mod 100 <> 0) ;

if ev mod 400 = 0 then szokoev := True;

end;

2016. aug. 11. 14:04
Hasznos számodra ez a válasz?
 7/10 tabaki ***** válasza:
Na, ez volt az egyik, ami miatt kiérdemelte a „(valamilyen szinten)” minősítést, a másik meg persze a bevitel teljes kezeletlensége. De nem akartam túlbonyolítani, hogy ne vesszen el szem elől maga az indexelés. Ha Kérdezőt még érdekli, gondolom, lesz még alkalmunk a csiszolgatásra.
2016. aug. 11. 14:14
Hasznos számodra ez a válasz?
 8/10 A kérdező kommentje:
Köszönöm a válaszokat, bár kicsit másra gondoltam, ezt mindjárt meg is mutatom :D [link] ez lett volna, csak úgy, hogy évet, hónapot, és napot is tud kezelni.
2016. aug. 11. 15:09
 9/10 A kérdező kommentje:
Az érték az másodperc, csak elfelejtettem átírni.
2016. aug. 11. 15:11
 10/10 tabaki ***** válasza:

Én nem akartam megírni a programodat, csak egy jelentéktelen részfeladatára, a hónapokban lévő napok számának lekérdezésére írtam egy javaslatot.


A képedből nem derül ki a két időpont közötti különbség kiszámolásának módja, érdekelne, hogy erre mi az elképzelésed.

2016. aug. 11. 22:19
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!