Enrere Mòdul 6
Fonaments de programació. Llenguatge C/C++---
Pràctica    Resum teòric Exercicis
Pràctica d'ampliació

 

Vectors de punters a cadenes de caràcters

En aquesta pràctica veurem que es pot definir un vector de cadenes de caràcters, és a dir, un vector de punters de caràcters.

 

Desenvolupament de la pràctica

Definiu un projecte nou anomenat m6p02 i afegiu-li un arxiu de font C/C++ anomenat m6p02.cpp. Escriviu el següent codi:

// m6p02.cpp: Vectors a cadenes de caràcters

#include <iostream.h>

char *nom_mes(int n);

void main(){
    int mes;

    cout<<"Escriu el nombre del mes ";
    cin>>mes;
    cout << "El mes és .. "<<nom_mes(mes)<<endl;
}

 

char *nom_mes(int n){

    char *nom[]={"Mes no vàlid",
         
                "Gener","Febrer","Març",
                 "Abril","Maig","Juny",
                 "Juliol","Agost","Setembre",
                 "Octubre","Novembre","Decembre"
                                };

    return ( n < 1 || n > 12 ) ? nom[0]:nom[n] ;

}

Els vectors també poden contenir punters. En aquest cas cada posició d’aquest vector és un punter a la primera posició de la cadena de caràcters. El vector *nom és un vector de punters a cadenes:

char *nom[]={"Mes no vàlid",
         
                "Gener","Febrer","Març",
                 "Abril","Maig","Juny",
                 "Juliol","Agost","Setembre",
                 "Octubre","Novembre","Decembre"
                                };

Aquest vector es pot representar com:

nom[0] M e s   n o   v à l i d \0
nom[1] G e n e r \0              
nom[2] F e b r e e \0            
nom[3] M a r ç \0                
nom[4] A b r i l \0              
nom[5] M a i g \0                
nom[6] J u n y \0                
nom[7] J u l i o l \0            
nom[8] A g o s t \0              
nom[9] S e t e m b r e \0        
nom[10] O c t u b r e \0          
nom[11] N o v e m b r e \0        
nom[12] D e s e m b r e \0        

La funció nom_mes() torna una cadena (un punter a un vector de caràcters). La cadena tornada es calcula en la següent línia:

return ( n < 1 || n > 12 ) ? nom[0]:nom[n] ;

Si l'argument no és un número comprès entre 1 i 12 el resultat és nom[0], és a dir, la cadena "Mes no vàlid", en cas contrari torna la cadena nom[n].