Partage
  • Partager sur Facebook
  • Partager sur Twitter

tableau dans une cellule de liste chainée

Sujet résolu
    20 mai 2018 à 18:25:32

    bonjour tout le monde je suis un peu bloqué sur comment ajouer un nouveau element dans une liste chainé dont chaque cellule est composé de : enregistrement (etudiant) matiere s1et matiere s2 qui sont tout les deux des tableaux  voici ma structure et la fonction ajouter element
    typedef struct mat{
    
    char code_mat[20];
    
    char nom_mat;
    
    int semestre;
    
    float note_dc;
    
    float note_ds;
    
    float moy;
    
    }s1;
    
    typedef struct matiere
    
    {
    
    char code_mat[20];
    
    char nom_mat;
    
    int semestre;
    
    float note_dc;
    
    float note_ds;
    
    float moy;
    
    }s2;
    
    typedef struct etud{
    
    char numins[10];
    
    char cin[12];
    
    char nom[20];
    
    char prenom[30];
    
    char adr[40];
    
    int tel;
    
    char mail[30];
    
    char classe[20];
    
    }etudiant;
    
    typedef struct cellu{
    
    etudiant e;
    
    s1 tab[20] ;
    
    s2 tab1[20];
    
    struct cellu*suiv;
    
    }cellule;
    
    typedef cellule*liste;
    
    void initliste(liste *l)
    
     {
    
    (*l)=NULL;
    
    }
    
    liste ajoute(liste l,etudiant etd,s1 tab[],int i){
    
    cellule *c=(cellule*)malloc(sizeof(cellule));
    
    c->suiv=l;
    
    strcpy((c->e).numins,etd.numins);
    
    strcpy((c->e).cin,etd.cin);
    
    strcpy((c->e).nom,etd.nom);
    
    strcpy((c->e).prenom,etd.prenom);
    
    strcpy((c->e).adr,etd.adr);
    
    (c->e).tel=etd.tel;
    
    strcpy((c->e).mail,etd.mail);
    
    strcpy((c->e).classe,etd.classe);
    
    for(i=0;i<=5;i++)
    
    {
    
    printf("donner le code de la matiere");
    
    scanf("%s",tab[s1.code_mat]);
    
    printf("donner le nom de la matiere");
    
    scanf("%s",&(s1.nom_mat));
    
    printf("donner la note du DC");
    
    scanf("&f",&(s1.note_dc));
    
    printf("donner la note du DS");
    
    scanf("&f",&tab[s1.note_ds]);
    
    printf("la moyenne est %f"(40% dc + 60% ds))
    
    }
    
    l=c;
    
    return l;
    
    }
    pouvez vous m'aidez sil vous plait
    • Partager sur Facebook
    • Partager sur Twitter
      20 mai 2018 à 19:15:26

      Salut,

      Je pourrais passer du temps à lire ton message, le décoder, puis mettre en forme ton code et le comprendre, mais je vais plutôt t'inviter à écrire un vrai message que tu aura relu, et un code indenté de préférence.

      Ensuite, essaye de faire des recherches et indique ce que tu n'arrives pas au lieu de demander une solution

      • Partager sur Facebook
      • Partager sur Twitter

      J'aime les bandes dessinées, manhuas, manhwas, mangas, comics... Du coup j'ai fait aralosbd.fr !

        20 mai 2018 à 20:57:15

        Smiley32 a écrit:

        Salut,

        Je pourrais passer du temps à lire ton message, le décoder, puis mettre en forme ton code et le comprendre, mais je vais plutôt t'inviter à écrire un vrai message que tu aura relu, et un code indenté de préférence.

        Ensuite, essaye de faire des recherches et indique ce que tu n'arrives pas au lieu de demander une solution


        en fait je demande pas la solution je je veux seulement savoir dans quelle partie ja fait une erreur bon je vais reformuler ma question et envoyer le code au complet 

        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>
        typedef struct mat{
        	char code_mat[20];
        	char nom_mat;
        	int semestre;
        	float note_dc;
        	float note_ds;
        	float moy;
        }s1;
        
        typedef struct matiere
        {
        	char code_mat[20];
        	char nom_mat;
        	int semestre;
        	float note_dc;
        	float note_ds;
        	float moy;
        }s2;
        
        typedef struct etud{
        int numins;
        int cin;
        char nom[20];
        char prenom[30];
        char adr[40];
        int tel;
        char mail[30];
        char classe[20];
        }etudiant;
        typedef struct cellu{
        	etudiant e;
        	matiere tab1[100];
        	struct cellu*suiv;
        }cellule;
        typedef cellule*liste;
        void initliste(liste *l)
         {
         
        	(*l)=NULL;
        }
        
        
        
        
        liste ajoute(liste l,etudiant etd){
        	cellule *c=(cellule*)malloc(sizeof(cellule));
        	c->suiv=l;
        
        	(c->e).numins=etd.numins;
        	(c->e).cin=etd.cin;
        	strcpy((c->e).nom,etd.nom);
        	strcpy((c->e).prenom,etd.prenom);
        	strcpy((c->e).adr,etd.adr);
        	(c->e).tel=etd.tel;
        	strcpy((c->e).mail,etd.mail);
        	strcpy((c->e).classe,etd.classe);
        	l=c;
        	return l;
        	
        
        }
        void affiche(liste l ){	
        cellule *c=l;
        int nb=0;
        if(l!=NULL)
        {
        	while (c!=NULL)
        		{nb++;
        			printf("\n---------------------------------------------------------------------------------------------------------------------");
        			printf("\nInscrip : %d  ",(c->e).numins);
        			printf("\nCIN : %d  ",(c->e).cin);
        			printf("\nprenom : %s  ",(c->e).prenom);
        			printf("\nnom : %s  ",(c->e).nom);
        			printf("\nadresse : %s  ",(c->e).adr);
        			printf("\ntel : %d  ",(c->e).tel);
        			printf("\nmail : %s  ",(c->e).mail);
        			printf("\nclasse : %s  ",(c->e).classe);
        			c=c->suiv;	
        }}}
        
        int menu(){
        	int choix;
        	 printf("\n                                   *****      Gestion des etudiant   **** \n\n");
                   printf("________________________________________________________________________________________________________________________\n");
                   printf("      <1.  Saisir un  etudaint------------------------------ \n");
                   printf("      <2.  Afficher les etudaint---------------------------- \n");
                   printf("      ?.  Rechercher un  etudaint  par insc --------------- \n");
                   printf("      <4.  Rechercher un  etudaint  par nom----------------- \n");
                   printf("      <5.  Rechercher un  etudaint  par prenom-------------- \n");
                   printf("      <6.  Supprimier un  etudaint-------------------------- \n");
                   printf("      <7.  Quitter vers l'etudiant-------------------------- \n");
                   printf("________________________________________________________________________________________________________________________\n");
                   printf("| donner le numero de votre choix |\n");
        	       printf("|____________________________________________________________________________________________________________________|\n\n");
                   
                   
                   scanf("%d",&choix);
                   printf("\n\n");
                   return (choix);
        }
        int menu_mat(){
        	int choix;
        	 printf("\n                                   *****      Gestion des matieres   **** \n\n");
                   printf("________________________________________________________________________________________________________________________\n");
                   printf("      <1.  Saisir les  matieres----------------------------- \n");
                   printf("      <2.  Afficher les matieres---------------------------- \n");
                   printf("      ?.  Rechercher un  matieres  par  code--------------- \n");
                   printf("      <4.  Rechercher un  matieres  par nom----------------- \n");
                   printf("      <5.  Supprimier un  matieres-------------------------- \n");
                   printf("      <6.  Quitter vers l'etudiant-------------------------- \n");
                   printf("________________________________________________________________________________________________________________________\n");
                   printf("| donner le numero de votre choix |\n");
        	       printf("|____________________________________________________________________________________________________________________|\n\n");
                   
                   scanf("%d",&choix);
                   printf("\n\n");
                   return (choix);
        }
        
        liste modifier(liste l,etudiant e)   {
            liste c=l;
            liste tmp=l;
            int cne2;
            printf("\n------------La Modification--------------\n");
            printf("\nDonner l'inscrip de l'etudiant pour modifier son informations:");
            scanf("%d",&cne2);
            while(tmp!=NULL){
                             if((c->e).numins==cne2){
                                             printf("\nL'etudiant exist dans la liste....");
                                             printf("\n nv inscrip : ");
                                             scanf("%d",&(c->e).numins);
                                              printf("\n nv CIN : ");
                                             scanf("%d",&(c->e).cin);
                                             printf("\n nv prenom : ");
                                             scanf("%s",&(c->e).prenom);
                                             printf("\n nv prenom : ");
                                             scanf("%s",&(c->e).prenom);
                                               printf("\n nv adr : ");
                                             scanf("%s",&(c->e).adr);
                                               printf("\n nv tel : ");
                                             scanf("%d",&(c->e).tel);
                                               printf("\n nv mail : ");
                                             scanf("%s",&(c->e).mail);
                                               printf("\n nv classe : ");
                                             scanf("%s",&(c->e).classe);
                                              return l;
                                              }
                             tmp=tmp->suiv;
         
                             }
         printf("---etudiant  n'exist pas\n");     
         }
        liste supprime(){
        	
        }
        
        int main(){
        	matiere tab[100];
        etudiant e;
        int choix,choix1,n,x;
        liste l;	
        char c[5];
        
        initliste(&l);
        do{   choix=menu();
        switch(choix){
        	case 1:system("cls");
        	affiche(l);
        	printf("\nsaisi les detail de votre etudiant ......\n");
        	printf("\ndonnez le num inscrip : ");
        	scanf("%d",&(e).numins);
        	printf("\n donnez le CIN : ");
        	scanf("%d",&(e).cin);
        	printf("\n donnez le nom : ");
        	scanf("%s",&(e).nom);
        	printf("\n donnez le prenom : ");
        	scanf("%s",&(e).prenom );
        	printf("\n donnez l'adresse : ");
        	scanf("%s",&(e).adr);
        	printf("\n donnnez num de tel : ");
        	scanf("%d",&(e).tel);
        	printf("\ndonnez le mail : ");
        	scanf("%s",&(e).mail);
        	printf("\n choix une  classe : ti11 \t ti12 \t ti13 \t ti14 \t ti15 :");
        	scanf("%s",&(e).classe);
        	printf("\n\n");
        
            l=ajoute(l,e);  
            
        	break;
        case 2:system("cls");
        affiche(l);
        break;
        case 3:
        system("cls");
        affiche(l);
        
        	l=modifier(l,e);
        	
        break;
        case 4:break;
        case 5:break;
        case 6:break;
        case 7:break;
        default : system("cls");printf("votre choix n'est pas valide !!!\n");
        }
        
        }while(choix!=7);
          system("PAUSE>null");
        		   
        return 0;
        }
         

        mon probleme est que je veux ajouter  dans la cellule deux case (matiere) de type tableau d'enregistrement 

        mais quant mon souci ces que je trouve null part comment remplir un tableau qui se trouve dans une liste 

        -
        Edité par SeydiDieng 20 mai 2018 à 21:05:02

        • Partager sur Facebook
        • Partager sur Twitter
          20 mai 2018 à 21:24:16

          SeydiDieng a écrit:

          mon probleme est que je veux ajouter  dans la cellule deux case (matiere) de type tableau d'enregistrement 

          mais quant mon souci ces que je trouve null part comment remplir un tableau qui se trouve dans une liste 

          -
          Edité par SeydiDieng il y a 14 minutes


          Le seul endroit où tu peux le trouver, c'est dans ta tête, en réfléchissant.

          Tu veux remplir un tableau qui se trouve dans une liste ? 

          • Une liste est composée d'éléments.
          • Dans quel élément  tu veux changer le tableau ?
          • La liste étant chainée, comment tu fais pour chercher l'élément ?
          • Une fois que tu as trouvé l'élément, comment tu remplis le tableau ? Avec quelles données ?

          Allez, hop, au boulot.

          -
          Edité par michelbillaud 20 mai 2018 à 21:24:58

          • Partager sur Facebook
          • Partager sur Twitter
            20 mai 2018 à 21:35:48

            bonsoir 

            jai fait toute la structure  et tout marche a merveille mon soucis maintenant cest que si j'ajoute plusieurs étudiant et j'appel la fonction affichage un seul  étudiant s'affiche

            voici mon code :

            #include<stdio.h>
            #include<stdlib.h>
            #include<string.h>
            #include<conio.h>
            
            typedef struct matiere
            {
            	char code[20];
            	char nom[20];
            	float noteDC;
            	float noteDS;
            	float coeff;
            	float moyenne;
            } Mat;
            typedef struct matiere2
            {
            	char code[20];
            	char nom[20];
            	float noteDC;
            	float noteDS;
            	float coeff;
            	float moyenne;
            } Mat2;
            
            typedef struct etudiant
            {
            	char num_inscri [10];
            	char CIN [8];
            	char nom [20];
            	char prenom [20];
            	char adresse [40];
            	char mail [40];
            	char tel [8];
            	char classe [10];
            	struct matiere Mat;
            } Etudiant ;
            
            typedef struct cellule el ;
            
            struct cellule
            {
            	Etudiant elem ;
            	Mat m;
            	Mat2 m2;
            	el *suiv;
            };
            
            typedef el *liste;
            
            /*initialisation de la liste*/
            
            void init_liste(liste *l)
            {
            	(*l)=NULL;
            }
            
            /*la liste est vide*/
            
            int liste_vide(liste l)
            {
            	return l == NULL ;
            		
            }
            
            /*saisir les informations de l'etudiant*/
            	liste Ajout_Debut(liste  l, Etudiant etud)
            { 
            		
            	el *deb=(el *) malloc (sizeof (el));
            		deb->suiv=l;
            		int n,i,j,nb,k,nbm;
            		printf("\n\t\t Donner le nombre des etudiants a ajouter : \n");
            	scanf("%d",&n);
            	for (i=1;i<=n;i++)
            		{
            			printf("\t Donner le numero d'inscription :\n ");
            	    scanf("%s",((deb)->elem.num_inscri));
            	    printf("\t Donner le numero de CIN :\n ");
            	    scanf("%s",((deb)->elem.CIN));
            	    printf("\t Donner le nom de l'etudiant :\n ");
            	    scanf("%s",((deb)->elem.nom));
            	    printf("\t Donner le prenom de l'etudiant :\n ");
            	    scanf("%s",((deb)->elem.nom));
            	    printf("\t Donner l'adresse de l'etudiant : \n");
            	    scanf("%s",((deb)->elem.adresse));
            	    printf("\t Donner le mail de l'etudiant :\n ");
            	    scanf("%s",((deb)->elem.mail));
            	    printf("\t Donner le numero de telephone de l'etudiant :\n ");
            	    scanf("%s",((deb)->elem.tel));
            	    printf("\t Donner la classe de l'etudiant  :\n ");
            	    scanf("%s",((deb)->elem.classe));
            	    printf("\n\n\t\tLes notes de la semestre 1 : \n\n");
            	    printf("donner le nombre de matiere\n");
            	    scanf("%d",&nb);
            	    for(j=1;j<=n;j++)
            	    {
            				printf("donner le code de la matiere\n");
            					scanf("%s",&(deb)->m.code);
            	   			 printf("\t Donner le nom de la matiere \n : ");
            	    			scanf("%s",&(deb)->m.nom);
            	    		printf("\t Donner Note DC :\n ");
            	    			scanf("%f",&(deb)->m.noteDC);
            	    		printf("\t Donner note DS : \n");
            	    			scanf("%f",&(deb)->m.noteDS);
            	   		    printf("\t Donner le coefficient de la matiere :\n ");
            	    			scanf("%f",&(deb)->m.coeff);
            	    						 (deb->m).moyenne=((deb->m).noteDC*0.4+(deb->m).noteDS*0.6);
            	   			printf("la moyenne est\n %f ",(deb->m).moyenne);
            	   			
            	   	}
            	    printf("\n\n\t\tLes notes de la semestre 2 : \n\n");
            	    printf("donner le nombre de matiere s2\n");
            	    scanf("%d",&nbm);
            	    for(k=1;k<=nbm;k++)
            	    {
            		
            	    printf("donner le code de la matiere\n");
            					scanf("%s",&(deb)->m2.code);
            	    printf("\t Donner le nom de la matiere \n : ");
            	    			scanf("%s",&(deb)->m2.nom);
            	    		printf("\t Donner Note DC :\n ");
            	    			scanf("%f",&(deb)->m2.noteDC);
            	    		printf("\t Donner note DS :\n ");
            	    			scanf("%f",&(deb)->m2.noteDS);
            	   		    printf("\t Donner le coefficient de la matiere :\n ");
            	    			scanf("%f",&(deb)->m2.coeff);
            	    						 (deb->m2).moyenne=((deb->m2).noteDC*0.4+(deb->m2).noteDS*0.6);
            	   			printf("la moyenne est\n %f \n",(deb->m2).moyenne);
            	   	}
            	
            			
            		}
            		l=deb;
            	return l;
            	}
            
            /*affichage de la liste des etudiants */
            
            void affiche(liste l ){	
            el *ptr=l;
            int nb=0;
            if(l!=NULL)
            {
            	
            	printf("\n\t \t \t \t \t \t *******************************\n");
            	printf("\t \t \t \t \t \t *                            *\n");
            	printf("\t \t \t \t \t \t *   Affichage des etudiants  *\n");
            	printf("\t \t \t \t \t \t *                            *\n");
            	printf("\t \t \t \t \t \t ******************************\n\n");
            	while(ptr!=NULL)
            	{
            		
            		printf("\t Numero d'inscription : %s \n",ptr->elem.num_inscri);
            	    printf("\t CIN : %s \n",ptr->elem.CIN);
            	    printf("\t Nom : %s \n",ptr->elem.nom);
            	    printf("\t Prenom : %s \n",ptr->elem.prenom);
            	    printf("\t Adresse : %s \n",ptr->elem.adresse);
            	    printf("\t Telephone : %s \n",ptr->elem.tel);
            	    printf("\t Mail : %s \n",ptr->elem.mail);
            	    printf("\t Classe : %s\n",ptr->elem.classe);
            	    printf("\n\n\t\tLes notes de la semestre 1: \n\n");
            	    printf("\t Nom de la matiere : %s \n",ptr->m.nom);
                    printf("\t Note DC : %f \n",ptr->m.noteDC);
                    printf("\t Note DS : %f \n",ptr->m.noteDS);
                    printf("\t Le coefficient : %f \n",ptr->m.coeff);
                    printf("\t La moyenne de l'etudiant : %f \n",ptr->m.moyenne);
                    printf("\n\n\t\tLes notes de la semestre 2: \n\n");
                    printf("\t Nom de la matiere : %s \n",ptr->m2.nom);
                    printf("\t Note DC : %f \n",ptr->m2.noteDC);
                    printf("\t Note DS : %f \n",ptr->m2.noteDS);
                    printf("\t Le coefficient : %f \n",ptr->m2.coeff);
                    printf("\t La moyenne de l'etudiant : %f \n",ptr->m2.moyenne);
            	    ptr=ptr->suiv;
            	}
            	
            }}
            
            /*l'ajout d'un etudiant au debut*/
            
            void ajout (liste *l , Etudiant etud)
            {
            	int n,i;
            	for (i=1;i<=n;i++)
            	{
            	el *a;
            	a=(el *) malloc (sizeof (el));
            	a->suiv=*l;
            	a->elem=etud;
            	*l=a;
            	}
            }
            
            /*suppression d'un etudiant*/
            
            /*void supprime(liste **l,int num)
            {
            	el *cour;
            	el *prec;
            	el *supp;
            	if (!liste_vide(*l))
            	{
            		if ((*(*l))->elem.num_inscri == num )
            		{
            			supp = *l;
            			*l = (*(*l))->suiv;
            			free(supp);
            		}
            		else
            		{
            			cour=*l;
            			prec=*l;
            			while ((cour->elem.num_inscri!=num)&&(cour!=NULL))
            			{
            				prec=cour;
            				cour=cour->suiv;
            			}
            			if(cour==NULL)
            			{
            				printf("numero d'inscription inexistant !!");
            			}
            			else
            			{
            				prec->suiv=cour->suiv;
            				free(cour);
            			}
            		}
            	}
            }*/
            liste modifier(liste l,etudiant etud)   {
                liste c=l;
                liste tmp=l;
                char cne2[10];
                printf("\n_________La Modification__________________\n");
                printf("\nDonner l'inscrip de l'etudiant pour modifier son informations:");
                scanf("%s",&cne2);
                while(tmp!=NULL){
                                 if((c->elem).num_inscri==cne2){
                                                 printf("\nL'etudiant exist dans la liste....");
                                                 printf("\n nv inscrip : ");
                                                 scanf("%s",&(c->elem).num_inscri);
                                                  printf("\n nv CIN : ");
                                                 scanf("%s",&(c->elem).CIN);
                                                 printf("\n nv NOM : ");
                                                 scanf("%s",&(c->elem).nom);
                                                 printf("\n nv prenom : ");
                                                 scanf("%s",&(c->elem).prenom);
                                                   printf("\n nv adr : ");
                                                 scanf("%s",&(c->elem).adresse);
                                                   printf("\n nv tel : ");
                                                 scanf("%d",&(c->elem).tel);
                                                   printf("\n nv mail : ");
                                                 scanf("%s",&(c->elem).mail);
                                                   printf("\n nv classe : ");
                                                 scanf("%s",&(c->elem).classe);
                                                  return l;
                                                  }
                                 tmp=tmp->suiv;
             
                                 }
               
             }
            
            /*Menu*/
            
            int menu()
            {
            	liste l ;
            	Etudiant etud;
            	int nbrEtud , i , choix , num;
            	do
            	{
            	   printf("\n\t \t \t \t \t \t ***********************\n");
            	   printf("\t \t \t \t \t \t *                     *\n");
            	   printf("\t \t \t \t \t \t *   RELEVE DES NOTES  *\n");
            	   printf("\t \t \t \t \t \t *                     *\n");
            	   printf("\t \t \t \t \t \t ***********************\n\n");	   
            printf("|________________________________________________________________________|\n|\n");
            printf("| 1-ajouter un nouveau etudiant                                          |\n");
            printf("| 2-Afficher  les détails des étudiants                                  |\n");
            printf("| 3-Modifier des donnees d un etudiant ou d une matiere                  |\n");
            printf("| 4-supprimer un element de la liste                                     |\n");
            printf("| 0-QUITTER                                                              |\n");
            printf("|________________________________________________________________________|\n");
            printf("| donner le numero de votre choix |\n");
            printf("|________________________________________________________________________|\n\n");
            
            	   scanf("%d",&choix);
            	   switch (choix)
            	   {
            		    case 1 : system("cls");
            		            //etud=saisir();
            		            l=Ajout_Debut(  l,  etud);
            		             break;
            		    case 2 : system("cls");
            		             affiche(l);
            		             getch();
            		             break;
            		    case 3 : /*system("cls");
            	                 printf("\t \t \n Entrez l numero d'inscription de l'etudiant a supprimer : \n") ;
            	                 scanf("%d",&num);
            		             //supprime(&etudliste,num);*/
            		             l= modifier( l,etud);
            		             affiche(l);
            	                
            		             break ;
            		    case 4 : system("cls");
            		     	affiche(l);
            	                 modifier( l,etud);
            		             
            		             break ;
                   }
            	} while (choix!=4);
            	return 0;
            }
            
            int main()
            {
            	menu();
            	return 0;
            }

            -
            Edité par SeydiDieng 21 mai 2018 à 1:30:03

            • Partager sur Facebook
            • Partager sur Twitter

            tableau dans une cellule de liste chainée

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown