C++ uppgift, ideér?
Hejsan!
Jag har fått i uppgift från skolan att skapa en kod.
"Den här uppgiften handlar om att skriva ett program som läser in startnummer, starttid och
måltid för en godtycklig följd av tävlande i en idrottstävling. Startnummer för en tävlande
kan vara ett heltal större än noll (0). Start- och måltid anges som tre heltal: timme, minut
och sekund. De tävlande kan starta tävlingen vid olika tider och går förstås i mål på olika
tider. Den tävlande som har kortast tid mellan start och mål vinner."
Då har jag gjort såhär, koden kan räkna ut tiden för startnumret, och skriva ut allting rätt. Det enda som jag har problem med är att när man skriver in mer än ett startnummer, så kommer den alltid att utse det sist inmatade startnumret som vinnare. Oavsett om det sist inmatade startnumret har längst tid.
Här är koden
#include <iostream>
using namespace std;
int main(){
int vinnarsek, vinnarmin, vinnartim, startsek, startmin, starttim, malsek, malmin, maltim,
startnummer, vinnarnummer = 0, starttid, maltid, tid, vinnare=0, antal=0; // Variabler som används inom koden
const int dygn = 24*60*60; // En konstant variabel som räknar antal sekunder på ett dygn
cout << "Startnummer?: "; // Ber användaren att mata in startnummer på tävlande
cin >> startnummer; // Sparar det numret i variabeln 'startnummer'
do { // Funktionen 'do... while'
antal++; // Lägger till en i 'antal' för varje gång användaren matar in ett snartnummer
cout << endl;
cout << "Skriv in starttiden: "; // Ber användaren att mata in en starttid för startnumret
cin >> starttim>>startmin>>startsek; // Sparar de värden som användaren har matat in i de olika variablerna
starttid = starttim*3600 + startmin*60 + startsek; // Räknar ut starttiden
cout << endl;
cout << "Skriv in m\x86ltid: "; // Ber användaren att mata in en måltid för startnumret
cin >> maltim>>malmin>>malsek; // Sparar de värden som användaren har matat in i de olika variablerna
maltid = maltim*3600 + malmin*60 + malsek; // Räknar ut måltiden
cout << endl;
if (starttid < maltid){ // Kollar om starttiden är mindre än måltiden
tid = maltid - starttid; // Om starttiden Är mindre än måltiden, så kommer tiden att bli måltiden - starttid
}
else if (starttid > maltid){ // Kollar om tiden går över 00 00 00, midnatt, dygnspassage
tid = maltid + (dygn - starttid); // Om starrttiden Är större än måltiden, så kommer tiden att bli måltid + (dygn - starttid)
}
vinnare = vinnare + tid;
if (tid < vinnare);{ // ta inte bort detta semikolon. Kollar om tiden för detta startnummer är det minsta
vinnare = tid; // Om tiden är mindre än minst, så blir minst tiden
vinnarnummer = startnummer; // Vinnaren blir det startnummer för den kortaste tiden
}
cout << "Skriv in startnummer: "; // Ber användaren fortsätta mata in startnummer för att ta med en till tävlande i loppet, skriv 0 för att gå vidare
cin >> startnummer; // Sparar startnumret i variabeln "startnummer
} while (startnummer>0); // Fortsättningen av do... while loopen. Loopar koden så länge startnummer är mer än 0
// Räknar ut vinnartiden
vinnartim = tid/3600;
vinnarmin = tid/60 - vinnartim*60;
vinnarsek = tid%60;
// Skriver ut resultaten/statistiken
cout << endl;
cout << endl;
cout << endl;
cout << "Vinnaren \x84r: nr. " << vinnarnummer << endl;
cout << endl;
cout << "Med en tid p\x86: " << vinnartim << " timmar " << vinnarmin << " minuter " << vinnarsek << " sekunder" << endl;
cout << endl;
cout << "Antal talvande: " << antal << endl;
cout << endl;
cout << "Programmet avslutas";
cout << endl;
return 0;
}
Några ideér/tips på hur man kan få den att utse det startnummer med kortast tid som vinnare?