Permalänk
Medlem

Nybörjare på programering C

Hejsan.
Säger direkt att jag läser en grundkurs i programmering C, och nu har jag försökt hitta en lösning på mitt övningsexempel i snart 1 vecka utan att komma någonstans.
Om det är jag som förbi ser svaret eller ej vet jag inte. Vore väldigt tacksam för hjälp.

Övningen lyder som följer:

Användaren ska mata in antalet sekunder och ska sen då få ett svar om hur många timmar, minuter och sekunder det är.

Det program som jag skrivit ser ut som följer:

#include <windows.h> #include <stdio.h> #include <conio.h> #include <math.h> int main() { float timmar, minuter, sekunder, totsek; //* beskriv vad som ska göras *// printf("Du ska i detta program ange ett antal sekunder och kommer då att få tillbaka det i timmar minuter och sekunder.\n\nAnge 0 för att avsluta\n\n"); //* Ange sekunder *// printf("Ange antalet sekunder: "); scanf("%f", &totsek); //* gör en loop för att avsluta med en 0 *// while (totsek!=0){ //* beräkna antalet timmar *// timmar = totsek/3600; minuter = totsek-(timmar*3600); sekunder = totsek-(timmar*3600)-(minuter*60); //* Återge resultaten *// printf("Enligt våra nogranna beräkningar är %f följande:\n", totsek); printf("Timmar: %f\n", timmar); printf("Minuter: %f\n", minuter); printf("Sekunder: %f\n", sekunder); printf("\n\n\n"); //* beskriv vad som ska göras *// printf("Du ska i detta program ange ett antal sekunder och kommer då att få tillbaka det i timmar minuter och sekunder.\n\nAnge 0 för att avsluta\n\n"); //* Ange sekunder *// printf("Ange antalet sekunder: "); scanf("%f", &totsek); } }

Ser ju att problemet ligger i min matematik och jag vet inte hur jag ska skriva för att den enbart ska räkna med heltal. Tusen tack för hjälpen på förhand

Permalänk
Medlem

Du bör använda modulus operation.
Den dividerat och ger dig resten. Tex 3652%3600=52.

EDIT: gör om timmar till en int istället.

Visa signatur

i7-8700k, 16GB, GTX 1070, Samsung 850 512 GB

Permalänk
Datavetare

Du är faktiskt rätt nära rätt svar trots allt.

Men testa att representera dina tal som heltal int i ställe för flyttal float, detta kommer även påverka de ställen du använder printf() och scanf() då formatsträngen är %f för float och %d för int.

Sedan ska du titta på din beräkning av minuter, hur många minuter går det på en timme och hur konverterar man mellan sekunder och minuter?

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Hedersmedlem
Skrivet av Hacki:

jag vet inte hur jag ska skriva för att den enbart ska räkna med heltal.

Till att börja med kan du testa att ändra till

int timmar, minuter, sekunder, totsek;

(samt ändra "%f" till "%d").

Permalänk
Medlem

Stort tack för hjälpen.
Så om jag fattat detta rätt så räknar inte bara heltal och det var där mitt fel satt. (förutom matematik felet för att räkna ut minuter.