Inlägg

Inlägg som fosho12 har skrivit i forumet
Av fosho12
Skrivet av perost:

Jag kan inte se något om att du behöver spara alla gissade tal. Uppgiften säger att du ska spara 5 gamla gissningar för kvitt eller dubbelt, men eftersom det inte står något om vilka gissningar så antar jag att man kan ta sig en del friheter där. Att spara de 5 första gissningarna är ju då enklast, bara ha en array med 5 platser och så en variabel som håller koll på hur många gissningar du sparat. När arrayen är full är det bara att strunta i efterföljande gissningar, och blir den inte full är det bara att fylla på resten med slumptal. Att spara de 5 senaste gissningarna är inte så mycket svårare, då är det bara att gå tillbaka till början av arrayen när man når slutet.

Om du ändå vill spara alla gissningar så är det lämpligast att använda en std::vector eftersom du inte vet hur många gissningar du behöver lagra, men jag antar att ni inte kommit så långt än. Egentligen bör man använda en std::array istället för en C-array också (d.v.s. std::array<int, 5> istället för int[5]), men återigen troligtvis överkurs.

Ett annat tips är förresten att du kan korta ner din kod avsevärt genom att flytta ut gemensam kod utanför if-satserna. Din första if-sats skulle t.ex. kunna skrivas om ungefär så här:

if (guess == number) { cout << "Grattis! Du har gissat rätt! på " << tries << " gånger"; cout << endl << endl; cout << "Det korrekta nummret var " << number; } else { if (guess > number) { cout << "Tyvärr! Ditt nummer är för högt!"; } else { cout << "Tyvärr! Ditt nummer är för lågt! "; } cout << "Försök igen!"; cout << endl << endl; cin >> guess; cout << endl << endl; tries++; }

Att inte upprepa kod flera gånger ger inte bara mindre kod, det hjälper även till att undvika misstag. I din andra if-sats så har du t.ex. skrivit Du med stort D, förutom sista gånger när det är ett litet d. Just det misstaget kanske inte är så kritiskt, men du fattar säkert poängen.

Tack! All kritik är välkommen! Är som sagt ganska ny inom detta så all hjälp är välkommen.
Sorry hade inte med detta:
Alla tal som användaren har gissat fram måste lagras i en array.
De 5 Talen som används i spelet ”Kvitt eller dubbelt” ska lagras i en separat array som
sedan visas för användaren.
Funkar det att ha en array med 10 platser, då du bara får poäng upp till 10 gissningar?

Av fosho12
Skrivet av Shimonu:

Sneglat lite snabbt. Du har ett lustigt villkor för din andra while-loop. Jag undrar också om det verkligen behövs en loop där?

Tack! ändrat de nu och det funkade bra!
Har dock inte en aning om hur man gör för att spara alla gissade tal i en array.. Lite vilsen i den delen om någon skulle kunna hjälpa till?

Av fosho12

Programmeringsuppgift c++ nybörjare

Tja!

Ska programmera ett spel där användaren spelar
mot datorn i att lista ut ett tal som datorn tänker på. När spelet börjar ska användaren
gissa fram ett tal mellan 1 – 50 som datorn har slumpat fram. 1 gissning ger 10 poäng 2 gissningar ger 5 poäng 3-10 gissningar ger 1 poäng. Du kan gissa hur många ggr som helt men får bara poäng upp till 10 gissningar. Får du poäng ska man kunna spela kvitt eller dubbelt.
Kvitt eller dubbelt använder 5 av dina gamla gissningar, om du gissat mindre än 5 ggr slumpas resterande tal så att det blir 5 st.

Har sett liknande spel på forumet men inte riktigt då spelet har ett poängsystem och måste använda sig av array och minst 3 funktioner.

Jag har fixat så datorn slumpar fram ett slumptal och användaren får feedback på om det är lågt,högt eller rätt. men fastnar på poängsystemet.

Help please!

#include "stdafx.h" #include <iostream> #include <ctime> #include <Windows.h> using namespace std; int main() { setlocale(LC_ALL, "swedish"); int tries = 0; int guess; int number; int points = 0; srand(time(0)); number = rand() % 50 + 1; cout << number; cout << "Välkommen till gissa talet! Var god gissa på ett tal mellan 1 och 50." << endl; cout << endl << endl; cin >> guess; tries++; while (guess != number) { if (guess > number) { cout << "Tyvärr! Ditt nummer är för högt!"; cout << "Försök igen!"; cout << endl << endl; cin >> guess; cout << endl << endl; tries++; } if (guess < number) { cout << "Tyvärr! Ditt nummer är för lågt! "; cout << "Försök igen!"; cout << endl << endl; cin >> guess; cout << endl << endl; tries++; } else if (guess == number) { cout << "Grattis! Du har gissat rätt! på " << tries << " gånger"; cout << endl << endl; cout << "Det korrekta nummret var " << number; } } while (tries == 1) { points = +10; cout << "Du har fått " << points << " poäng! " << endl; cout << endl; if (tries == 2) { points = +5; cout << "Du har fått " << points << " poäng! " << endl; cout << endl; } if (tries > 3) { points = +1; cout << "Du har fått " << points << " poäng! " << endl; cout << endl; } else if (tries < 11) { points = +1; cout << "du har fått " << points << " poäng! " << endl; cout << endl; } } system("pause"); return 0; }