Olen aloittelija C++:assa, ja olenkin tehnyt jo hienon ohjelman joka piirtää erittäin hienon pyramidin. Homma menee siinä vaiheessa pipariksi kun korkeudeksi annetaankin kirjaimia. Mitenkähän tämmöiset "kielletyt merkit" voisi toteuttaa?
Käyt loopissa taulukon (tekstin) läpi merkki merkiltä ja tutkit onko merkki kelpaava. Kun vastaan tulee \0 merkki tai kielletty merkki, lopetat loopin breakilla (ja kerrot jos merkki oli kielletty).
Streamin (cin) käytössä en osaa vastata, mutta stdio.h:n funktioilla sen voi tehdä näin:
#include <stdio.h> #define SUURIN_LUKU 25 int LueLuku(void) { int Luku; while (1) { printf("\nAnna luku: "); /* Luetaan, tarkistetaan, että luettiin yksi kevollinen arvo ja ettei arvo ole suurempi kuin haluamme. */ if ((scanf("%i", &Luku) != 1) || (Luku > SUURIN_LUKU)) { /* Ilmoitetaan virhe, tyhjennetään puskuri ja yritetään uudestaan */ printf("\n Virhe!!! \n"); do { Luku = getc(stdin); } while (Luku != '\n' && Luku != EOF); } else /* Onnistui, palautetaan */ return Luku; } }
Törmäsimpäs tässä ihan mäihällä esimerkkiin joka tekee juuri tämän cin:llä. En kyllä tajua miten tämä tunnistaa mikä merkki on kyseessä, mut anyway:
while (!cin) { cout << "ei merkkeja"; cin.clear (); cin.ignore (1024,'\n'); cout << "annas luku: "; cin >> muuttuja; }
Ei C++:lla ole olemassakaan kielettyjä merkkejä. Stringin käyttö ne rajat asettaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.