Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Break- komento switch (case)- rakenteessa

Sivun loppuun

EgE915 [25.10.2005 13:05:34]

#

elikkäs: aloittelija kun olen, teen vasta yksinkertaisia laskimia, mutta tuli pieni brobleema.
Miten tässä tapauksessa while- silmukan saisi lopetettua switch (case)- rakenteen sisältä?:

#include <iostream.h>

int main(void)
{
     int valinta = 0;  // luodaan muuttujat
     int valinta2 = 0;
     double kerrottava = 0;
     double kerroin = 0;
     double jaettava = 0;
     double jakaja = 0;
     double yhteenlaskettava1 = 0;
     double yhteenlaskettava2 = 0;
     double vahennettava = 0;
     double vahentaja = 0;
     double tulos = 0;


     cout << "**********************" << endl;
     cout << "* -=:8 LASKIN 8:=-   *" << endl;
     cout << "* made by Nakkisormi *" << endl;
     cout << "**********************" << endl;

     while (1)  // kierre aloitetaan
     {

           cout << endl;
           cout << "1)Kertolasku 2)Jakolasku 3)Yhteenlasku 4)Vahennyslasku";
           cout << endl;
           cout << "Anna valinta 1, 2, 3, tai 4: ";
           cin >> valinta;

           switch (valinta) //laskun valinta
           {
                  case 1:
                       cout << "luku ";
                       cin >> kerrottava;
                       cout << " kertaa ";
                       cin >> kerroin;
                       cout << endl;
                       cout << endl;
                       cout << kerrottava << " * " << kerroin << " = ";
                       tulos = kerrottava * kerroin;
                       cout << tulos;
                       break;
                  case 2:
                       cout << "luku ";
                       cin >> jaettava;
                       cout << " jaettuna luvulla ";
                       cin >> jakaja;
                       cout << endl;
                       cout << endl;
                       cout << jaettava << " / " << jakaja << " = ";
                       tulos = jaettava / jakaja;
                       cout << tulos;
                       break;
                  case 3:
                       cout << "luku ";
                       cin >> yhteenlaskettava1;
                       cout << " plus ";
                       cin >> yhteenlaskettava2;
                       cout << endl;
                       cout << endl;
                       cout << yhteenlaskettava1 << " + " << yhteenlaskettava2 << " = ";
                       tulos = yhteenlaskettava1 + yhteenlaskettava2;
                       cout << tulos;
                       break;
                  case 4:
                       cout << "luku ";
                       cin >> vahennettava;
                       cout << " miinus ";
                       cin >> vahentaja;
                       cout << endl;
                       cout << endl;
                       cout << vahennettava << " - " << vahentaja << " = ";
                       tulos = vahennettava - vahentaja;
                       cout << tulos;
                       break;
                  default:
                          cout << "Vaara valinta";
           }
     cout << endl;
     cout << "Haluatko jatkaa? (1=Y/2=N)";
     cin >> valinta2;

     switch (valinta2)  // kysytään halutaanko jatkaa
     {
            case 1:
                 system("CLS");
                 break;
            case 2:    // käsittääkseni tähän pitäisi laittaa jonkinlainen break
                 break;  // komento, mutta jos laitan break; se vain katkaisee
            default:     // switch (case)- luupin. mikä neuvoksi?
                 cout << "Vaara valinta!";
                 cout << endl;
     }

     continue;
     }
return 0;  // lopetetaan 'pääohjelma'
}

miten while- silmukan siis saa katkaistua tuon "haluatko jatkaa" luupin sisältä?

Blaze [25.10.2005 14:05:02]

#

Älä looppaa while(1) vaan while(jokuflagi), jonka sitten asetat nollaksi kun pitää pääst pois.

kaviaari [25.10.2005 14:20:15]

#

Ja tulipahan vaan mieleen ettei nollalla voi jakaa. :/

Jaska [25.10.2005 14:30:18]

#

Eikö käyttöliittymästä saisi nopeamman jos käyttäjä voisi syöttää laskut muodossa (5+3)*8 ja vastaukseksi tulisi 64?

Megant [25.10.2005 15:07:18]

#

Jaska kirjoitti:

Eikö käyttöliittymästä saisi nopeamman jos käyttäjä voisi syöttää laskut muodossa (5+3)*8 ja vastaukseksi tulisi 64?

Hänhän sanoi, että on aloittelija ja tekee yksinkertaisia laskimia.
Tuskin kukaan tuommoista tee ensimmäisenä ohjelmana.

EgE915 [25.10.2005 21:21:43]

#

Blaze kirjoitti:

Älä looppaa while(1) vaan while(jokuflagi), jonka sitten asetat nollaksi kun pitää pääst pois.

Err... tuotanoin, antaisiko joku pienen esimerkin (Falgi? va?) :P

Aruviel [25.10.2005 21:28:02]

#

bool lopetan = FALSE;
while(lopetan != TRUE) {
  // Pistä haluamasi casen sisään
  lopetan = TRUE;
}

EgE915 [25.10.2005 21:31:57]

#

kaviaari kirjoitti:

Ja tulipahan vaan mieleen ettei nollalla voi jakaa. :/

No ei voi ei, koodista puuttuukin rivien 46,47 välistä pätkä

if (jakaja == 0)
{
      cout << endl;
      cout << "ei nollalla voi jakaa. "
      break;
}

Juu, mutta kiitosta tosta 'flagi' esimerkistä,
nyt toimii niinkuin pitääkin >_>


Sivun alkuun

Vastaus

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

Tietoa sivustosta