Utilisation des tableau

Fermé
Paretto-Taccini - 24 juin 2012 à 14:37
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 24 juin 2012 à 20:25
Bonjour,
j'ai établi un algorithme qui renvoi à un utilisateur le mois correspondant au chiffre qu'il doit saisir, la compilation a échouée voici cet algo:


int main(){
int mois;
char tab[13] ={sans, janvier, fevrier, mars, avril, mai, juin juillet, aout, septembre, octobre, novembre, decembre};

if(1<=mois<=12){

mois = tab[mois];
}
else {
mois=0;
}

cout << "le moi correspondant est:"<<mois;
cout <<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
A voir également:

2 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
24 juin 2012 à 15:26
char tab[13] est un tableau de 13 caractères, et tu l'utilises comme un tableau de 13 chaînes de caractères donc forcément ça plante.

Tu devrais regarder du côté des enum pour faire ce que tu veux.

En plus, après tu fais un test sur la valeur de mois alors qu'elle n'est pas initialisée...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
24 juin 2012 à 20:25
Bonjour,

Déjà, tu souhaites faire du C ou du C++.
Car si c'est du C, pas de cout. Si c'est du C++, pourquoi ne pas utiliser un tableau de string.
On va dire que c'est du C.
char tab[13] ={sans, janvier, fevrier, mars, avril, mai, juin juillet, aout, septembre, octobre, novembre, decembre};
Plusieurs erreurs. char tab[13] est une chaîne de 13 caractères (incluant le '\0' final). Il faut donner une deuxième dimension. Par exemple char *tab[13]; ou encore plus simple : char *tab[]={...}
De plus, ce n'est pas janvier qu'il faut mettre mais "janvier".

if(1<=mois<=12){
Que vaut mois ? Il n'est pas initialisé. De plus tu ne peux pas utiliser le if comme ça. Il faut faire : if(mois>=1 && mois<=12) {...
Par ailleurs, tu peux faire un tableau de 12 cases seulement, et tester mois>=0 && mois < 12 (strictement). C'est une habitude à prendre.

0