Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Ehtolause C++

Sivun loppuun

Azure [31.12.2005 18:56:40]

#

#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.]

Mazuli [31.12.2005 19:05:21]

#

Oletko lukenut nyt mitään opasta?... Kannattaa itse etsiä vastauksia ennen kuin kysyyy muilta.

juha127 [31.12.2005 19:16:33]

#

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.

rndprogy [31.12.2005 19:20:58]

#

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

Azure [31.12.2005 19:27:35]

#

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)

Metabolix [31.12.2005 19:31:15]

#

Ei kannata välittää conio.h:sta. Otat vain sen ja getch():n pois.

Azure [31.12.2005 19:34:11]

#

Kyllä minulla toimi ihan tuon getch():n kanssa, mutta mitä se tekee?

juha127 [31.12.2005 19:58:38]

#

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.

Azure [31.12.2005 20:34:09]

#

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;

}

hunajavohveli [31.12.2005 21:07:12]

#

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.

juha127 [31.12.2005 21:18:31]

#

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

hunajavohveli [31.12.2005 21:52:03]

#

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ä.

TeeVee [01.01.2006 00:50:12]

#

Korvatkaa lapsoset se conio.h ja getch() C++ koodissa cin.get():llä. Lue Hassunhauskaa C++ opasta niin ymmärrät miten teet tuollaisen ohjelman.

ristokor [01.01.2006 12:55:53]

#

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 [01.01.2006 13:21:02]

#

rndprogy kirjoitti:

Tuo ei sitten todellakaan toimi. Ja sen näkee testaamattakin :P

Enpäs sitten ollut tutustunut string luokkaan.

ristokor [01.01.2006 15:30:38]

#

Uups. Pieni virhe pääsi koodiin. continue on väärin, pitäisi olla continue; //huomaa puolipiste

ZcMander [01.01.2006 15:44:31]

#

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.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta