C++ uppgift (kod löst men ej helt förstådd)

Permalänk

C++ uppgift (kod löst men ej helt förstådd)

Hej! Nybörjare i C++ och har någorlunda svårt för det. Har skrivit en kod som fungerar enligt de kriterier som gavs men en av frågorna tillhörande uppgiften kunde jag inte svarar på, hoppas därför någon kanske kan leda mig i rätt riktning gällande vad som menas.

Frågan: Vad händer i ditt program (testa om du vill) om du rapporterar in två tävlande med olika nummer
som har samma totaltid? Är det den första eller den andra som vinner? Varför?

Jag vet att det är den första deltagaren som vinner, men inte varför..

Del av koden som är relevant (vars indentering ser bättre ut i codeblocks..):

if (tid < minst)
{
minst = tid;
vinnar_nr = start_nr;
}

}
} while (start_nr > 0);

vinn_tim = minst/3600; //vinnande tiden är den minsta tiden delat i 3600 för att omvandla till sekunder
vinn_min = minst/60-vinn_tim*60; //minuterna till sekunder
vinn_sek = minst%60; //de sekunder som blir över från minuter

Permalänk
Medlem

if (tid < minst)

Den raden är anledningen...

Permalänk
Medlem

@FairyInBoots:

if (tid < minst) { minst = tid; vinnar_nr = start_nr; }

Detta kodstycke säger att du skall jämföra den tävlandes tid med den lägsta tiden som är registrerad och om den tävlandes tid är lägre så skall vinnar_nr uppdateras med dennes nummer. Om tiderna är lika så är den tävlandes tid inte lägre vilket gör att den nuvarande vinnaren kvarstår som vinnare.

Visa signatur

i7 8700k @ 4.7GHz | NH-L12 | ASUS Z270i ROG Strix Gaming | EVGA 1080 FTW | 32GB Corsair Vengeance 3000MHz | Samsung 970 Evo M.2 500GB, 840 250GB, Crucial MX500 2TB | Loque Ghost S1 | XB271HU | QX2710 | U2412M | U2719D | Filco Majestouch 2 MX Brown TKL

Permalänk
Medlem

Som jag förstår frågan och din kod är det den första som rapporteras in som vinner om båda har samma tid, detta för att koden som bestämmer vinnar_nr koller om tid<minst där tid är tiden för en tävlande och minst är nuvarande lefande tiden. Om båda har samma tid så kommer den andra att komma till denna kod och eftersom att tid inte är mindre än minst, utan likamed minst, så kommer det utvärderas som falskt och därför kommer inte vinnar_nr att ändras. Om du istället skulle ha skrivit tid <= minst så skulle det vara den andra och inte den första som vann.

Edit: var visst lite sen

Permalänk

@SanyaIV, @era909, @jensa86: Tackar så hemskt mycket alla tre för hjälpen med detta! Har inte riktigt något logiskt programmeringstänk än så såg inte anledningen även fast den stirrade mig rakt i ansiktet.. Allt gott!