if else

Status
Niet open voor verdere reacties.

pinda kaas

Gebruiker
Lid geworden
23 okt 2010
Berichten
19
Hoi lezers,

Ik heb een vraag ik ben c++ aan het leren (proberen) en nu komt er een fout hij zegt dat } niet goed is net als else zo als deze:
[CPP]#include <iostream>
#inculde <stdio.h>
using namespace std;
int inbraakalarm()
{
string antwoord;
cout << "ben je een hacker (j of n)";
cin >> antwoord;
if (antwoord == "j")
{
cout << "politie is onderweg"
}
else;
{
cout << "je w8woord niet meer verkeert typen"
}

system("pause")
}
int main()
{
inbraakalarm()
}
[/CPP]
 
Probeer eens:

if (antwoord == "j")
{
cout << "politie is onderweg";
}
else
{
cout << "je w8woord niet meer verkeert typen";
}

system("pause");
}
 
krijg nu dit

#include <iostream>
#inculde <stdio.h>
using namespace std;
int main()
{
int antwoord
antwoord = q
if (antwoord == "j")
{
cout << "politie is onderweg";
}
else
{
cout << "je w8woord niet meer verkeert typen";
}

system("pause");
}
}

de waarde toe kennen lukt hier opeens niet meer
 
De puntkomma achter else zorgt ervoor dat de else beëindigd wordt en dus leeg is (de accolades daarna is normaal geen probleem). Verder geef je aan dat de functie inbraakalarm van het type int is, maar deze retourneert geen waarde. Indien je een functie alleen voor zijn actie nodig hebt dan maak je het type het beste void.

[cpp]
void inbraakalarm() {
string antwoord;
cout << "Ben je een hacker (j of n): ";
cin >> antwoord;
if (antwoord == "j") {
cout << "Politie is onderweg\n";
} else {
cout << "Je w8woord niet meer verkeerd typen\n";
}
cout << "Druk op een toets om verder te gaan..."; // het gebruik van system("PAUSE") werkt alleen op systemen die een PAUSE commando hebben
cin.get(); // op deze manier werkt het dus op ieder systeem (en daarbij wordt het op deze manier ook altijd in dezelfde taal gedaan)
}
[/cpp]

(eigenlijk zou je ook nog moeten controleren of het inlezen gelukt is en indien nodig daarop moeten reageren, maar bij een string zal het inlezen niet snel verkeerd gaan)
 
krijg nu dit
[cpp]
int main()
{
int antwoord
antwoord = q
if (antwoord == "j")
// ...
[/cpp]
de waarde toe kennen lukt hier opeens niet meer

De variabele antwoord is nu van het type int, welke voor gehele getallen is. De toekenning van q aan antwoord is verder ook ongeldig, 'q' zal gewoon de ascii-waarde van de letter q geven, maar q zoals jij het gebruikt heeft geen enkele betekenis binnen de code en is daarom ook ongeldig (want q is geen waarde die aan antwoord kan worden toegekend in deze situatie).

Daarna vergelijk je het antwoord dat van het type int is met een string (tekst tussen "" wordt gezien als string), welke ook ongeldig is. Het probleem uit je originele post is dat eigenlijk ook gewoon dat je de verkeerde header (#include <string>) bent vergeten te includen. ;)
 
nu heb ik een probleem met de main hij geeft een error bij een }
en moet ik het sub progamma anders op roepen?
[CPP]int main() {
string wachtwoord;
cout << "wachtwoord: ";
cin >> wachtwoord;
if (wachtwoord == "j")
{
cout << "welkom agent kaaskop";
} else {
inbraakalarm()
} //hier geeft hij een error[/CPP]

Hij is compiler
 
Laatst bewerkt:
Volgens mij mis je een puntkomma ; na de functie aanroep (dus een puntkomma na "inbraakalarm()".
 
nu sluit hij meteen af als ik iets anders doe heb nu dit:
[CPP]#include <iostream>
using namespace std;
void inbraakalarm() {
string antwoord;
cout << "Ben je een hacker (j of n): ";
cin >> antwoord;
if (antwoord == "j") {
cout << "Politie is onderweg\n";
cin.get();
} else {
cout << "Je w8woord niet meer verkeerd typen\n";
}
cout << "Druk op een toets om verder te gaan..."; // het gebruik van system("PAUSE") werkt alleen op systemen die een PAUSE commando hebben
cin.get(); // op deze manier werkt het dus op ieder systeem (en daarbij wordt het op deze manier ook altijd in dezelfde taal gedaan)
}
int main() {
string wachtwoord;
cout << "wachtwoord: ";
cin >> wachtwoord;
if (wachtwoord == "j")
{
cout << "welkom agent kaaskop";
} else {
inbraakalarm();
}
cout << "\n druk op een toets om door te gaan...";
cin.get();
}[/CPP]
edit:
opgelost
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan