2. Cinema
A
partir de la qualificació d’una pel·lícula i l’edat de l'espectador,
indicar si aquest pot o no passar.
Qualificacions
de les pel·lícules:
T
– Tots els públics
M –
Majors de 13 anys.
J –
Majors de 16 anys.
A –
Majors de 18 anys.
El
programa demanarà la lletra que determina la qualificació de la pel·lícula i
l’edat de l'espectador per, a continuació, mostrar per pantalla si aquest pot
passar a la sala o no.
El
programa ha de controlar que la qualificació de la pel·lícula sigui T, M, J o
A. Qualsevol altra entrada no serà vàlida.
1. Els accents
El sistema operatiu Windows fa servir el joc de caràcters ANSI, en canvi, l'MS DOS utilitza el codi ASCII. El fet d'utilitzar un editor de Windows, com és el Visual C++, per crear aplicacions de consola fa que els caràcters especials, com la lletra 'ç', o la lletra 'ñ', o les vocals accentuades no es visualitzin bé a la pantalla. Per evitar això hi ha diverses possibilitats, en aquesta pràctica veurem dues d'aquestes possibilitats.
Desenvolupament de la pràctica
Feu el mateix que heu fet a la pràctica 1 i pràctica 2 per tal d'obrir un nou projecte anomenat m1p03. En aquest cas escriviu a la finestra de text el següent codi:
|
//m1p03.cpp: converteix de ANSI a ASCII i viceversa #include
<stdio.h> void main() { char n[60]="áéíóúàèìòù";
printf("Aix\x095 \x082s una prova\n");
CharToOem(n,n);
OemToChar(n,n); } |
Explicació del programa
La primera forma, i la més ràpida, en el cas que la cadena de caràcters no tingui massa caràcters especials, és fer servir les seqüències d'escapada dels caràcters ASCII, per exemple, la línia:
printf("Aix\x095 \x082s una prova");
farà que s'imprimeixi:
Això és una prova
ja que \x095 és el codi ASCII en
hexagesimal[1
]
del caràcter 'ò' i \x082 és el codi ASCII en hexagesimal del caràcter 'é'.
Els codis ASCII dels caràcters especials usuals són:
| á | \x0A0 | é | \x082 | í | \x0A1 | ó | \x0A2 | ú | \x0A3 |
| Á | \x0B5 | É | \x090 | Í | \x0D6 | Ó | \x0E0 | Ú | \x0E9 |
| à | \x085 | è | \x08A | ï | \x08B | ò | \x095 | ü | \x081 |
| À | \x0B7 | È | \x0D4 | Ï | \x0D8 | Ò | \x0E3 | Ü | \x09A |
| ç | \x087 | Ç | \x080 | ñ | \x0A4 | Ñ | \x0A5 | ¿ | \x0A8 |
| ¡ | \x0AD |
Una altra possibilitat és fer servir la funció CharToOem(), la declaració de la qual està a l'arxiu capçalera windows.h. Aquesta funció permet convertir una cadena ANSI a ASCII. La funció OemToChar() fa justament el contrari.
Les tres funcions printf() que hi han després fan que s'escrigui el següent:
ßúݾ·óþý=¨
áéíóúàèìòù
ßúݾ·óþý=¨
Es pot veure que la primera línia no és el que hem escrit a l'editor, és l'equivalent ASCII dels codis ANSI que hem teclejat a l'editor Visual C++. La segona línia és el resultat de la funció CharToOem(). Es pot veure a la tercera línia com la funció OemToChar() fa justament el contrari que la funció CharToOem().