C++ uppgift|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
C++ uppgift
ninne
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 27
Member Since:
August 4, 2005
sp_UserOfflineSmall Offline
1
January 2, 2006 - 6:15 pm
sp_Permalink sp_Print

Jag skulle behöva hjälp med en C++ uppgift, för ett skolarbete.
Men jag vet inte hur jag ska göra...

man ska skriva in ett antal sekunder, och sen visa det i
dagar, timmar, minuter och sekunder.
Ska se ut t.ex. så här :

Antal Sekunder : 31600000.
31600000 sekunder = 365 dagar, 46 minuter, 40 sekunder.

och då ska man använda symboliska konstanter för att representera antalet timmar på en dag, antal minuter på en timme osv.

Men jag vet inte hur man gör dom symboliska konstanterna.
Om någon vet, skriv gärna då 🙂

jonaz
Kommer du hit ofta?
Medlem
Forum Posts: 940
Member Since:
May 8, 2001
sp_UserOfflineSmall Offline
997854
January 2, 2006 - 7:41 pm
sp_Permalink sp_Print

const int SEC_IN_MIN = 60;

Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB

ninne
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 27
Member Since:
August 4, 2005
sp_UserOfflineSmall Offline
997914
January 2, 2006 - 10:23 pm
sp_Permalink sp_Print

Jag får ändå inte till det , hur ska jag göra
om jag tar :

const int SEC_IN_MIN = 60;
int sekunder;
cut << " cin >> sekunder; /1000
cout << /1000 sekunder = 16 minuter

/Men sen, vad ska jag göra sen för att få ut att 1000 sekunder är 16 minuter?

svensk-hjälte
It’s a first time for everybody
Medlem
Forum Posts: 9
Member Since:
February 5, 2004
sp_UserOfflineSmall Offline
997926
January 2, 2006 - 10:42 pm
sp_Permalink sp_Print

kan säga att du bör använda modulus:

Exempel:

5%2= 1

eller

40%10=0

sedan får du fundera på resten, tänker inte ge dig hela lösningen

jonaz
Kommer du hit ofta?
Medlem
Forum Posts: 940
Member Since:
May 8, 2001
sp_UserOfflineSmall Offline
997955
January 2, 2006 - 11:35 pm
sp_Permalink sp_Print

Kombinera modulus som tidigare inlägg tipsade om med heltalsdivision:

int resultat = (int)tal1/tal2;
Exempel: tal1=10, tal2=3, resultat=3

Det man gör med (int) är en explicit typomvandling vilket helt enkelt betyder att man berättar för kompilatorn att man är medveten om att man kan förlora information men skiter i det. Om man inte gör typomvandligen klagar kompilatorn eftersom resultatetvaret ju kan bli ett flyttal vilket inte passar så bra att lagra i en int... Blir resultatet ett flyttal så kapas decimaldelen

OBS! Jag har inte testat koden så jag kan inte garantera att den är 100% felfri trots att det bara är en rad. Jag har inte kodat C/C++ på ett bra tag.

Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB

ninne
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 27
Member Since:
August 4, 2005
sp_UserOfflineSmall Offline
998169
January 3, 2006 - 4:49 pm
sp_Permalink sp_Print

Ok, jag får till allt nu, men ända problemet jag har nu är att, jag får rätt antal dagar, men sen får jag flera tusen timmar och minuter. och nu har jag ingen aning igen.
hur ska göra för att inte få ut över 60 ??

jonaz
Kommer du hit ofta?
Medlem
Forum Posts: 940
Member Since:
May 8, 2001
sp_UserOfflineSmall Offline
998281
January 3, 2006 - 9:24 pm
sp_Permalink sp_Print

ninne wrote: Ok, jag får till allt nu, men ända problemet jag har nu är att, jag får rätt antal dagar, men sen får jag flera tusen timmar och minuter. och nu har jag ingen aning igen.
hur ska göra för att inte få ut över 60 ??

Verkar som om du inte alls får till allt... 😉 Visa vad du gjort så kan jag kanske hjälp dig utan att lösa hela uppgiften åt dig.

Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB

ninne
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 27
Member Since:
August 4, 2005
sp_UserOfflineSmall Offline
998296
January 3, 2006 - 10:14 pm
sp_Permalink sp_Print
    
const int SEC_IN_MIN = 60;
const int MIN_IN_HOUR = 60;
const int HOUR_IN_DAY = 24;
long sek, min, hour, day;
cout << "Antal sekunder :";
cin >> sek;
min = sek / SEC_IN_MIN % sek;
hour = min / MIN_IN_HOUR % min ;
day = hour / HOUR_IN_DAY % hour ;
cout<<sek<<" sekunder = "<<day<<" dagar, "<<hour<<" timmar, "<<min<<" minuter."<<endl << endl;



Jag vet inte om jag är helt ute och cyklar, men har fått till dagar iaf :S.
Och har kanske gjort lite onödiga grejor i den :), men det var bara medans
jag testade på lite.

jonaz
Kommer du hit ofta?
Medlem
Forum Posts: 940
Member Since:
May 8, 2001
sp_UserOfflineSmall Offline
998363
January 4, 2006 - 12:50 am
sp_Permalink sp_Print

Ok, här kommer lite tips:

1. Ordningen är bra, minuter, timmar, dagar och sist sek (sek har du har hoppat över i din kod)

2. Du räknar fel, om man har t.ex. 3661 sekunder (1 tim 1 min 1 sek) och vill räkna ut antal minuter så börjar du rätt sek / SEC_IN_MIN (61 min) men sen använder du sek som modulus vilket är fel... Lösningen får du räkna ut själv 😉

3. Ett stort fel är att du räkar hela vägen. Om du använder modulus i samma sats som divisionen så får du rätt antal minuter men du kan inte använda dessa i nästa steg när du ska räkna ut antal timmar eftersom du redan (när du gör rätt) har skalat av min över 60 (<- tips). När du då använder minuterna (1) så är det svårt att få några timmar från det. 1/60 är ju noll. Dock funkar 61 / 60 bättre vilket ju bli ett. Det du kan göra är att först göra heltalsdivisionen för alla värden (ej sek) för att efteråt använda modulus (behövs ej för dagar eftersom det är den största enheten). Ett alternativ till att dela upp det är ju att alltid utgå från sekunder: t.ex. hour = sek / SEC_IN_MIN / MIN_IN_HOUR % då kan du räkna ut min på ditt sätt eftersom du inte använder minuter för att räkna ut timmar.

Hoppas att du förstår något av detta (och inte blir irriterad för att jag inte ger hela svaret på en gång)!?

Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB

ninne
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 27
Member Since:
August 4, 2005
sp_UserOfflineSmall Offline
998446
January 4, 2006 - 10:06 am
sp_Permalink sp_Print

Tack så mycket, förstår nu vad jag ska göra 🙂

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 1030
Currently Online:
Guest(s) 363
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL