Uppgift: Fråga användare efter tal och skriv ut summa och medelvärde

Permalänk
Medlem

Alltså din kod fungerar ju, med några ändringar som nämnts i tråden, #include <climits> och att du behöver ha en brytpunkt i slutet av koden.

Här har jag tagit din kod i första inlägget och lagt till det som nämnts i tråden. Jag har även flyttat ut "cout << "Skriv in tal" << endl;" ur loopen så att det inte skrivs ut varje gång.

#include <iostream> #include <climits> using namespace std; int main(int argc, char *argv[]) { int max = INT_MIN; int nMax = INT_MIN; int min = INT_MAX; int sum = 0; int antal = 0; int inp = 0; cout << "Skriv in tal" << endl; while (true) { cin >> inp; if (inp == 0) { break; } if (inp > max) { nMax=max; max = inp; } if (inp > nMax && inp < max) { nMax = inp; } if (inp < min) { min = inp; } sum += inp; antal++; } cout << "Summa: " << sum << endl; cout << "Medelvärde: " << (double)sum/(double)antal << endl; cout << "Störst tal: " << max << endl; cout << "Näst störst tal: " << nMax << endl; cout << "Minst tal: " << min << endl; system("PAUSE"); return EXIT_SUCCESS; }

När jag kör den och skriver in siffrorna (ett tryck på enter efter varje siffra) 1, 2, 3, 4, 5 och avslutar med 0 så blir resultatet detta.

Alltså precis vad som efterfrågades i uppgiften, det är dock inte "uppbyggt av ett antal funktioner." men det fungerar, tar in talen, levererar summa, medelvärde, största, näst största.

Visa signatur

Dator 1 | Intel Core i7-4770K @ 4,6Ghz | Corsair H100i | Asus Z87-A | Crucial DDR3 BallistiX Sport 2x8GB 1600Mhz CL9 | KFA2 GTX 980TI HOF | Corsair TX650W | Intel 335 240GB | LG 24" + Philips 27" + Philips 27" | Fractal Design R3 |
Dator 2 | Intel Xeon W3520 | TRUE Spirit 120M | Asus Rampage II Extreme | Patriot Viper II Sector7 3x2GB 1600Mhz CL8 | PNY 8800 Ultra | Intel 330 120GB |

Permalänk
Medlem
Skrivet av adde_84:

Kan någon vänlig själ kunna göra en hel källkod åt mig?

Ingen behöver skriva någon kod åt dig, du har ju redan inlägg #9. Hitta något bra sätt att lyfta ut delar till funktioner så är det väl klart sen?

Skrivet av adde_84:

Skriv ett program som frågar efter ett antal tal

Det görs av raderna

cout << "Skriv in tal" << endl; cin >> inp;

Skrivet av adde_84:

och skriver ut summan

Görs av sum += inp; och cout << "Summa: " << sum << endl;.

Skrivet av adde_84:

och medelvärdet av de inmatade talen.

Görs av sum += inp; (samma som ovan) och cout << "Medelvärde: " << (double)sum/(double)antal << endl;

Skrivet av adde_84:

Användaren ska ange 0 i slutet av talserien.

Görs av

if (inp == 0) { break; }

Skrivet av adde_84:

Programmet ska dessutom skriva ut det näst största och det största talet.

if (inp > max) { nMax=max; max = inp; } if (inp > nMax && inp < max) { nMax = inp; } if (inp < min) { min = inp; }

cout << "Störst tal: " << max << endl; cout << "Näst störst tal: " << nMax << endl; cout << "Minst tal: " << min << endl;

Vad fattas?

Permalänk
Hedersmedlem
Skrivet av adde_84:

TILL ALLA ER SOM HAR SVARAT!!

Jag tackar så innerligt för er hjälp. Men ja, det känns som om jag inte kommer någon vart, jag har fått många många tips och förslag på lösningar. Men än så länge har jag inte lyckats lösa detta.

Jag har därför kommit fram till följande.

Kan någon vänlig själ kunna göra en hel källkod åt mig?

Uppgiften
Skriv ett program som frågar efter ett antal tal och skriver ut summan och medelvärdet av de inmatade talen. Användaren ska ange 0 i slutet av talserien. Programmet ska dessutom skriva ut det näst största och det största talet. Programmet ska vara uppbyggt av ett antal funktioner.

Jag är så himla tacksam för alla tips!

Stort stort tack på förhand!!!!
Med vänligaste hälsningar

Vad hade du tänkt att du skulle lära dig på att någon annan serverar lösningen till dig? Jag hoppas ingen är dum nog att lösa hela uppgiften till dig.

Du har själv löst 90%. Ditt program funkar och allt du behöver göra är att bryta ut några delar till några funktioner så är du klar. Att du sedan stirrar upp dig till astronomiska nivåer fast du är så nära fattar jag inte. Men det skulle kunna bero på att någon annan har skrivit den kod som du postar här och att du inte fattar vad den egentligen gör.

Så tillbaka till ritbordet. Den pseudokod du har skrivit är en bra utgångspunkt för att göra funktioner. Typiskt bra funktioner är saker som utförs flera gånger, alternativt block av en eller flera saker som hör ihop och som kan förenkla läsningen av ditt program. Jag tycker dock att du ska undvika funktioner som behöver tillgång till allt för många variabler, för att du i så fall måste skicka väldigt mycket saker fram och tillbaka för att få det att funka bra.

Du har fått tips på en bra funktion innan. Jag tycker att en annan lämplig kandidat är

int ReadANumber()

Nu kommer den inte att göra så mycket om du bara bryter ut den ur din kod, men detta är ett bra ställe att lägga in lite felhantering. Vad händer om användaren skriver ett A istället för en siffra? Kan du lägga in hantering av det tillsammans med lite kommentarer i koden om varför du gör vad du gör så kan du nog få lite bonuspoäng av din lärare. Felhantering är aldrig fel.

Visa signatur

Använd gilla för att markera nyttiga inlägg!