#include <iostream> #include <string> using namespace std; // std:cout std::cin std::string int main() { cout << "Mitä kuuluu?\n"; string vastaus; cin >> vastaus; if ("Hyvää") cout << "Sepä kiva\n"; else cout << "Et vastannut\n"; else ("Huonoa") cout << "Sepä harmi\n"; return 0; }
Miten tätä koodia pitäisi muokata että kun kirjoittaa "Hyvää" niin ohjelma vastaa "Sepä kiva" ja kun kirjoittaa taas vastineeksi "Huonoa" niin se vastaa "Sepä harmi" eikä vastaa siihenki että "Sepä kiva" ja jos ei kirjoita mitään niin se vastaa "Et vastannut"?
Yritin näitä else,else if,if rakenteita, mutta en saanut niillä mitään aikaan tai ongelmanani oli vain se, että en osannut laittaa niitä oikeisiin paikkoihin. Mikä vika?
[Hyvä parannus olis sekin että jos kirjoittaa kenttään jotain hölynpölyä niin ohjelma ei hyväksyisi sitä. Tämänkin voisi liittää vielä jotenkin tuohon koodiin.]
Oletko lukenut nyt mitään opasta?... Kannattaa itse etsiä vastauksia ennen kuin kysyyy muilta.
korjausta tuohon koodiin:
#include <iostream> #include <string> #include <conio.h> using namespace std; // std:cout std::cin std::string int main() { cout << "Mitä kuuluu?\n"; string vastaus; cin >> vastaus; if (vastaus == "Hyvaa") cout << "Sepä kiva\n";//Hyvää kannattaa muuttaa Hyvaa se toimii varmemmin else if (vastaus == "Huonoa") cout << "Sepä harmi\n";//käytetään else if eikä else else else cout << "Et vastannut\n"; getch(); return 0; }
Alkuperäistä koodia en testannut, mutta tuon pitäisi toimia.
juha127 kirjoitti:
korjausta tuohon koodiin:
#include <iostream> #include <string> #include <conio.h> using namespace std; // std:cout std::cin std::string int main() { cout << "Mitä kuuluu?\n"; string vastaus; cin >> vastaus; if (vastaus == "Hyvaa") cout << "Sepä kiva\n";//Hyvää kannattaa muuttaa Hyvaa se toimii varmemmin else if (vastaus == "Huonoa") cout << "Sepä harmi\n";//käytetään else if eikä else else else cout << "Et vastannut\n"; getch(); return 0; }Alkuperäistä koodia en testannut, mutta tuon pitäisi toimia.
Tuo ei sitten todellakaan toimi. Ja sen näkee testaamattakin :P
Mikä tämä conio.h on ja mitä eroa on else ja else if rakenteella?
(Olen katsonu oppaista, joku tyhmä virhe minulla oli ku käytin pari kertaa tuota else if rakennettakin)
Ei kannata välittää conio.h:sta. Otat vain sen ja getch():n pois.
Kyllä minulla toimi ihan tuon getch():n kanssa, mutta mitä se tekee?
Tuo conio.h getch() voi käyttää tämmäisessä pienemmässä ohjelmassa. Se jättää ohjelman odottamaan jonkin näppäimen painamista. Voit tietysti laittaa tuon tilalle cin.
Tuossa getch() ei ole järkeä käyttää tämän isommassa ohjelmassa.
Yritin vielä lisätä siihen while- silmukan, mutta mikä tässä on sitten vikana?
#include <iostream> #include <string> #include <conio.h> using namespace std; // std:cout std::cin std::string int main(void) while (1){ cout << "Mitä kuuluu?\n"; string vastaus; cin >> vastaus; if (vastaus == "Hyvaa") { cout << "Sepä kiva\n"; } break; if (vastaus == "Huonoa") { cout << "Sepä harmi\n"; } break; else cout << "Ei tuo ole mikään järkevä vastaus >:( \n"; continue; }
Aloitapa vaikka käymällä läpi tämä opassarja, niin ymmärrät, mikä on vikana. Siinä on selitetty iffit ja elset, niiden tarkoitukset ja syntaksit.
Pitäisiköhän tuon int main(void) jälkeen laittaa { ja loppuun }
Tuo on yleensä niitä yksinkertaisia virheitä joita ei itse huomaa vaikka kuinka etsisi ja yrittäisi korjata. :D
No kyllähän tuon nyt huomaa viimeistään siinä vaiheessa, kun kääntäjä sanoo 'parse error before "while"', jonka jälkeen katsotaan tietysti, mikä on pielessä ennen whileä.
Korvatkaa lapsoset se conio.h ja getch() C++ koodissa cin.get():llä. Lue Hassunhauskaa C++ opasta niin ymmärrät miten teet tuollaisen ohjelman.
Tällä koodilla sain itse toimimaan. Harmiksi vain cin.get ei toiminut joten piti käyttää system pausea.
Kommentointi on sitten jäänyt vähälle, enkä yleensäkään kommentoi.
#include <iostream> #include <string> using namespace std; int main() { bool loppu=false; while (loppu!=true) // Kertaa, jos loppu ei ole tosi. { cout <<"Mita kuuluu?" <<endl; string vastaus; cin >>vastaus; if (vastaus=="hyvaa") { cout <<"Sepa kiva!" <<endl; loppu=true; cin.get(); system("pause>nul"); break; } if (vastaus=="huonoa") { cout <<"Sepa harmi!" <<endl; loppu=true; cin.get(); system("pause>nul"); break; } else { cout <<"Sanopas jotain muuta." <<endl; loppu=false; cin.get(); system("pause>nul"); continue } } }
rndprogy kirjoitti:
Tuo ei sitten todellakaan toimi. Ja sen näkee testaamattakin :P
Enpäs sitten ollut tutustunut string luokkaan.
Uups. Pieni virhe pääsi koodiin. continue on väärin, pitäisi olla continue; //huomaa puolipiste
Ei mitään järkeä antaa valmista koodia, ennemmin kehoittasin lukemaan Ohjelmointiputka C-oppaan tai Hassun hauskan C++ oppaan.
Nimittäin perus asiat ei ole ollenkaan hallussa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.