Passer de fonction void a des fonction qui prennent des pointeurs comme parametr

Signaler
Messages postés
7
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
15 janvier 2012
-
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
-
Salut! j'ai du parvenir a réaliser un programme de gestion d'élèves les informations sont enregistré a travers un tableau de structure alors il m'est demandé d'utiliser les pointeurs dans ce programme juste donner moi des petits exemples ou explication sur comment faire et je ferrai de mon mieux pour y parvenir tout seul je suis vraiment dans une situation énervante parce-que le temps me presse aider moi s'il vous plait et grand merci a vous tous


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int NbrEleve;
struct Etudiant
    {
        char Nom[30];
        char Prenom[30];
        int Age;
        float Note[5];
    }Etd[120],Echange;
void Menu(void)
{
    int i;
    char   *MENU_CHAMP[]={"1 : Lecture des elements","2 : Affichage des elements",
                        "3 : Ajout d'un element", "4 : Recherches des elements",
                        "5 : Modification des elements","6 : Suppression des elements",
                        "7 : Tri des element","Touche 0 : Sortir" };
    for(i=0;i<8;i++)
    {
        printf("%s\n",MENU_CHAMP[i]);
    }
}
//Ma fonction de saisie
void Saisie(void)
{
    int i,j;
    printf("Saisir le nombre d'eleves ? : ");
    scanf("%d",&NbrEleve);
    system("cls");
    for(i=0;i<NbrEleve;i++)
    {
            printf("Saisir le nom de l'eleve[%d] ? : ",i+1);
            scanf("%s",Etd[i].Nom);
            printf("Saisir le prenom de l'eleve[%d] ? : ",i+1);
            scanf("%s",Etd[i].Prenom);
            printf("Saisir l'age de l'eleve[%d] ? : ",i+1);
            scanf("%d",&Etd[i].Age);
            printf("Saisir la note 1 de l'eleve[%d] ? : ",i+1);
            scanf("%f",&Etd[i].Note[0]);
            printf("Saisir la note 2 de l'eleve[%d] ? : ",i+1);
            scanf("%f",&Etd[i].Note[1]);
            printf("Saisir la note 3 de l'eleve[%d] ? : ",i+1);
            scanf("%f",&Etd[i].Note[2]);
            printf("Saisir la note 4 de l'eleve[%d] ? : ",i+1);
            scanf("%f",&Etd[i].Note[3]);
            system("cls");
    }
    printf("Saisie Complete");
    getch();
}
//Ma fonction d'affichage
void Affichage(void)
{
    int i,j;
    //Calcul de moyenne pour chaque eleve
    for(i=0;i<NbrEleve;i++)
    {
        Etd[i].Note[4]=0;
        for(j=0;j<4;j++)
        {
            Etd[i].Note[4]+=Etd[i].Note[j];
        }
         Etd[i].Note[4]=Etd[i].Note[4]/4;
    }
    for(i=0;i<NbrEleve;i++)
    {
        printf("*********************************\n");
        printf("%s\t",Etd[i].Nom);
        printf("%s\t",Etd[i].Prenom);
        printf("%d\t",Etd[i].Age);
        printf("%.2f\t\n",Etd[i].Note[4]);
    }
    getch();
}
//Ma fonction d'ajout
void Ajout(void)
{
    int NbAjout,i,j;
    printf("Saisir le nombre d'eleves a ajouter ? : ");
    scanf("%d",&NbAjout);
    system("cls");
    for(i=NbrEleve;i<NbrEleve+NbAjout;i++)
    {
        printf("Saisir le nom de l'eleve[%d] ? : ",i+1);
        scanf("%s",Etd[i].Nom);
        printf("Saisir le prenom de l'eleve[%d] ? : ",i+1);
        scanf("%s",Etd[i].Prenom);
        printf("Saisir l'age de l'eleve[%d] ? : ",i+1);
        scanf("%d",&Etd[i].Age);
        printf("Saisir la note 1 de l'eleve[%d] ? : ",i+1);
        scanf("%f",&Etd[i].Note[0]);
        printf("Saisir la note 2 de l'eleve[%d] ? : ",i+1);
        scanf("%f",&Etd[i].Note[1]);
        printf("Saisir la note 3 de l'eleve[%d] ? : ",i+1);
        scanf("%f",&Etd[i].Note[2]);
        printf("Saisir la note 4 de l'eleve[%d] ? : ",i+1);
        scanf("%f",&Etd[i].Note[3]);
        system("cls");
    }
    NbrEleve+=NbAjout;
    printf("Ajout terminer");
    getch();
}
//Ma fonction de recherche
void Recherche(void)
{
    char Name[30],Prename[30];
    int i,ind;
    printf("Saisir le Nom a chercher ?:\t");
    scanf("%s",Name);
    printf("Saisir le Prenom a chercher ?:\t");
    scanf("%s",Prename);
    ind=-1;
    for(i=0;i<NbrEleve;i++)
        {
            if(!strcmp(Name,Etd[i].Nom) && !strcmp(Prename,Etd[i].Prenom))
            {
                ind=i+1;
                break;
            }
        }
    if(ind==-1)
    {
        printf("Resultat introuvable :( ");
    }
    else
    {
        printf("Resultat trouve :) %d",ind);
    }
    getch();
}
//Ma fonction de modification
void Modifie(void)
{
    int j,ind;
    printf("Saisir le numero de l'eleve a modifier ? :\t");
    scanf("%d",&ind);
    printf("*************VALEUR ACTUELLE***************\n");
    printf("%s\t",Etd[ind-1].Nom);
    printf("%s\t",Etd[ind-1].Prenom);
    printf("%d\t",Etd[ind-1].Age);
    printf("%.2f\t\n",Etd[ind-1].Note[4]);
    printf("***************MODIFICATION****************\n");
    printf("Saisir le nouveau nom de l'eleve[%d] ? : ",ind);
    scanf("%s",Etd[ind-1].Nom);
    printf("Saisir le nouveau prenom de l'eleve[%d] ? : ",ind);
    scanf("%s",Etd[ind-1].Prenom);
    printf("Saisir le nouveau age de l'eleve[%d] ? : ",ind);
    scanf("%d",&Etd[ind-1].Age);
    printf("Saisir la nouvelle note 1 de l'eleve[%d] ? : ",ind);
    scanf("%f",&Etd[ind-1].Note[0]);
    printf("Saisir la nouvelle note 2 de l'eleve[%d] ? : ",ind);
    scanf("%f",&Etd[ind-1].Note[1]);
    printf("Saisir la nouvelle note 3 de l'eleve[%d] ? : ",ind);
    scanf("%f",&Etd[ind-1].Note[2]);
    printf("Saisir la nouvelle note 4 de l'eleve[%d] ? : ",ind);
    scanf("%f",&Etd[ind-1].Note[3]);
    system("cls");
    getch();
}
//Ma fonction de supression
void Suprime(void)
{
    int i,ind;
    char sup;
    printf("Saisir le numero de l'eleve a Suprimer ? :\t");
    scanf("%d",&ind);
    printf("*************VALEUR ACTUELLE***************\n");
    printf("%s\t",Etd[ind-1].Nom);
    printf("%s\t",Etd[ind-1].Prenom);
    printf("%d\t",Etd[ind-1].Age);
    printf("%.2f\t\n",Etd[ind-1].Note[4]);
    printf("\n Taper touche " Y " pour suprimer l'eleve de votre base de donnee\n");
    sup=getch();
    if(sup=='y')
    {
        for(i=ind-1;i<NbrEleve;i++)
        {
            Etd[i]=Etd[i+1];
        }
        NbrEleve--;
        system("cls");
        printf("Supression terminer\n");
    }
    else
    {
        system("cls");
        printf("Supression Annulé\n");
    }
    getch();
}
//Ma fonction de Tri
void Tri(void)
{
    int i,j;
    char c;
    printf("1 : Tri Par age\n2 : Tri par ordre alphabetique \n Votre Choix?:\t");
    c=getch();
    if(c=='1')
    {
        for(i=0;i<NbrEleve-1;i++)
        {
            for(j=i+1;j<NbrEleve;j++)
            {
                if(Etd[j].Age<Etd[i].Age)
                {
                    Echange=Etd[i];
                    Etd[i]=Etd[j];
                    Etd[j]=Echange;
                }
            }
        }
        printf("\n\tTri par age terminer");
    }
    else if(c=='2')
    {
        for (i=0;i<NbrEleve-1;i++)
        {
            for (j=i+1;j<NbrEleve;j++)
            {
                if (strcmp(Etd[j].Nom,Etd[i].Nom)<0)
                {
                    Echange=Etd[i];
                    Etd[i]=Etd[j];
                    Etd[j]=Echange;
                }
            }
        }
        printf("\n\tTri par ordre alphabetique terminer");
    }

    getch();
}

int main()
{
    int choix;
    do
    {
        system("cls");
        Menu();
        printf("\nSaisir Votre Choix ? : ");
        scanf("%d",&choix);
        switch (choix)
        {
            case 0:break;
            case 1:system("cls");Saisie();break;
            case 2:system("cls");Affichage();break;
            case 3:system("cls");Ajout();break;
            case 4:system("cls");Recherche();break;
            case 5:system("cls");Modifie();break;
            case 6:system("cls");Suprime();break;
            case 7:system("cls");Tri();break;
            default :system("cls");printf("Desole ce choix ne figure pas dans le menu!!!\n\a\a\a");getch();break;
        }
    }while(choix!=0);
    return 0;
}

6 réponses

Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
Bonjour.

Quelques exemples de fonctions:

Celle qui "retourne" quelquechose:
int func(int a, int b)
{
  return a + b;
}

int c = func(5, 6);

Ici les arguments ne sont pas modififé.

Celle qui modifie les arguments reçus:
void func(int* a)
{
  // code
  *a = 50;
}

int c = 5;
func(&c);
// c vaut maintenant 50


Dans ton code, tu n'as qu'a passer ton tableau étudiant en argument.

Ex:
struct Etudiant
{
   char Nom[30];
   char Prenom[30];
   int Age;
   float Note[5];
};
typedef struct Etudiant Etudiant;

void ajout(Etudiant* etudiants, int* nbEtudiant)
{
 // code
}

void recherche(const Etudiant* etudiants, int nbEtudiant)
{
 // code
}

int main(void)
{
  Etudiant etudiants[120];
  int nbEtudiant = 0;
  ajout(etudiants, &nbEtudiant);
  recherche(etudiants, nbEtudiant);

  return 0;
}


Tu remarqueras, que l'on passe différement les arguments selon que l'on veut les modifier ou non.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
7
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
15 janvier 2012

Merci j'ai compris ce que vous avez écrit mais le problème c'est que mon cahier de charge demande des argument que j'ai pas bien assimiler et compris je vais essayer de vous mettre un image du Cahier de charge et merci infiniment pour votre aide
Messages postés
7
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
15 janvier 2012

voila le Cahier de charge pour plus de clarification et merci
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
Ok. On ne donne pas des arguments fixes. Ce sont simplement des exemples. C'est à toi de concevoir ce qui te parait être des arguments appropriés. Tu seras sûrement noté sur le choix judicieux d'arguments.
Avec l'exemple que je t'ai donné précédemment, tu as tous les éléments en main pour réaliser ton projet. Je t'invite à coder, et à poster ce qui te bloque.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
7
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
15 janvier 2012

j'ai pas bien compris ce qu'il me faut faire afin que je puisse coder
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
Il te faut réfléchir. Je ne peux pas t'en dire plus sans te faire tes devoirs. Ce que je ne ferais pas.
Comme déjà dit, tu as déjà tous les éléments en main. À toi de jouer !

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question