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>
#include
<windows.h>

void main() {

    char n[60]="áéíóúàèìòù";

    printf("Aix\x095 \x082s una prova\n");
    printf("%s\n",n); //n està en ANSI

    CharToOem(n,n);
    printf("%s\n",n); //ara n està en ASCII

    OemToChar(n,n);
    printf("%s\n",n); //es torna a posar en ANSI

}

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(). 

Hosted by www.Geocities.ws

1