Bonjour,
Je n'arrive pas à afficher le contenu d'une cellule d'un tableau dont l'indice est égal au contenu d'une cellule d'un autre tableau. Voir le fichier joint à la ligne 44.
Merci d'avance
Version imprimable
Bonjour,
Je n'arrive pas à afficher le contenu d'une cellule d'un tableau dont l'indice est égal au contenu d'une cellule d'un autre tableau. Voir le fichier joint à la ligne 44.
Merci d'avance
Bonjour
Code:
1
2
3
4
5 int tab[]={10, 100, 1000, 10000}; int indice[]={3, 2, 1, 0}; int i; for (i=0; i < 3; i++) printf("tab[%d]=%d\n", i, tab[indice[i]]);
Ouais, c'est vrai que comme c'est trop difficile de recopier le code ici on n'a qu'à aller le chercher...
Merci sve@r pour votre réponse.
Cependant mon problème n'est pas résolu. Je vous montre le programme.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 #include <stdio.h> #include <stdlib.h> int main() { int N; printf("Tapez un nombre de 3 chiffres maximum : "); scanf("%d",&N); char Tn[4]; sprintf(Tn,"%03d",N); printf("%s\n",Tn); /* ok */ printf("%c\n",Tn[2]); /* ok */ char Tu[10][7]={"zero", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", }; printf("%s\n",Tu[Tn[2]]); /* n'affiche rien ???? */ return 0; }
En même temps, il y a un gros warning qui fait peur à la compilation :
Si ton compilateur n'affiche pas ce message, c'est que tu n'as pas activée les options de warning (-Wall -Wextra avec gcc).Citation:
test.c:34:5: warning: array subscript has type 'char' [-Wchar-subscripts]
Après, lis attentivement ton code :
Deux dimensions, une seule coordonnée ?Code:
1
2 char Tu[10][7] Tu[Tn[2]]
EDIT : pardon, je n'avais pas vu le formateur %s, je pensais %c. :oops:
Bonsoir,
Le probleme doit venir du fait de la correspondance entre entier et caractère, essaye en mettant:
de sorte que Tn[2] renvoie le code ASCII du chiffre que tu a rentré, si tu lui soustrait 48 (correspondant au codage ascii de 0), tu retombe sur l'indice du tableau qu'il te faut ;)Code:printf("%s\n",Tu[Tn[2]-48]);
edit: j'ai testé et ça marche, je n'ai pas de warning sur code::blocks.
Merci INFINIMENT cheYen !!!!!
C'est fantastique , ça marche chez moi aussi !
Un grand merci à tous le monde, ça fait 1 mois que j'essaie de comprendre.
Faut dire aussi que je débute.
Mille merci !!!!!
Je suis très content d'avoir pu te débloquer alors ;) (surtout que c'est ma premiere contribution sur ce forum :p)
courage et reussite pour ton apprentissage!
Y a plus qu'à continuer comme ça cheYen :)
ariston, tu peux maintenant cliquer sur :resolu:
Autant alors mettre directement printf("%s\n",Tu[Tn[2]-'0']);. Non seulement ça fait exactement la même chose mais en plus, le jour où on change de codage et où '0' ne sera plus 48 ça continuera à faire la même chose. Et même si ce jour n'arrive jamais, ça reste quand-même plus parlant...