Tässä on hyppysellinen koodia joka sisältää 5 virhettä, näettekö mitkä 5 seikkaa on mennyt pieleen :O ohjelman pitäisi kysyä salasanaa jos laitan salasanaksi Possu se sanoo oikein jos laitan jotain muuta se sanoo väärin...
#include <iostream.h> void main() { char salis; while (1) { cout << "Salasana? "; cin >> salis; if (salis == "possu") { cout << endl << "Oikein!"; } if (salis != "possu") { cout << endl << "Väärin!"; } }
Sulla ei ole char-taulukkona tota salista (tai stringinä, moi sooda).
En sitten tiedä, että vaikuttaako nimiavaruus std noihin couttiin ja ciniin, kun käytät vanhentunutta iostream.h-includea. Mieluummin #include <iostream>
Loput tulevat väärästä vertailutavasta. Tässä vertaat merkkiä merkkijonoon, hyi hyi. Mutta vaikka salis olisikin merkkijono, olisi noiden vertailuoperaattoreiden käyttö kiellettyä.
Muuta salis string
iksi. Char on yksi merkki (tai tarkemmin yhden tavun kokoinen luku), ei merkkijono. Myös iostream.h-tyyli on vanhentunut; laita #include <iostream>
ja lisää rivi using namespace std;
std-nimiavaruuden ottamiseksi käyttöön (tai lisää "std::" stringin, cinin ja coutin eteen)
muoks: äh, etana :(
iostream.h -> iostream
using namespace std;
char salis -> std::string salis;
Näillä muutoksillahan tuo jo toimii.
Edit: Hidas kun mikä :I Jos haluat käyttää c-tyylisiä merkkijonoja niin vertailu onnistuu sitten seuraavasti: strcmp(mjono1, mjono2). Ja jäi näköjään vielä void main huomaamatta.
Tulee ihan mieleen ne lastenlehtien "etsi viisi virhettä" -kuvat.
lainaus:
void main()
int main(int argc, char *argv[])
lainaus:
char salis;
String salis;
lainaus:
while (1)
Tämän lopettava aaltosulku puuttuu.
Edit: olinpas hidas. Liikaa tageja, I reckon.
Blaze kirjoitti:
String salis;
se on kylläkin pienellä :P
Kun laittelen noita teidän vinkkejä ni erroreita tulee sellaset 10 ^.^
Esim:
#include <iostream.h> ni tulee 5 virhettä
#include <iostream> ni tulee 11 virhettä..... -.-
Pah ei toemi, joku mättää ja vitusti.
Juuh taitaa olla mun C++ uran loppu, meinaan vaan jos mulla ei o oikeen laista C++ ohjelmaa... paska...
sooda kirjoitti:
Blaze kirjoitti:
String salis;se on kylläkin pienellä :P
Suokaa anteeksi, oon koodannu koko päivän Javalla.
#include <iostream> // Oikea otsikko #include <string> // Toinen, että saa string- eli tekstiluokan käyttöön using namespace std; // Näille kaveri int main(int argc, char **argv) // Oikea esittely { string salis; // Sitten se string-tyyppi while (1) { // Aaltosulku selvempään kohti cout << "Salasana? "; cin >> salis; if (salis == "possu") { cout << "Oikein!" << endl; // Rivinvaihto yleensä loppuun eikä ennen sanaa. } else { // Opettelepa se else-lause. cout << "Väärin!" << endl; } } // Sulkeva sulku puuttui return 0; // Ja yleensä näinkin on tapana olla }
Jossain varmaan kannattaa olla myös break, että silmukka loppuisi.
Enkö jossain äskeisessä aiheessa (oliko se se RPG-juttu) kehottanut lukemaan opassarjaa?
#include <iostream> #include <string> using namespace std; int main() { std::string salis; while (1) { cout << "Salasana? "; cin >> salis; if (salis == "possu") { cout << endl << "Oikein!"; break; //poistutaan silmukasta } if (salis != "possu") { cout << endl << "Väärin!"; } } return 0; }
Jos sulla on oikeen lainen C++ ohjelma (sic) niin allaoleva kääntyy ja tekee sen, mitä haluat.
#include <iostream> #include <string> int main() { std::string salis; while (1) { std::cout << "Salasana? "; std::cin >> salis; if (salis == "possu") std::cout << std::endl << "Oikein!"; else std::cout << std::endl << "Väärin!"; } }
EDIT: firebugin koodissa on virhe, siinä on using namespace std, mutta kuitenkin std::string.
Aihe on jo aika vanha, joten et voi enää vastata siihen.