I'm having some trouble with my moviedatabase, my searchfunction isn't working.
I'm a total beginner and have gotten the searchfunction of the net, but it wont search.
Here's my code.
#include <iostream>
#include <vector>
#include <sstream> // För att kunna använda sig av getline()
#include <string> // För att kunna använda sig av getline()
#include <algorithm>
using namespace std;
class Film
{
public:
string Titel;
string Typ;
// FUNKTION: Skriver ut filmens titel och typ
void skrivUtFilm()
{
cout << endl;
cout << "Titel: " << Titel << endl; // Skriver ut filmens titel
cout << "Typ: " << Typ << endl; // Skriver ut filmens typ
}
};
int main()
{
vector<Film> Databas; // Skapa en vektor av typen Film
Film nyFilm; // För att kunna skapa en film behöver vi kunna spara den
while (true)
{
// Skriver ut menyn:
cout << " === FILMDATABAS === " << endl;
cout << "1: Registera en ny film" << endl;
cout << "2: S\x94k efter en film" << endl;
cout << "3: Skriv ut filmlistan" << endl;
cout << "0: Avsluta" << endl;
cout << "Ange ditt val: ";
char menySelection; // Användarens val
cin >> menySelection;
if (menySelection == '1') // Registerar nya filmer
{
cin.get();
cout << "\n\n1: Registrera en ny film\n";
cout << "Vad \x84r filmens Titel: ";
getline(cin, nyFilm.Titel);
cout << "\x8er filmen p\x86 DVD eller BluRay? ";
getline(cin, nyFilm.Typ);
cout << endl;
// Vi lägger vårt filmobjekt i vektorn
Databas.push_back( nyFilm );
}
else if (menySelection == '2') // Söker efter filmer som användaren har lagt till
{
cin.get();
cout << "\nS\x94k efter filmer i databasen: \n\n";
string objekt;
getline(cin, objekt);
cout << endl;
vector<Film>::iterator it;
it = find_if(Databas.begin(), Databas.end(),[&] ( const Film &f )
{
return ( f.Titel == objekt);
});
}
else if (menySelection == '3') // Skrivet ut alla filmer i Filmarkivet
{
cout << "\n=========\n";
cout << "Filmlistan\n";
for(int i=0; i<Databas.size(); i++)
{
Databas[i].skrivUtFilm(); // Skriver ut dem med hjälp av skrivUtFilm();
}
cout << "\n=========\n";
cout << "\n\nTryck p\x86 ENTER f\x94r att \x86terv\x84nda till menyn.\n\n";
cin.get();
}
else if (menySelection == '0') // Avslutar programmet
{
break;
}
else
{
cout << "Ogiltigt val!\n." << endl;
}
}
cin.get();
return 0;
}
When you find the film, you don't do anything with it.
After the search function, you should add something like:
if (it != Databas.end()) {
it->skrivUtFilm();
} else {
cout << "No film found" << endl;
}
to print info about the film that you have found, or a message that no film was found.
Related
I got this code and the problem is that I can only continue the loop forever but i can't exit it. I have been struggling with this for quite some hours and figure out where i do wrong. I think that its mostly about the do while in the end but since I am new to this there might be somewhere else in the code.
#include <iostream>
using namespace std;
int main() {
locale swedish("swedish");
locale::global(swedish);
int saldo = 1000;
int bet;
int vinst;
char val;
int nummer = 0;
char spelaigen;
char spelainteigen;
/*Här "presenteras" programmet med lite cout's som mest välkomnar dig till roulett och ger dig ett saldo*/
cout << "Username: Användare" << endl;
cout << "Password: ********" << endl;
cout << "Logging in: " << endl;
cout << "Searching for a live room: " << endl;
cout << "Initializing mainframe: \n" << endl;
cout << "Välkommen till Save7heCasino" << endl;
cout << "Här spelar du Roulette " << endl;
cout << "Du har " << saldo << " att spela för." << endl;
while (true)
{
cout << "Du får välja mellan 100, 300 eller 500 att spela för." << endl;
cin >> bet;
if (saldo < bet)
{
cout << "Ditt saldo är för lågt." << endl;
break;
}
if (bet == 100)
{
cout << "Du valde insatsen 100:-" << endl;
cout << "Ditt saldo är " << saldo - bet << endl;
}
else if (bet == 300)
{
cout << "Du valde insatsen 300:-" << endl;
cout << "Ditt saldo är " << saldo - bet << endl;
}
else if (bet == 500)
{
cout << "Du valde insatsen 500:-" << endl;
cout << "Ditt saldo är " << saldo - bet << endl;
}
else
{
cout << "Getfucl :)" << endl;
break;
}
srand(time(0));
int vinst = rand() % 36 + 1;
cout << "\n";
cout << "-Vinsttabell: " << endl;
cout << "-Vinst: Färg ger 2x din insats." << endl;
cout << "-Vinst: Nummer ger 10x din insats." << endl;
cout << "\n";
cout << "Vill spela på färg [1] eller nummer [2]: " << endl;
cin >> val;
/*Här väljer jag 1 eller 2 och deklarerar "val" till det nummret
Om jag väljer 1 så kommer if-satsen under att köras och väljer jag 2 så kommer else if-satsen att köras
Om jag väljer 1 så kommer den att deklarera om "val" för den nya input som blir, i detta fall "r" eller "b"
och fortsätta att köras i en ny if-sats som hanterar inmatning 1 */
/*Här kör jag en if-sats för svaret 1 som är färg, identifieraren "val" deklareras då ett nytt värde som
matas in utav användaren som nu i sin tur får välja "r" eller "b". Det finns 2 if-satser för val 1, en för respektive färg, "r" och "b" som avgörs omÄ
random funktionen är delbar eller inte vilket talar om utifall svaret blev rött eller svart.*/
if (val == '1')
{
cout << "Vilken färg vill du spela? [r] för Röd och [b] för Svart " << endl;
cin >> val;
if (val == 'b')
{
if (vinst % 2 == 0)
{
cout << "Resultatet blev Svart: " << vinst << endl;
saldo = saldo + bet * 2 - bet;
cout << "Du vann: " << bet + bet << endl;
cout << "Ditt nya saldo är: " << saldo << endl;
}
else
{
cout << "Du förlorade resultatet blev Rött: " << vinst << endl;
saldo = saldo - bet;
cout << "Ditt nya saldo är: " << saldo << endl;
}
}
if (val == 'r')
{
if (vinst % 2 != 0)
{
cout << "Resultatet blev Rött: " << vinst << endl;
saldo = saldo + bet * 2 - bet;
cout << "Du vann: " << bet + bet << endl;
cout << "Ditt nya saldo är: " << saldo << endl;
}
else
{
cout << "Du förlorade resultatet blev Svart: " << vinst << endl;
cout << "Du förlorade: " << endl;
saldo = saldo - bet;
cout << "Ditt nya saldo är: " << saldo << endl;
}
}
}
/*Här hamnar du om du valde "2" i det första steget efter du valt insats. Även i denna if-sats finns det 2 andra if-satser ,*/
if (val == '2')
{
cout << "Vilket nummer?: ";
cin >> val;
if (vinst == val)
{
cout << "Grattis du vann: " << vinst << endl;
cout << "Du vann: " << bet * 10 << endl;
saldo = saldo + bet * 10 - bet;
cout << "Ditt nya saldo är " << saldo << endl;
}
else if (vinst!=val)
{
saldo = saldo - bet;
cout << "Fel nummer, det rätta nummret var: " << vinst << " - Ditt nya saldo är: " << saldo << endl;
}
}
do
{
cout << "Vill du spela igen?: j/n?: " << endl;
cin >> spelaigen;
} while (spelaigen == 'j' || spelaigen == 'J');
}
return 0;
}
This code seems wrong to me (but apologies I don't read Swedish)
do
{
cout << "Vill du spela igen?: j/n?: " << endl;
cin >> spelaigen;
} while (spelaigen == 'j' || spelaigen == 'J');
I think what you are doing is asking whether the user want to try again, yes or no? If that's right then all you need is an if statement which breaks out of the main loop if the answer is no.
cout << "Vill du spela igen?: j/n?: " << endl;
cin >> spelaigen;
if (spelaigen == 'n' || spelaigen == 'N')
break;
Now that code works but you could also check if the answer is yes or no and ask again if it is neither. That does require an extra loop and maybe that is what you were trying to do in your code. The correct code looks like this
do
{
cout << "Vill du spela igen?: j/n?: " << endl;
cin >> spelaigen;
}
while (spelaigen != 'j' && spelaigen != 'J' && spelaigen != 'n' && spelaigen != 'N');
if (spelaigen == 'n' || spelaigen == 'N')
break;
I have been coding a program to simulate a roulette of a casino, thing is that every time I try to repeat the game after is finished I want the game to keep going and the money to be the same, so if you have lost money you start with that certain money, here is the code (It's in Spanish but I think it's pretty clear):
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
int num, pri, randum, num2, op, num3 = 10000, col = randum, rep, clear;
int main() {
do {
int num4 = op;
cout << "Escoja la opción de la que apostar.\n";
cout << "1 - Apostar a un número. \n2 - Apostar a un color \n";
cout << "Elija opción: ";
cin >> pri;
cout << " \n";
cout << " \n";
switch (pri) {
case 1: {
srand(time(0));
randum = rand() % 37 + 1; //si poner 37 + 1 te va cojer números hasta el 37 no?
if (num4 != 10000) {
cout << "Su saldo actual es " << num3 << " €\n";
} else {
cout << "Su saldo actual es 10000 €\n";
}
cout << "Ha elegido apostar a un número\n";
cout << "Introduzca el dinero que quiere apostar -->\n";
cin >> num;
cout << "Ahora introduzca el número que desee entre el 0 y 36 -->\n";
cin >> num2;
if (num2 == randum) {
op = num3 + num;
cout << "\n¡Enhorabuena! Has ganado! Ahora tienes " << op << " €\n";
} else {
op = num3 - num;
cout << "\nLo sentimos... Has perdido la apuesta, ahora tienes " << op << " €\n";
cout << "¿Quieres volver a jugar?\n- Sí -> 1\n- No -> 2\n";
cin >> clear;
if (clear == 1) {} else if (clear == 2) {
cout << "Bien, suerte en la próxima tirada.\n\n";
}
}
break;
}
case 2: {
if (num3 == 10000) {
cout << "Su saldo actual es 10000 €\n";
} else {
cout << "Su saldo actual es " << num3 << " €\n";
}
cout << "Ha elegido apostar a un color\n";
cout << "Introduzca el dinero que quiere apostar -->\n";
cin >> num;
srand(time(0));
randum = rand() % 2 + 1;
cout << "Ahora escoja rojo (1) o negro (2) -->\n";
cin >> col;
if (col == randum) {
op = num3 + num;
cout << "\n¡Enhorabuena! Has ganado! Ahora tienes " << op << " €";
} else {
op = num3 - num;
cout << "\nLo sentimos... Has perdido la apuesta, ahora tienes " << op << " €";
}
cout << "¿Quieres volver a jugar?\n- Sí -> 1\n- No -> 2\n";
cin >> clear;
if (clear == 1) {} else if (clear == 2) {
cout << "Bien, suerte en la próxima tirada.\n\n";
}
}
}
} while (clear == 1);
return 0;
}
So, it should be pretty easy to do that.
Initialize the starting amount outside the loop before the betting begins.
At the end of the loop, ask if user wants to bet more.
Would that work for you? Or do you need it to be initialized when you start the code itself? You could use static
I am just changing a few things from your code:
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
int main()
{
int money = 10000, bet_amount = 0, clear, pri;
cout << "Su saldo inicial es " << money << " €\n";
do
{
cout << "Escoja la opción de la que apostar.\n";
cout << "1 - Apostar a un número. \n2 - Apostar a un color \n";
cout << "Elija opción: ";
cin >> pri;
cout << " \n";
cout << " \n";
cout << "Introduzca el dinero que quiere apostar -->\n";
cin >> bet_amount;
switch (pri)
{
case 1:
{
int number_chosen = -1, randum;
cout << "Ahora introduzca el número que desee entre el 0 y 36 -->\n";
cin >> number_chosen;
srand(time(0));
randum = rand() % 37; // This will give result in the range 0 - 36
if (randum == number_chosen)
{
money += bet_amount;
cout << "\n¡Enhorabuena! Has ganado! Ahora tienes " << money << " €\n";
}
else
{
money -= bet_amount;
cout << "\nLo sentimos... Has perdido la apuesta, ahora tienes " << money << " €\n";
}
break;
}
case 2:
{
int color = 0, randcol;
cout << "Ahora escoja rojo (1) o negro (2) -->\n";
cin >> color;
srand(time(0));
randcol = rand() % 2 + 1;
if (randcol == color)
{
money += bet_amount;
cout << "\n¡Enhorabuena! Has ganado! Ahora tienes " << money << " €\n";
}
else
{
money -= bet_amount;
cout << "\nLo sentimos... Has perdido la apuesta, ahora tienes " << money << " €\n";
}
break;
}
default:
break;
}
cout << "¿Quieres volver a jugar?\n- Sí -> 1\n- No -> 2\n";
cin >> clear;
if (clear == 2)
{
cout << "Bien, suerte en la próxima tirada.\n\n";
}
} while (clear == 1);
cout << "Tu saldo final es " << money << " €\n";
return 0;
}
It took me a while to figure out the code because I had to use google translate
I suggest you store the money into a file Like this :
#include <fstream>
ofstream myfile ("money.txt");
if (myfile.is_open())
{
myfile << "put the money in the bag here";
myfile.close();
}
else cout << "Unable to open file";
And whenever you want to read the value
Use this:
string line;
ifstream myfile ("money.txt");
if (myfile.is_open())
{
getline (myfile,line);
cout << line << '\n';
myfile.close();
}
else cout << "Unable to open file";
I would like some help with the following code/agenda, every time you edit/delete the agenda and index, it adds an additional "endl;" to "Agenda.txt" and since there is a new line without a index reference, the "Index.txt" saves a "-858993460" as recorded number caused from the new empty line in the agenda caused by editing the file, if you add contacts works fine. The code is basically in spanish but I commented main instructions. Please help!
#include <conio.h>
#include <fstream>
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <math.h>
using namespace std;
struct estudiantes
{
int telefono;
char nombre[50];
};
estudiantes contacto[100];
int main()
{
int opciones, i;
ifstream readagenda, readindex;
do
{
system("cls");
cout << "Elige opcion a ejecutar" << endl;
cout << "1. Verificar agenda de contactos actual" << endl; //view current agenda
cout << "2. Agregar contactos" << endl; //Add contact numbers
cout << "3. Editar contactos" << endl; //Edit contacts
cout << "4. Eliminar contactos" << endl; //Erase contacts
cout << "5. Terminar Programa" << endl; //End program
cout << "Ingrese # opcion a elegir: ";
cin >> opciones;
switch (opciones)
{
case 1:
{
char linea[100];
cout << endl;
readagenda.open("Agenda.txt", ios::in);
if (readagenda.fail())
{
cout << "No se puede abrir el archivo, ingresa contactos para crear una agenda" << endl;
}
else
{
do
{
readagenda.getline(linea, sizeof(linea));
cout << linea << endl;
} while (!readagenda.eof());
}
readagenda.close();
system("Pause");
break;
}
case 2:
{
ofstream add, index;
int contactos;
cout << "\nIngrese Cantidad de contactos a guardar : ";//how many contacts are you going to save?
cin >> contactos;
for (int i = 1; i <= contactos; i++)
{
cout << "Ingrese Telefono No. " << i << " : ";//phone number
cin >> contacto[i].telefono;
cin.ignore(256, '\n');
cout << "Ingrese Nombre " << i << " : ";//full name
cin.getline(contacto[i].nombre, sizeof(contacto[i].nombre), '\n');
}
add.open("Agenda.txt", ios::app);
if (add.fail())
{
cout << "\nNo se puede crear el archivo" << endl;
exit(1);
}
for (int i = 1; i <= contactos; i++)
{
add << contacto[i].telefono << " - " << contacto[i].nombre << endl;
}
add.close();
index.open("Index.txt", ios::app);
if (index.fail())
{
cout << "\nNo se puede crear el archivo" << endl;
exit(1);
}
for (int i = 1; i <= contactos; i++)
{
index << contacto[i].telefono << endl;
}
index.close();
cout << "\nContacto agregado exitosamente...";//contact added
system("pause");
break;
}
case 3:
{
int modificar, readnum[100];
char newname[100], readcon[100];
i = 0;
bool encontrado = false;
cout << "\nIngrese No. telefono de contacto a modificar: ";//contact to modify
cin >> modificar;
cin.ignore(256, '\n');
cout << "Ingrese nuevo nombre de contacto: "; //new contact name
cin.getline(newname, sizeof(newname), '\n');
ofstream numerosmodtemp;
readindex.open("Index.txt", ios::in); // opens index
readagenda.open("Agenda.txt", ios::in); // opens agenda
numerosmodtemp.open("numerosmodtemp.txt", ios::app); //creates temp file
if (readagenda.fail() || readindex.fail())
{
cout << "\nNo se puede abrir el archivo, ingresa contactos para crear una agenda" << endl;
}
else
{
do
{
readagenda.getline(readcon, sizeof(readcon)); // reads agenda
readindex >> readnum[i]; // reads index
if (readnum[i] == modificar)
{
encontrado = true;
numerosmodtemp << modificar << " - " << newname << endl;//adds new contact info
}
else
{
numerosmodtemp << readcon << endl; // uses regular agenda
}
i++;
} while (!readindex.eof());
numerosmodtemp.close();
readindex.close();
readagenda.close();
if (encontrado == true)
{
cout << "\nContacto modificado exitosamente..."; // contact edited
system("pause");
}
else
{
cout << "\nContacto no ha sido encontrado..."; //contact not found
system("pause");
}
remove("Agenda.txt");
rename("numerosmodtemp.txt", "Agenda.txt");
break;
}
break;
}
case 4:
{
int borrar, readn[100];
char readc[100];
i = 0;
bool encontrado = false;
cout << "\nIngrese No. telefono de contacto a eliminar: ";//number of contact to erase
cin >> borrar;
ofstream numerosborrados, numerosdeltemp, numerostemp;
readindex.open("Index.txt", ios::in); // opens index
readagenda.open("Agenda.txt", ios::in); // opens agenda
numerosborrados.open("Contactos Borrados.txt", ios::app); // opens erased contacts
numerosdeltemp.open("numerosdeltemp.txt", ios::app); // opens temp index
numerostemp.open("numerostemp.txt", ios::app); // opens temp agenda
if (readagenda.fail() || readindex.fail())
{
cout << "\nNo se puede abrir el archivo, ingresa contactos para crear una agenda" << endl;
}
else
{
do
{
readagenda.getline(readc, sizeof(readc)); // reads contacts
readindex >> readn[i]; // reads index
if (readn[i] == borrar)
{
encontrado = true;
numerosborrados << readc << endl; // adds to erased contacts file
}
else
{
numerostemp << readc << endl; // adds to temp agenda
numerosdeltemp << readn[i] << endl; // adds to temp index
}
i++;
}while (!readindex.eof());
}
numerosborrados.close();
numerostemp.close();
numerosdeltemp.close();
readindex.close();
readagenda.close();
if (encontrado == true)
{
cout << "\nContacto eliminado exitosamente...";// contact erased
system("pause");
}
else
{
cout << "\nContacto no ha sido encontrado..."; //contact not found
system("pause");
}
remove("Agenda.txt");
remove("Index.txt");
rename("numerosdeltemp.txt", "Index.txt");
rename("numerostemp.txt", "Agenda.txt");
break;
}
case 5:
{
cout << "\nPrograma terminado, "; // End program
system("pause");
break;
}
default:
{
cout << "\nEsta opcion no esta disponible, "; // not available
system("pause");
break;
}
}
} while (opciones != 5);
}
This question already has answers here:
cin.get() is non-blocking
(4 answers)
Closed 5 years ago.
I have got stuck in a strange closing of my small program!
The program calculates the amount of years to reach a saving goal.
But its no problem in the code and I dont see the problem at all with my eyes.
When I run the program it stops strangely after all is done, this also when I have put cin.get(); which should make the program wait for a keypress.
No errors is detected. To the note is also added, that I have tried same code both in VS 2015 and Netbeans with same result. I made a new project in VS and copied the code from netbeans.
Hope for fast answer!
This is my code!
/* Savingscalculation.cpp : Defines the entry point for the console
application.*/
#include "stdafx.h"
#include "iostream"
using namespace std;
int main()
{
// Sätter variabler för programmet.
float inputsaving;
float savingoal;
int years = 0;
float interest;
float savingsum;
float savsum;
/* Sätter ett introduktionsmeddelande, som får programmet att upplevas mer
proffessionellt */
cout << " ------------------------------" << endl;
cout << "| Räkna ut hur många år ditt |" << endl;
cout << "| sparande kommer att ta! |" << endl;
cout << "| Tryck enter för att |" << endl;
cout << "| fortsätta. |" << endl;
cout << " ------------------------------" << endl;
cin.get();
cout << "---------------------------------" << endl;
cout << "Ange ett sparmål: "; // Användaren ombeds att ange ett sparmål
cin >> savingoal; // Det angivna sparmålet sätts till variabeln
cout << "---------------------------------" << endl;
cout << "Ange en årlig insättning: ";
// Användaren ombeds att ange en årlig insättning
cin >> inputsaving;
// Den angivna insättningen sätts till variabeln inputsaving
cout << "---------------------------------" << endl;
cout << "Ange en årlig sparränta: ";
// Användaren ombeds att ange en procentsats
cin >> interest; // Den angivna räntan sätts till variabeln interest
cout << "---------------------------------" << endl;
// Inmatning klar
// uträkning börjar //
// Algoritmen för att räkna ut en insättning + räntan för ett år
savingsum = inputsaving + inputsaving*(interest / 100); cout << endl;
savsum = savingsum;
/* Den uträknade summan kopieras in i variabeln
savsum för vidare uträkning i loopen */
while (savingsum < savingoal)
/* Jämför sparandet per år med sparmålet,
loopen fortsätter tills sparmålet uppnåtts. */
{
years++; // Räknar ut antal år med +1 för varje varv i loopen
savingsum = savingsum + savsum; /* Lägger på 1 års insättning inkl.
räntan för varje nytt år (varv) */
}
// uträkning klar //
// Sparmålet uppnått och resultatet skrivs ut på skärmen.
cout << "------------------------------------" << endl;
cout << "Du har uppnått ditt mål efter " << years << " år" << endl;
// Skriver ut antal år tills sparmålet uppnåtts
cout << "Ditt saldo är då " << savingsum << "kr" << endl;
// Skriver ut saldot som är när sparmålet är nått
cout << "------------------------------------" << endl;
cin.get();
return 0;
}
Regards
Henrik
When you use cin >> interest you record the '\n' you enter when you hit enter, which is then read on the next character for cin.get(). Try calling cin.get() a second time and it should work.
There is some whitespace(' ', '\n' etc.) in your buffer because after cin, the newline character gets into the input buffer. You can remove it by using cin.ignore() after cin >> interest or before cin.get().
Newbie in programming.
Want to add a message that say something like wrong input ..
but not sure how to do it.
The program works but want to add error message so the user can't press wrong button
have tried like an if statement inside the while loop like
if (input != "A" && input != "a" && input != "S" && input != "s")
cout << "not valid options << endl;
and please tell if I can make the code better in any way , always good to know if i am doing things in a good way or not.
here is my code to the program
#include <cmath>
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <string>
using namespace std;
int main()
{
locale swedish("swedish"); // tar in svenska tecken
locale::global(swedish);
int marker = 100; // marker som man börjar med
int num1, num2, num3; // numren som ska slumpas senare
string input;
cout << "Välkommen till mitt slumptalspel!!"<< endl ;
cout << " Detta spel går ut på att man ska få mer än 450" << endl;
cout << "så får man mer marker och får man mindre än 450 så förlorar man marker" << endl;
cout << " får man mer än 200 marker så vinner man !!" << endl;
cout << " och tar markerna slut så har man förlorat" << endl;
while (input != "A" && input != "a")
{
cout << "Du har " << marker << " marker. spela tryck [S] avsluta tryck [A]"<< endl;
cin >>input; // här bestämmer sig spelaren för om han vill spela eller inte med s eller a
if (input == "S" || input == "s")
{
num1 = rand() % 350 + 1; // här slumpas talen ut
num2 = rand() % 350 + 1;
num3 = rand() % 350 + 1;
cout << "[" << num1 << "][" << num2 << "][" << num3 << "]" << endl; // här skrivs num1 till 3 ut vad dom får för värden
srand(time(0));
if (num1 + num2 + num3 >= 450) // om väret tillsammans blir mer än 450
{
marker += 12; // lägg till 12 marker
cout << "du vann 12 marker =) " << endl;
}
else
{
cout << " Du förlorade 50 marker" << endl; // annars ta bort 50 marker
marker -= 50;
}
if (marker <= 0) // om markerna är 0 eller mindre
{ // så är spelet slut
cout << " Spelet är slut du har inga marker kvar" << endl;
return 0;
}
if (marker >= 200 )
{
cout << " du vann GRATTIS!!" << endl; // om man får 200 eller mer marker så vinner man och spelet avslutas sedan
return 0;
}
}
}
cout << "Spelet avslutas " << endl; // om man avbryter med A så avslutas det så här med detta meddelande
return 0;
}
Did try an switch as someone here said to me, then the problem is that it never stops, when the marker is 0 or less or 200 it should stop but it doesent,
I did the code like this
#include "stdafx.h"
#include <cmath>
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
locale swedish("swedish"); // tar in svenska tecken
locale::global(swedish);
int marker = 100; // marker som man börjar med
int num1, num2, num3; // numren som ska slumpas senare
char input;
int menu();
cout << "Välkommen till mitt slumptalspel!!" << endl;
cout << " Detta spel går ut på att man ska få mer än 450" << endl;
cout << "så får man mer marker och får man mindre än 450 så förlorar man marker" << endl;
cout << " får man mer än 200 marker så vinner man !!" << endl;
cout << " och tar markerna slut så har man förlorat" << endl;
do
{
cout << "Du har " << marker << " marker. spela tryck [S] avsluta tryck [A]" << endl;
cin >> input;
switch (input)
{
case 'A':
cout << " spelet avslutas" << endl;
return 0;
case 'S':
num1 = rand() % 350 + 1; // här slumpas talen ut
num2 = rand() % 350 + 1;
num3 = rand() % 350 + 1;
cout << "[" << num1 << "][" << num2 << "][" << num3 << "]" << endl; // här skrivs num1 till 3 ut vad dom får för värden
srand(time(0));
if (num1 + num2 + num3 >= 450) // om väret tillsammans blir mer än 450
{
marker += 12; // lägg till 12 marker
cout << "du vann 12 marker =) " << endl;
break;
}
else
{
cout << " Du förlorade 50 marker" << endl; // annars ta bort 50 marker
marker -= 50;
break;
}
if (marker <= 0) // om markerna är 0 eller mindre
{ // så är spelet slut
cout << " Spelet är slut du har inga marker kvar" << endl;
return 0;
}
if (marker >= 200)
{
cout << " du vann GRATTIS!!" << endl; // om man får 200 eller mer marker så vinner man och spelet avslutas sedan
return 0;
}
default:
cout << " nope inget giltigt val " << endl; // Om man väljer ett alternativ som inte finns så kommer detta meddelande fram
break;
}
} while (input != 'q' )
;
}
You can use switch statements to make it better, and in the default case, you can print your desired output:
switch(input)
{
case 'A':
//Do something and break.
case 'a':
//Do something and break.
.
.
.
default:
cout<<"not valid options" << endl;
}
I fixed it ,
#include "stdafx.h"
#include <cmath>
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
locale swedish("swedish"); // tar in svenska tecken
locale::global(swedish);
int marker = 100; // marker som man börjar med
int num1, num2, num3; // numren som ska slumpas senare
char input;
cout << "Välkommen till mitt slumptalspel!!" << endl;
cout << " Detta spel går ut på att man ska få mer än 450" << endl;
cout << "så får man mer marker och får man mindre än 450 så förlorar man marker" << endl;
cout << " får man mer än 200 marker så vinner man !!" << endl;
cout << " och tar markerna slut så har man förlorat" << endl;
cout << " tre tal kommer att slumpas och varje tal kan vara mellan 1 och 350" << endl;
cout << " LYCKA TILL!!!" << endl;
do
{
if (marker <= 0) // om markerna är 0 eller mindre
{ // så är spelet slut
cout << " Spelet är slut du har inga marker kvar" << endl;
return 0;
}
if (marker >= 200)
{
cout << " du vann GRATTIS!!" << endl; // om man får 200 eller mer marker så vinner man och spelet avslutas sedan
return 0;
}
cout << "Du har " << marker << " marker. spela tryck [S] avsluta tryck [A]" << endl;
cin >> input;
switch (input)
{
case 'A':
cout << " spelet avslutas" << endl;
return 0;
case 'a':
cout << " spelet avslutas" << endl;
return 0;
case 'S':
num1 = rand() % 350 + 1; // här slumpas talen ut
num2 = rand() % 350 + 1;
num3 = rand() % 350 + 1;
cout << "[" << num1 << "][" << num2 << "][" << num3 << "]" << endl; // här skrivs num1 till 3 ut vad dom får för värden
srand(time(0));
if (num1 + num2 + num3 >= 450) // om väret tillsammans blir mer än 450
{
marker += 12; // lägg till 12 marker
cout << "du vann 12 marker =) " << endl;
break;
}
else
{
cout << " Du förlorade 50 marker" << endl; // annars ta bort 50 marker
marker -= 50;
break;
}
case 's':
num1 = rand() % 350 + 1; // här slumpas talen ut
num2 = rand() % 350 + 1;
num3 = rand() % 350 + 1;
cout << "[" << num1 << "][" << num2 << "][" << num3 << "]" << endl; // här skrivs num1 till 3 ut vad dom får för värden
srand(time(0));
if (num1 + num2 + num3 >= 450) // om väret tillsammans blir mer än 450
{
marker += 12; // lägg till 12 marker
cout << "du vann 12 marker =) " << endl;
break;
}
else
{
cout << " Du förlorade 50 marker" << endl; // annars ta bort 50 marker
marker -= 50;
break;
}
default:
cout << " nope inget giltigt val försök igen " << endl; // Om man väljer ett alternativ som inte finns så kommer detta meddelande fram
break;
}
} while (input != 'QK')
;
}