5 svar
112 visningar
Didar 212
Postad: 23 sep 2022 22:48 Redigerad: 23 sep 2022 22:52

returnerar ett int värde som du tar emot i main men använder dig aldrig av det värdet i main

Hej jag har fått följande kommentar av min lärare som ni ser på rubriken men förstår inte hur jag ska lösa det. 

Jag returnerar [numberofGuess] i slutet och min lärare vill att jag ska använda mig utav det i main eller göra på ett annat sätt. Hur gör jag ? Se bilder nedan:

Kan jag bara returnera 0 istället för den deklarerade variabeln?

Fermatrix 7841 – Fd. Medlem
Postad: 23 sep 2022 23:14 Redigerad: 23 sep 2022 23:19

Varför har du en int choice? Du slösar bara minne i din stack. 

Kalla på funktionen bara, finns ingen anledning att ha en variabel om du inte använder den till något.

Inte heller är det någon mening att returnera numberofguesses eftersom du gör ingenting med det.

Om du vill sparat antal gissningar kan du ju printa den åtminstone.

Didar 212
Postad: 24 sep 2022 00:12
Dracaena skrev:

Varför har du en int choice? Du slösar bara minne i din stack. 

Kalla på funktionen bara, finns ingen anledning att ha en variabel om du inte använder den till något.

Inte heller är det någon mening att returnera numberofguesses eftersom du gör ingenting med det.

Om du vill sparat antal gissningar kan du ju printa den åtminstone.

Tack för snabbt svar, ändrade till retur 0 och tog bort int choice o lämnade kvar numberofguess(number);

Fermatrix 7841 – Fd. Medlem
Postad: 24 sep 2022 08:36 Redigerad: 24 sep 2022 08:38

Om du inte bryr dig om numberofguess, istället för att returnera en int, ändra så att funktionen är en void.

void numberofguess(int number)

Det är inte heller bra att ge funktionen och en variabel exakt samma namn, det blir förvirrande.

anders_k 237
Postad: 25 sep 2022 01:39 Redigerad: 25 sep 2022 01:43

srand(time(NULL)) srand tar en unsigned int som argument

void srand( unsigned seed );

men time returnerar time_t, visserligen brukar time_t vara en unsigned int,men inte på alla system så egentligen borde
du casta det till unsigned int.

srand((unsigned)time(NULL));

för att bli av med den varningen.

Du måste bestämma dig hur du skall designa dina funktioner, hur mycket du vill göra i varje funktion.

Man kan göra som du och lägga allting i en funktion som du sedan ropar från main men då kunde du lika väl haft den all den koden direkt i main()?

Eller så delar du upp det i funktioner som beskriver vad de göra och bryter upp problemet lite mer t.ex.

  • generera ett slumpvärde getRandomValue()
  • läsa in ett värde från användaren readValue()
  • bestämma om värdet är rätt, stort eller litet evaluateValue()

då blir din main lite mer beskrivande:

int main()
{
  const int number = getRandomValue();
  int guess = 0;
  do
  {
    guess = readValue();
    evaluateValue(number, guess);
  }
  while (guess != number);
  
  return 0;
}

vilket kanske gör programmet lite mer lättläst eftersom funktionsnamnen berättar vad som sker.

Didar 212
Postad: 25 sep 2022 15:11
anders_k skrev:

srand(time(NULL)) srand tar en unsigned int som argument

void srand( unsigned seed );

men time returnerar time_t, visserligen brukar time_t vara en unsigned int,men inte på alla system så egentligen borde
du casta det till unsigned int.

srand((unsigned)time(NULL));

för att bli av med den varningen.

Du måste bestämma dig hur du skall designa dina funktioner, hur mycket du vill göra i varje funktion.

Man kan göra som du och lägga allting i en funktion som du sedan ropar från main men då kunde du lika väl haft den all den koden direkt i main()?

Eller så delar du upp det i funktioner som beskriver vad de göra och bryter upp problemet lite mer t.ex.

  • generera ett slumpvärde getRandomValue()
  • läsa in ett värde från användaren readValue()
  • bestämma om värdet är rätt, stort eller litet evaluateValue()

då blir din main lite mer beskrivande:

int main()
{
  const int number = getRandomValue();
  int guess = 0;
  do
  {
    guess = readValue();
    evaluateValue(number, guess);
  }
  while (guess != number);
  
  return 0;
}

vilket kanske gör programmet lite mer lättläst eftersom funktionsnamnen berättar vad som sker.

tack ska tänka på det framöver!

Svara
Close