Sondre Skrevet 20. februar 2010 Del Skrevet 20. februar 2010 Hei. I boken jeg leser har jeg fått dette som oppgave. Skriv et program som leser inn et antall sekunder og beregner hvor mange timer, minutter og sekunder dette er. (Hint: Bruk heltallsdivisjon.) Programmet skal skrives veldig simpelt med kun bruk av simple variabler (int, double), siden jeg ikke har lært mer enn det til nå. Jeg kan utregningen matematisk, men sitter bom fast mtp. på hvordan jeg skal sette opp programmet. Lenke til kommentar
morslilleole Skrevet 20. februar 2010 Del Skrevet 20. februar 2010 Skjønner ikke helt hva du mener med å sette opp programmet, men mitt tips er at du prøver deg frem frøst. Se om du f.eks får riktig antall timer, så riktig antall minutter osv... Og heller spørre om du har noen mer konkrete spørsmål. Lenke til kommentar
Sondre Skrevet 20. februar 2010 Forfatter Del Skrevet 20. februar 2010 Sette opp programmet som i å kode. Matematisk sett begynner man med å dele sekundene på 3600 for å få timer. La oss si det er 5200 sekunder som skal omgjøres. Da blir det 5200 / 3600 som gir 1,4444 timer. Dette er greit. Men problemet er å få minuttene og sekundene. For når man har 1,4444 så runder man ned til 1 og tar resten (altså 0,4444) og ganger med 60 for å få minutter. Det samme gjøres deretter med sekunder. Jeg sliter altså med å få ut tallene bak komma slik at jeg kan regne ut minuttene og sekundene. Lenke til kommentar
morslilleole Skrevet 20. februar 2010 Del Skrevet 20. februar 2010 (endret) Du kan bruke modulus-operatoren (%). Hvis du f.eks har 5200 sek og skriver noe ala iSek = 5200 % 3600 får du resten etter den største mulige heltallsdivisjonen. Altså det som blir igjen etter at du har delt 5200 på det høyeste heltatt som gir et produkt over null. I dette tilfelle blir det resten etter 5200 / 3200 som er 2000. Da kan du bruke det tallet til å regene ut minutter og sekunder. Håper du forstår forklaringen min=P EDIT: skrivefeil. Endret 20. februar 2010 av FluffyBeast Lenke til kommentar
Sondre Skrevet 20. februar 2010 Forfatter Del Skrevet 20. februar 2010 (endret) Tusen takk for svaret. Jeg brukte ikke modulus-operatøren, men pga. innlegget ditt fant jeg en annen løsning etter litt tid med hard tenking. Endret 20. februar 2010 av Sondre Lenke til kommentar
morslilleole Skrevet 20. februar 2010 Del Skrevet 20. februar 2010 Bare glad for å kunne hjelpe=) Forresten; regna du ut antall timer, og tok antall timer * 3600 for å finne utgangspunktet for å regne ut antall minutter? Ble bare litt nysgjerrig...=P Lenke til kommentar
Sondre Skrevet 21. februar 2010 Forfatter Del Skrevet 21. februar 2010 Her er koden. #include <iostream> using namespace std; int main() { double timer; double minutter; double sekunder; cout << "Skriv inn antall sekunder som skal omgjøres: "; cin >> sekunder; timer = sekunder / 3600; minutter = (timer - (int)timer) * 60; sekunder = (minutter - (int)minutter) * 60; cout << endl << (int)timer << " time(r), " << (int)minutter << " minutt(er) og " << (int)sekunder << " sekund(er)"; system("pause >nul"); } Lenke til kommentar
Hårek Skrevet 21. februar 2010 Del Skrevet 21. februar 2010 Prøv en gang til. Du vil få 0 på minutter og sekunder. X - X = 0 Lenke til kommentar
Sondre Skrevet 21. februar 2010 Forfatter Del Skrevet 21. februar 2010 (endret) Det funker helt fint her. Med 5200 sekunder som eksempel, blir timer - (int)timer det samme som 1,4444 - 1. Endret 21. februar 2010 av Sondre Lenke til kommentar
Hårek Skrevet 21. februar 2010 Del Skrevet 21. februar 2010 Ja, ser det nå. Det var bare en noe fremmed måte for meg å gjøre det på. Jeg ville ikke brukt double. Men resultatet ditt blir vel 39 sekunder, ikke 40? Lenke til kommentar
Sondre Skrevet 21. februar 2010 Forfatter Del Skrevet 21. februar 2010 Det kan sikkert virke fremmed, ja. Jeg er helt ny med programmering og dette var den eneste løsningen jeg klarte å komme frem til. Hvordan kan det gjøres uten å bruke double? Og ja, jeg får 39 sekunder. Er det feil? Lenke til kommentar
morslilleole Skrevet 21. februar 2010 Del Skrevet 21. februar 2010 Det skal være 40 sekunder, tror jeg. 5200(sek) er en hel time (3600 sek) 5200 - 3600 = 1600 sek 1600 sek er 26 hele minutter (26 * 60 = 1560) sek Da står du igjen med 40 sek. Skal du bruke bare int (som jeg anbefaler) må du gjøre utregningene annerledes. Som tidligere nevnt kan du bruke modulusoperatoren. (1600 % 60 vil gi 40 ) Lenke til kommentar
Sondre Skrevet 21. februar 2010 Forfatter Del Skrevet 21. februar 2010 Ah, det må være fordi int bare fjerner tallene bak komma istedet for å runde av. Skal prøve meg litt frem med modulus-operatøren. Lenke til kommentar
Sondre Skrevet 21. februar 2010 Forfatter Del Skrevet 21. februar 2010 Endelig! Jeg tror dette skal være rett. #include <iostream> using namespace std; int main() { int sek; cout << "Skriv inn antall sekunder: "; cin >> sek; int timer = sek / 3600; int rest = sek % 3600; int min = rest / 60; int sek2 = rest % 60; cout << endl << sek << " sekunder er lik " << timer << " tim(er), " << min << " minutt(er) og " << sek2 << " sekund(er)."; system("pause >nul"); return 0; } Lenke til kommentar
LostOblivion Skrevet 22. februar 2010 Del Skrevet 22. februar 2010 Endelig! Jeg tror dette skal være rett. #include <iostream> using namespace std; int main() { int sek; cout << "Skriv inn antall sekunder: "; cin >> sek; int timer = sek / 3600; int rest = sek % 3600; int min = rest / 60; int sek2 = rest % 60; cout << endl << sek << " sekunder er lik " << timer << " tim(er), " << min << " minutt(er) og " << sek2 << " sekund(er)."; system("pause >nul"); return 0; } Jeg ville gjort akkurat dette her selv...det er sånne ting som dette hvor modulo-operatoren er kjekk å bruke... Lenke til kommentar
Flin Skrevet 23. februar 2010 Del Skrevet 23. februar 2010 Øving i pros.obb ser jeg. Lenke til kommentar
Sondre Skrevet 23. februar 2010 Forfatter Del Skrevet 23. februar 2010 Øving i pros.obb ser jeg. Hva? Lenke til kommentar
Alaka Skrevet 27. februar 2010 Del Skrevet 27. februar 2010 Øving i pros.obb ser jeg. Hva? Prosedyre- og objektorientert programering på NTNU Gjenkjenner øvinga selv Lenke til kommentar
Sondre Skrevet 27. februar 2010 Forfatter Del Skrevet 27. februar 2010 Jeg går ikke på NTNU, men det er fullt mulig det brukes samme bok der. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå