Tableau dynamique et structure en c!!!

Fermé
¨Pascal - 24 oct. 2010 à 17:33
 ¨Pascal - 24 oct. 2010 à 21:52
Bonjour,


Bonjour,

Je suis débutante en c. je veux remplir un tableau dynamique tel que
* Les nombres sont entrés par l'utilisateur 1 par 1
* les nombres entrés doivent être inséré dans un tableau de structures de type :
typedef struct ntab {
int nbr ;
ntab *next ;
} ntab ;
* Pour chaque nombre entré on associe un malloc de ntab
* Le nombre entré doit être défini dans l'élément nbr de la structure ntab
* L'adresse du nombre suivant doit être définie dans l'élément next

voici mon essai

int main (void){
int i;
typedef struct ntab {
int nbr ;
struct ntab *next ;
}ntab;
int taille;
int a;
printf("Donner la taille du tableau\n");
scanf("%d",&taille);

ntab *tableau=malloc(sizeof(ntab));
printf("Element n°1 %d= ",0);
scanf("%d",&a);
tableau[0].nbr=a;
int *p;
p=&a;
tableau[0].next=p++;
printf("%d",tableau[0].nbr);
printf(tableau[0]->next);
for(i=1;i<taille;i++)
{
ntab *tableau=malloc(sizeof(ntab));
printf("Donner un element:",0);
scanf("%d",&a);
tableau[i].nbr=a;
tableau[i].next=&a++;
printf("%d",tableau[i].nbr);
printf("%d",tableau[i].next);
}
return 0;
}

lors de la compilation j'ai l'erreur au niveau de l'instruction tableau[0].next=p++;

Je souhaite bien que vous pouvez m'aider

Merci,
A voir également:

2 réponses

ydurce Messages postés 78 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 12 décembre 2010 18
24 oct. 2010 à 20:13
bonjour,

quelques conseils:
le typedef ne doit pas apparaitre dans le corps du main, c'est une déclaration d'un type 'personnel' qui devrait se trouver dans un fichier header .h qu'il faudra ensuite inclure dans le .c avec un #include
Quand vous allouez de la mémoire pour un tableau dynamique, allouez la totalité du tableau d'un coup (vous en connaissez la taille) et faites ensuite votre boucle pour le remplir.
votre algo ne marche pas puisque le compilateur va construire le code pour allouer de la mémoire sur le pointeur 'tableau' et seul 'tableau[0]' sera accessible. les autres tableau[1]..tableau[taille-1] taperons n'importe où.
Le type de next est un pointeur sur une structure ntab. Vous devez y affecter un pointeur vers l'élément suivant du tableau (qui est une structure ntab).
bon courage!
0
Bonsoir à tous,

Voici mon nouveau code
ce code permet de saisir les éléments du tableau mais j'ai pas pu le modifier pour assurer le tri

#include <stdio.h>
#include<stdlib.h>
int main (void){
int i;
int *p,x;
typedef struct ntab {
int nbr ;
struct ntab *next ;
}ntab;
int taille;
printf("Donner la taille du tableau\n",0);
scanf("%d",&taille);
printf("Donner l'element n°1=\n",0);
scanf("%d\n",&x);
ntab *tableau=malloc(sizeof(ntab));
p=tableau;
tableau[0].nbr=x;
tableau[0].next=p++;
printf("l'adresse de l'elemt suivant est: %d\n",tableau[0].next);
for(i=1;i<taille;i++)
{
printf("Donner l' element n°%d:\n",i+1);
scanf("%d\n",&x);
ntab *tableau=malloc(sizeof(ntab));
tableau[i].nbr=x;
tableau[i].next=p++;
printf("l'adresse de l'element suivant =%d ",tableau[i].next);
printf("\n");
}
return 0;
}


Je serai très reconnaissante si vous pourriez m'aider.
0