Kezdőoldal » Számítástechnika » Programozás » C++. Sziasztok. Írtam egy...

C++. Sziasztok. Írtam egy programot, de nem tökéletes. Kérem valaki segítsen?

Figyelt kérdés

"Egy olyan program kell ami megszámolja, hogy egy karakterláncban an angol ábécé egy adott betűje hányszor szerepel. A program kérje be a karakterláncot és a keresendő betűt. Keresendő betűként csak az angol ábécé betűit fogadja el."

Minden megvan azon kívül, hogy a keresendő betűt nem tudom ellenőrzötten bevinni. :( probálkoztam, itt lentebb de nem csinálja.

#include <iostream>

#include <cstring>

#include <cstdlib>


using namespace std;

int main()

{

int j, i, karakter;

char sor[100], bet, betu;

char magyar[10]={'á','é','í','ó','ö','ő','ú','ü','ű'};

cout<<"adja meg a sort"<<endl;

cin.getline(sor,100);

karakter=0;

cout<<"adja meg a keresett betut"<<endl;

vissza:

cin>>betu;

for(i=0; i<strlen(magyar); i++)

{

if(betu==magyar[i])

{

cout<<"A megadott betu nem az angol abc resze!\n Adj meg masikat!"<<endl;

goto vissza;

}

}

for(j=0; j<strlen(sor); j++)

{

if(sor[j]==betu) karakter++;

bet=toupper(sor[j]);

cout<<bet;

}


cout<<endl;

cout<<"A megadott beuk szama: "<<karakter<<endl;

system("pause");

return 0;

}


Előre is köszönöm!


2013. nov. 29. 21:27
 1/3 anonim ***** válasza:
100%

Hát ez így nem fog menni. Eleve az egész semmit nem ér, ha én mondjuk ß-t írok.


A char változó egy szám, lényegében az adott karakter számkódja van benne. Ezért pl. a+b értemes bizonyos értelemben.


Az angol ábécé betüi egymás mellett vannak. Tehát elég megnézned, hogy a beadott nagyobb egyenlő 'a'-nál és kisebb egyenlő 'z'-nél.


Legalábbis ez C-ben így van, C++-ban nem próbáltam ilyet, de nagyon meglepne, ha ez megváltozott volna.

2013. nov. 29. 21:35
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:
100%

(Legközelebb légyszives pästebin-re feltölteni a kódod, mert sokkal könnyebben olvasható, gyorsabban és kevesebb fáradsággal tudok (tudunk) válaszolni. Köszi!)


A probléma abból ered, hogy a char 256 'helyes', ebbe viszont nem fér bele a magyar ABC.

Ezt te is kipróbálhatod, a következő paranccsal:

printf("%d %d\n",'a', 'á'); ///'á'=50081


Ezért soha nem lesz egyenlő, viszont valami csonk lesz a képernyőn.

Próbálhatod utf_8 -ként tárolni a karaktereidet, de sokkal egyszerűbb az első válaszadó módszerével.

2013. nov. 29. 21:45
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:
Jó lett. Nagyon köszönöm! megy a pont
2013. nov. 29. 22:19

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!