Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Mar 2008

Vad betyder det här?

Använd funktionen int talmax(int t1, int t2) för att returnera det största av de två först slumpade talen. För att sedan kontrollera det tredje talet skall funktionen void slutmax(int max, int t3) användas

Vi förstår ingenting men läraren tror att vi gör det eftersom det alltid någon som klarar uppgifterna med hjälp av kompisar. Det spelar ingen roll vad vi säger. Hursomhelst, efterblivna som vi verkar så vet vi inte vad t1, t2, och t3 innebär. Är det så enkelt att vår lrare menar tal1, tal2, tal3? Eller har faktiskt dessa kodvärden något syfte?

...

Här uppgiften som helhet:
Skapa ett program som genererar tre slumptal mellan 1 - 100. Programmet skall sedan skriva ut det största av de tre talen. Använd funktionen int talmax(int t1, int t2) för att returnera det största av de två först slumpade talen. För att sedan kontrollera det tredje talet skall funktionen void slutmax(int max, int t3) användas. Variabeln max skall innehålla det returnerade värdet från den första funktionen.

Vi har kommit såhär långt, men fattar verkligen inte vad han menar med att vi ska använda funktionerna. Var, när, hur? Vi har ingen aning.

#include <iostream>
#include <ctime>
using namespace std;
int talmax(void)
{
int slumptal;
slumptal=rand()%100+1;
return (slumptal);
}
int main ()
{
cout << "Tryck paw ENTER naer du vill att programmet ska slumpa tre tal och ber1a vilket som aer stoerst." << endl;
cin.get();
int resultat1, resultat2, resultat3;
srand(time(NULL));
resultat1=talmax();
cout << "Första talet: " << resultat1 << endl;
resultat2=talmax();
cout << "Andra talet: " << resultat2 << endl;
resultat3=talmax();
cout << "Tredje talet: " << resultat3 << endl;
cout << "\n\nVill du veta vilket som aer stoerst? Tryck paw ENTER. :)" << endl;
cin.get();
}
int talmax(int t1, int t2){
if (resultat1>resultat2)
cout << resultat1 << "aer det stoersta talet!" << endl;
}

Trädvy Permalänk
Medlem
Plats
Söder
Registrerad
Jun 2008

Nej, nej, nej.

talmax ska returnera det största värdet av de två inmatade talen t1 och t2.
Slumptalen ska generas i main-funktionen.
slutmax ska ni (enligt mig) strunta i då den är redundant.

talmax är en funktion som tar in två stycken heltal (av variabeltypen int) och returnerar ett heltal (int). De två inmatade talen refereras genom deras variabelnamnen t1 och t2.

Döp om er "int talmax(void)"-funktion till "int slumptal(void)" istället så man inte blir förvirrad.

Placera funktionen "int talmax(int t1, int t2)" innan main-funktionen annars hittas den inte av kompilatorn.

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007

han vill att ni tar fram tre slumpade tal, (tal1, tal2, tal3) och skickar dom som argument till funktionen talmax för att ta reda på vilket av dem som är störst. sedan tar ni det returnerade värdet och skickar DET tillsammans med tal3 till funktionen slutmax som egentligen gör precis samma sak som talmax men inte returnerar något värde.

pseudokod

main: tal1 = random(n); tal2 = random(n); tal3 = random(n); max = talmax(tal1, tal2) slutmax(max, tal3) talmax(a,b): returnera a om a > b annars b slutmax(a,b): skriv ut det största talet av a och b

Bilanaloger är som Volvo — varenda svenne kör med dem

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Mar 2008

Tack för hjälpen, men om jag ska vara ärlig förstår jag knappt någonting. Det är säkert 1+1 i era ögon men som sagt så har vi nästan inga kunskaper om språket öht.

Hursom, ni får gärna fortsätta hjälpa mig om ni orkar. Just nu har jag gjort några ändringar:

#include <iostream> #include <ctime> using namespace std; int talmax(int t1, int t2); int slumptal(void) { int slumptal; slumptal=rand()%100+1; return (slumptal); } int main () { cout << "Tryck paw ENTER naer du vill att programmet ska slumpa tre tal och ber1a vilket som aer stoerst." << endl; cin.get(); int resultat1, resultat2, resultat3; srand(time(NULL)); resultat1=slumptal(); cout << "Första talet: " << resultat1 << endl; resultat2=slumptal(); cout << "Andra talet: " << resultat2 << endl; resultat3=slumptal(); cout << "Tredje talet: " << resultat3 << endl; cout << "\n\nVill du veta vilket som aer stoerst? Tryck paw ENTER. :)" << endl; cin.get(); } int talmax (int t1, int t2) { if (t1>t2) cout << t1 << "aer det stoersta talet!" << endl; }

Hållerpå att laga mat samtidigt så det är stressigt.

Trädvy Permalänk
Medlem
Plats
Söder
Registrerad
Jun 2008

Nu ser det bra ut.

Se nu till så att "int talmax (int t1, int t2)" returnerar ett värde också. Inte bara gör en utskrift om t1 är större än t2. Tänk på att t2 även kan vara det största talet och du behöver således skapa en if-sats även för detta fall. (De kan vara lika också).

Anropa sedan talmax 2 gånger.

Första gången med de två första slumptalen. Resultatet kan du spara i en ny variabel.
Andra gången anropar du funktionen med det sista värdet samt det nya värdet.

Sen är det bara att skriva ut resultatet från det sista anropet.

Motivera avsaknaden av slutmax med att du lade till en fin slumptalsfunktion istället!
Alternativt till slutmax så skapar du en ny funktion som tar in tre värden och sen utnyttjar talmax till att returnera det största värdet.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Mar 2008
Citat:

Ursprungligen inskrivet av Korkskruv

Se nu till så att "int talmax (int t1, int t2)" returnerar ett värde också.

Dum fråga kanske, men hur gör man då?

Följande

int talmax (int t1, int t2) { if (t1>t2) cout << t1 << "aer det stoersta talet!" << endl; }

skriver som sagt(?) inte ut själva svaret. Och det är sånt här vi aldrig får lära oss. Vi lr oss en massa olika koder, men inte var de ska vara, vad de har för betydelse etc.

Trädvy Permalänk
Medlem
Plats
@home
Registrerad
Maj 2005
Citat:

Ursprungligen inskrivet av surhetsreglerad
Och det är sånt här vi aldrig får lära oss. Vi lr oss en massa olika koder, men inte var de ska vara, vad de har för betydelse etc.

Vad är det för kurs/skola?

I'm Winston Wolfe. I solve problems.

Trädvy Permalänk
Medlem
Plats
Söder
Registrerad
Jun 2008

int slumptal(void) { int slumptal; slumptal=rand()%100+1; return (slumptal); // <-------- SÅ HÄR! }

Så här returnerar man ett värde.

När return anropas så avslutas funktionen direkt. (Parenteserna kring slumptal är helt onödiga). Värdet som står efter return är det som returneras från funktionen. Det som står innan slumptal i funktionsdeklarationen är det som berättar vilken typ det är som returneras. "int slumptal(void)".

En funktion kan innehålla flera retur-satser.

Raden efter if räknas alltid som en del av if-satsen och körs endast om villkoret är uppfyllt. Vill man ha mer än en rad kod till if-satsen så använder man { och }.

if (något villkor) { // Flera rader kod. int i; int i2; }

Funktioner anropas som du har gjorde i main-funktionen med raden "srand(time(NULL));".
srand är en funktion som tar in ett värde som inparameter.
Detta värde får den genom returvärdet från funktionen time.
Funktionen time har en inparameter och här väljer man att skicka in värdet NULL.

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007
Citat:

Ursprungligen inskrivet av surhetsreglerad
Dum fråga kanske, men hur gör man då?

På samma sätt som du gjorde i funktionen slumptal: return <variabel eller värde>

Citat:

Ursprungligen inskrivet av surhetsreglerad
Följande

int talmax (int t1, int t2) { if (t1>t2) cout << t1 << "aer det stoersta talet!" << endl; }

skriver som sagt(?) inte ut själva svaret. Och det är sånt här vi aldrig får lära oss. Vi lr oss en massa olika koder, men inte var de ska vara, vad de har för betydelse etc.

Om du tittar på uppgiften igen så ska inte talmax skriva ut någonting utan bara avgöra vilket av de två talen som är störst. Du är på helt rätt spår när du använder if för att jämföra t1 med t2. Kombinera med en return så är du på god väg.

Bilanaloger är som Volvo — varenda svenne kör med dem