Funderar lite på 'ordna(...)':
Kod:
// ordnar talen i följd, så att man får rätt ordning även om man väljer det stora talet först
Kommentaren är ju lite tvetydig, men handlar det om att tal1 ska vara mindre än tal2?
Isf är ju fyra variabler overkill...
Är det inte bara att skicka in pekare till tal1 och tal2, plocka ut resp. värde, göra jämförelse och därefter göra en 'switcharoo' mellan de två variablerna om så behövs?
Eller missar jag något fundamentalt?
Pseudo:
Kod:
void ordna(int* p_tal1, int* p_tal2)
{
if(*p_tal1 > *p_tal2) // om innehållet i p_tal1 är större än p_tal2
{
int* p_buffer = p_tal1; // mellanlagra pekaradressen för tal1
p_tal1 = p_tal2; //switcharoo, p_tal1 pekar nu på p_tal2 (alltså det minsta talet)
p_tal2 = p_buffer; //switcharoo, p_tal2 pekar nu på p_tal1 (alltså det största talet)
}
}
Anropas således med:
Kod:
ordna(&tal1, &tal2); // alltså adressen till resp. variabel
Har inte skrivit en rad c på 10 år så det finns risk för att jag förvirrat mig med pekararitmetiken -- har inte min Kernigan/Ritchie tillgänglig för konsultation.
-ed-
Såg att denna lösning föreslogs i spoiler, på föregående sida.
Så kan det gå om man inte läser ordentligt.