1.Miten saan muutettua pienet kirjaimet isoiksi kirjaimiksi?
2.Jos mulla on taulukko:
char Merkit[10] = {"a","b","c");
ja ohjelmalle syötetään kirjain "a", niin miten saan helposti tietoon kuinka monentena tämä syötetty kijain on taulukossa?
Toivottavasti selitin riittävän tarkasti.
1. Käyt merkkijonossa olevat kirjaimet loopilla läpi ja lisää kunkin merkin arvoa 32:lla
char b[7] = "isoksi"; for (a = 0; a < 6; a++) b[a]+=32;
2. Eli käyt taas läpi for loopilla ja vertaat. Ja käytä break; ia jotta voit lopettaa luupin. Ja for luupin muuttujan arvossa on se luku monentenako se on taulukossa.
if (annettuarvo == 'a')...
2. Ihan yksinkertaisesti:
for (int i=0; i<10; i++) { // Tietysti 10 paikalla on taulukon koko if (Merkit[i]=='a') cout << "Merkki on taulukon " << i << ":s solu\n"; }
Ja huomaa sitten että char-muuttujaan laitetaan merkki tyyliin char c='a'; eikä char c="a";
Jos taas käytä char-osoittimia, vertailu tehdään strcmp():llä.
Edit. Tietysti joku ehti edelle kun vitkuttelin tuon viestin kanssa.
rndprogy kirjoitti:
1. Käyt merkkijonossa olevat kirjaimet loopilla läpi ja lisää kunkin merkin arvoa 32:lla
Jos jonossa on muitakin merkkejä kuin kirjaimia, tuo ei tuollaisenaan toimi hyvin(sekottaa muutkin merkit), vaan vaatii esim. ctype.h:sta löytyvän isalpha-funktion kirjaimia tarkistamaan. Helppo tapa on myös ctype:n toupper:
#include <ctype.h> ... char b[7] = "isoksi"; for (a = 0; a < 6; a++) b[a] = toupper (b[a]);
Ja isojen kirjainten ascii-koodit on kyllä 32 pienemmät kuin pienten (A=65, a=97), plussan paikalle siis miinus ;)
Zach kirjoitti:
Ja isojen kirjainten ascii-koodit on kyllä 32 pienemmät kuin pienten (A=65, a=97), plussan paikalle siis miinus ;)
Aih :) Kyllähän tuon tiesin. Ajattelin vain "loogisesti" eli pieni kirjain, pienempi luku.
Aihe on jo aika vanha, joten et voi enää vastata siihen.