Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: switch,case

Sivun loppuun

HelvetinKapteeni [14.01.2006 17:46:29]

#

kuinka saisin tämän valikon toimimaan?

#include <iostream.h>
int main(void)
{
	char kirjain;
	cout << "P:pelit T:tarinat M:matsi L:lopeta \n";
	cin >> kirjain;
	switch(kirjain) {
	case P:
		cout << "Menet siis pelaamaan pelejä...\n";
		break;
	case T:
		cout << "Siis menet tarinoita lukemaan\n";
		break;
	case M:
		cout << "Siis menet painimatsiin?\n";
		break;
	case L:
		cout <<"Siis lopetat?!\n";
		break;
	default:
		cout << "Ei ole valittavissa...\n";
	return 0;
	}
}

Laitoin tilapäisesti caseihin kirjaimet kun en muutakaan keksinyt :)

Baglair [14.01.2006 18:03:18]

#

#include <iostream.h>

int main(void)
{
    char kirjain;
    cout << "P:pelit T:tarinat M:matsi L:lopeta \n";
    cin >> kirjain;
//Tarttee laittaa nuo kirjaimet ' ' väliin. Huom! myös isoilla ja pienillä kirjaimilla väliä joten tehdään kaikista kirjaimista ensin isoja:
   if('a' <= kirjain && kirjain <= 'z')   {
      kirjain = kirjain - 'a' + 'A';
   }

    switch(kirjain) {
    case 'P':
        cout << "Menet siis pelaamaan pelejä...\n";
        break;
    case 'T':
        cout << "Siis menet tarinoita lukemaan\n";
        break;
    case 'M':
        cout << "Siis menet painimatsiin?\n";
        break;
    case 'L':
        cout <<"Siis lopetat?!\n";
        break;
    default:
        cout << "Ei ole valittavissa...\n";
    return 0;
    }
}

Metabolix [14.01.2006 18:19:19]

#

Baglair: Tuollainen vertailu ei edelleenkään toimi. Ja on vielä väärin päinkin. Tämä sen sijaan toimisi:
if (kirjain <= 'z' && kirjain >= 'a') ... muutetaan kokoa.

Edit: Menit näköjään korjaamaan. Hyvä niin.

Baglair [14.01.2006 18:23:47]

#

Mikäs nyt mättää? Juu tosiaan olit pari sekkaa myöhäs :)
Edit: selvä

HelvetinKapteeni [14.01.2006 19:10:49]

#

Kiitti. Nyt pelittää :D

Azure [14.01.2006 21:58:57]

#

Minäpä kysyn myös, miksei tämä pelitä?

#include <iostream>
using namespace std;


int main(void)
{
 char merkki[22];
 cout << "TESTER" << endl;
 cout << "Valitse A,B,C tai D ja paina enter" << endl;
 {
 cin >> merkki;
 switch(merkki)
 {
  case 'A':
    cout << "Se on A kirjain";
  break;
  case 'B':
    cout << "Se on B kirjain";
  break;
  case 'C':
    cout << "Se on C kirjain";
  break;
  case 'D':
    cout << "Se on D kirjain";
  break;
  default:
    cout << "Jahas ajattelit alkaa kapinoimaan";
  break;
   }
 }
}

Metabolix [14.01.2006 22:13:54]

#

Ensinnäkin se return 0; on suotava, vaikkei C++-standardi sitä vaadikaan. Mutta sitähän et tosiaan kysynyt.

Toiseksi niitä virheilmoituksia kannattaa lukea. Siellä lukee hyvin selvästi, että char-taulukko ei ole sama asia kuin char. Itse saat kyllä sen korjata. Vertaa aiempaan koodiin tässä aiheessa ja mieti, mikä on suurin ero.

kooderi [14.01.2006 22:24:02]

#

Kirjaimia testattaessa kannattaa (siis vain jos haluaa tsekata sekä isot että pienet syötteet) tehdä caset näin:

case 'A':
case 'a':
    // toiminta tänne
break;

Sivun alkuun

Vastaus

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

Tietoa sivustosta