Switch-rakenteessa jotain outoa...

Kysyn käyttäjältä merkin ja numeron 2-alkioiseen char-taulukkoon. Annettu merkki pitää kuitenkin vaihtaa numeroksi.

switch (alkupiste[0])
{
case 'a': alkupiste[0]=1;
break;
case 'b': alkupiste[0]=2;
break;
case 'c': alkupiste[0]=3;
break;
case 'd': alkupiste[0]=4;
break;
}

Näin yritän, mutta tällä tavoin antamani luvut heittävät ekaan alkioon ihmeellisen merkin, esim.. pata ja hertta. Millä tavoin saisin ensimmäiseen alkioon muutettua nimenomaan 1:n 2:n 3:n jne...??
7749
Äänestä

Muut lukivat myös

Vastaukset 7

Vanhimmat

et voi tehdä noin. voit kyllä laittaa merkin esim '1' (char) numeerisen ykkösen (int) sijaan.

tietysti aina helpottaisi kuulla mihin moista tarvitset, niin voisi antaa ehdottaa parempaa ratkaisutapaa.

Äänestä
  • vaikka en ymmärräkään, niin voit tehdä tyyppimuunnoksen esim std::cout

    Äänestä

  • Miksi noin ei voisi tehdä? Tuossa tapauksessa pitää vaan tietää numeroita vastaavat ascii-arvot. Helpommalla pääsee kun sijoitat

    case 'a':
    alkupiste[0] = '1';
    break;

    jne.

    Äänestä

  • charrin kirjoitti:

    Miksi noin ei voisi tehdä? Tuossa tapauksessa pitää vaan tietää numeroita vastaavat ascii-arvot. Helpommalla pääsee kun sijoitat

    case 'a':
    alkupiste[0] = '1';
    break;

    jne.

    Kiitos... tällähän se ratkesi...

    Äänestä

  • charrin kirjoitti:

    Miksi noin ei voisi tehdä? Tuossa tapauksessa pitää vaan tietää numeroita vastaavat ascii-arvot. Helpommalla pääsee kun sijoitat

    case 'a':
    alkupiste[0] = '1';
    break;

    jne.

    "Miksi noin ei voisi tehdä?"
    Koska siinä ei ole mitään logiikkaa. Sama kuin kokonaislukutaulukkoon syötettäisiin merkkijono.

    "voit kyllä laittaa merkin esim '1' (char) numeerisen ykkösen (int) sijaan. "

    "Helpommalla pääsee kun sijoitat
    case 'a':
    alkupiste[0] = '1';
    break; "

    Äänestä

  • charrin kirjoitti:

    Miksi noin ei voisi tehdä? Tuossa tapauksessa pitää vaan tietää numeroita vastaavat ascii-arvot. Helpommalla pääsee kun sijoitat

    case 'a':
    alkupiste[0] = '1';
    break;

    jne.

    alkupiste[0] =('1'-'a');

    Äänestä

  • Koodissa on virhe, joka myöhemmillä ohjeilla korjaantuikin, mutta en kyllä ymmärrä mikä tässä nyt järjetöntä on? Ehkäpä kyseessä on harjoitustyö, jossa opetetaan char- ja int-tyyppien "eroja"?

    Äänestä

Kommentoi aloitusta


Tähän jos sais apua.. kirjoitti:

Kysyn käyttäjältä merkin ja numeron 2-alkioiseen char-taulukkoon. Annettu merkki pitää kuitenkin vaihtaa numeroksi.

switch (alkupiste[0])
{
case 'a': alkupiste[0]=1;
break;
case 'b': alkupiste[0]=2;
break;
case 'c': alkupiste[0]=3;
break;
case 'd': alkupiste[0]=4;
break;
}

Näin yritän, mutta tällä tavoin antamani luvut heittävät ekaan alkioon ihmeellisen merkin, esim.. pata ja hertta. Millä tavoin saisin ensimmäiseen alkioon muutettua nimenomaan 1:n 2:n 3:n jne...??

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu