Utiliser les pointeurs pour les tableaux
Résolu/Fermé
yadhus
Messages postés
33
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
16 mars 2009
-
5 mars 2008 à 17:40
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 5 mars 2008 à 18:08
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 5 mars 2008 à 18:08
A voir également:
- Utiliser les pointeurs pour les tableaux
- Comment utiliser chromecast - Guide
- Tableaux croisés dynamiques - Guide
- Comment utiliser wetransfer gratuit ? - Guide
- Utiliser tablette comme ecran - Guide
- Utiliser iphone comme webcam - Guide
1 réponse
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
5 mars 2008 à 18:08
5 mars 2008 à 18:08
Bonsoir, ça fait longtemps que je ne pratique plus le C (ou C++ c'est presque pareil) mais je ferais ta fonction de remplissage autrement, parce que là c'est... pas top (si je peux me permettre).
Qu'est ce qui ne va pas actuellement dans ta fonction :
Tu lui passe un pointeur sur un entier, un message à afficher et un entier (nombre d'entier pour remplir le tableau)
Ce que tu fais :
Tu tente d'accèder au valeur d'un tableau d'entier qui n'est pas initialisé et qui n'a rien dedans, donc ici je pense que ton programme doit partir en erreur.
Je ne sais pas ce que tu chercher à faire exactement, et dis moi si ce n'est pas ça, mais je pense que tu souhaite simplement remplir ton tableau pour les indices allant de 0 à N ? C'est bien ça ?
Si oui, il faut d'abord que tu initialise et alloue de l'espace mémoire à ton futur tableau. Ensuite ta fonction devra retourner ce même tableau (pour le récupérer dans ton main). Restera ensuite à boucler de 0 et N et demander à chaque passage dans ta boucle l'entier que souhaite entrer l'utilisateur.
Concrètement (outre la syntaxe qui n'est peut être pas correcte pour l'allocation), ça donne ceci :
La fonction d'affichage :
Et le main :
Voilà, l'idée est là, reste la syntaxe à vérifier.
Qu'est ce qui ne va pas actuellement dans ta fonction :
Tu lui passe un pointeur sur un entier, un message à afficher et un entier (nombre d'entier pour remplir le tableau)
Ce que tu fais :
int *pdeb,*pfin; int T[10]; pdeb=&T[0]; pfin=&T[N];
Tu tente d'accèder au valeur d'un tableau d'entier qui n'est pas initialisé et qui n'a rien dedans, donc ici je pense que ton programme doit partir en erreur.
Je ne sais pas ce que tu chercher à faire exactement, et dis moi si ce n'est pas ça, mais je pense que tu souhaite simplement remplir ton tableau pour les indices allant de 0 à N ? C'est bien ça ?
Si oui, il faut d'abord que tu initialise et alloue de l'espace mémoire à ton futur tableau. Ensuite ta fonction devra retourner ce même tableau (pour le récupérer dans ton main). Restera ensuite à boucler de 0 et N et demander à chaque passage dans ta boucle l'entier que souhaite entrer l'utilisateur.
Concrètement (outre la syntaxe qui n'est peut être pas correcte pour l'allocation), ça donne ceci :
int* saisie_tab (string mess, int N){ int *T = N * malloc( int ); // -- Pointeur sur un tablea de taille N, a confirmer :s for ( int i = 0; i < N; i++ ){ puts (mess); scanf ("%d", T[i]); } return T; }
La fonction d'affichage :
void affiche_tab (int *p, int N) { for (i=0;i<N;i++) { printf ("\t%d\t|", p[i]); } }
Et le main :
int main () { int N = 10; string mess; gets (mess); int *t = saisie_tab (mess,N); printf ("Voici votre tableau\n"); affiche_tab (t,N); return 0; }
Voilà, l'idée est là, reste la syntaxe à vérifier.