> Tous les forums > Forum Autres langages
 fonction pointeur et, tableau dynamique
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
loulou84
  Posté le 26/04/2010 @ 17:37 
Aller en bas de la page 
Petit astucien

Bonjour,

j'ai un petit projet a realisé et je rencontre des difficultés!

En effet je dois creer un repertoire pour une classe afin d'enregister nom, prenom,date, numero etudiant et autre...

Ce que j'ai fait c'est un menu qui appelle mes fonction par exemple

1 Etudiant

1 ajouter

2 supprimer

3 ajouter note

2 Note

1 moyenne des notes

2 graphe des notes

===> ma struture s'appelle struct eleve

==> mon tableau s'appelle tabeleve et je l'ai initialisé de la facon suivante: int* tabeleve = NULL;

===> POUR AJOUTER UN ELEVE ,j'ai crer ma fonction ajouteleve qui est la suivante:

int ajouteleve(int argc, _TCHAR* argv[]);

int ajouteleve()

{
int* tabeleve = NULL;

int nbr = 0, i = 0;
printf("\n\t\t\t\t AJOUT D'UN ELEVE \n\n");
printf("Combien d'eleve vous aller ajouter?");
scanf("%d",&nbr);
if (nbr >0)
{
struct eleve *tabeleve;
tabeleve = malloc(nbr * sizeof(int));
if (tabeleve == NULL)
{
exit(0);
}
for(i=0;i<nbr;i++)
{
printf("Rentrez son Nom (Caractére Max 15)");
scanf("%s",tabeleve[i].nom);
printf("Rentrez son Prenom (Caractére Max 15)");
scanf("%s",tabeleve[i].prenom);
printf("Rentrez sa date de naissance au format jj-mm-anne");
scanf("%s",tabeleve[i].date);
printf("Rentrez son Numero d'etudiant (Caractére Max 12)");
scanf("%s",tabeleve[i].num);
printf("Rentrez sa premiére note)");
scanf("%d",tabeleve[i].note1);
printf("Rentrez sa deuxieme note");
scanf("%d",tabeleve[i].note2);
printf("Rentrez sa troisieme note");
scanf("%d",tabeleve[i].note3);
}
}
return 0;
}

et j'ai appeler cette fonction a l'aide de mon switch

case 2:
system("cls");
ajouteleve(&tabeleve);
break;

Je sais ou est ma faute, elle reside dans l'appelle de ma fonction et de la valeur des variable que je donne quand je la déclare mais je ne trouve pas!!!

merci d'avance

Publicité
breizhbugs
 Posté le 26/04/2010 à 18:41 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Message original par loulou84

==> mon tableau s'appelle tabeleve et je l'ai initialisé de la facon suivante: int* tabeleve = NULL; // C'est pas un tableau d'entier!

===> POUR AJOUTER UN ELEVE ,j'ai crer ma fonction ajouteleve qui est la suivante:

int ajouteleve(int argc, _TCHAR* argv[]); // les arguments sont ceux du point d'entrées (la fonction main())!, je doute que ce soit normal

int ajouteleve()

{
int* tabeleve = NULL; //non

int nbr = 0, i = 0;
printf("\n\t\t\t\t AJOUT D'UN ELEVE \n\n");
printf("Combien d'eleve vous aller ajouter?");
scanf("%d",&nbr);
if (nbr >0)
{
struct eleve *tabeleve;
tabeleve = malloc(nbr * sizeof(int));
if (tabeleve == NULL)
{
exit(0);
}
for(i=0;i<nbr;i++)
{
printf("Rentrez son Nom (Caractére Max 15)");
scanf("%s",tabeleve[i].nom);
printf("Rentrez son Prenom (Caractére Max 15)");
scanf("%s",tabeleve[i].prenom);
printf("Rentrez sa date de naissance au format jj-mm-anne");
scanf("%s",tabeleve[i].date);
printf("Rentrez son Numero d'etudiant (Caractére Max 12)");
scanf("%s",tabeleve[i].num);


printf("Rentrez sa premiére note)");
scanf("%d",tabeleve[i].note1);
printf("Rentrez sa deuxieme note");
scanf("%d",tabeleve[i].note2);
printf("Rentrez sa troisieme note");
scanf("%d",tabeleve[i].note3);

// je pense que tabeleve[i].note doit etre une liste de note plutot...

}
}
return 0;
}

et j'ai appeler cette fonction a l'aide de mon switch

case 2:
system("cls");
ajouteleve(&tabeleve); //non, aucune fonction ajouteeleve(<argument>) n'existe!
break;

Je sais ou est ma faute, elle reside dans l'appelle de ma fonction et de la valeur des variable que je donne quand je la déclare mais je ne trouve pas!!!

Si tu nous disais de quelle faute il s'agit...

Bref mets nous tous le code source, pour t'aider cela nous sera plus facile...

loulou84
 Posté le 26/04/2010 à 18:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

struct eleve
{
char nom[15];
char prenom[15];
char date[10];
char num[12];
int note1;
int note2;
int note3;
};

void sauv(void)
{
}
void afficher(void)
{
}
void supprimer (void)
{
}
void choisir(void)
{
}
int ajouteleve();
int ajouteleve()
{
int nbr = 0, i = 0;
printf("\n\t\t\t\t AJOUT D'UN ELEVE \n\n");
printf("Combien d'eleve vous aller ajouter?");
scanf("%d",&nbr);
if (nbr >0)
{
struct eleve *tabeleve;
tabeleve = malloc(nbr * sizeof(int));
if (tabeleve == NULL)
{
exit(0);
}
for(i=0;i
{
printf("Rentrez son Nom (Caractére Max 15)");
scanf("%s",tabeleve[i].nom);
printf("Rentrez son Prenom (Caractére Max 15)");
scanf("%s",tabeleve[i].prenom);
printf("Rentrez sa date de naissance au format jj-mm-anne");
scanf("%s",tabeleve[i].date);
printf("Rentrez son Numero d'etudiant (Caractére Max 12)");
scanf("%s",tabeleve[i].num);
printf("Rentrez sa premiére note)");
scanf("%d",tabeleve[i].note1);
printf("Rentrez sa deuxieme note");
scanf("%d",tabeleve[i].note2);
printf("Rentrez sa troisieme note");
scanf("%d",tabeleve[i].note3);
}
}
return 0;
}
void anive(void)
{
}
void choixdevoirs(void)
{
}
void menu (void)
{
int n,m,p;
system("cls");
printf("\n\t1) Recherche d'un eleve.\n");
printf("\n\t2) Ajouter un eleve. \n");
printf("\n\t3) Etablir un graphque des notes du devoir.\n");
printf("\n\t4) Rappel des anniversaires de la semaine.\n");
printf("\n\t5) Sauvegarder & Quitter.\n");
scanf("%d",&n);

switch(n)
{
case 1:
system("cls");
printf("\n\t 1)Rechercher un eleve.\n");
printf("\n\t\t\t1) Le supprimer.\n");
printf("\n\t\t\t2) L'afficher.\n");
printf("\n\t\t\t3) Ajouter une note.\n");
printf("\n\t\t\t4) Menu.\n");
scanf("%d",&p);
switch(p)
{

case 1:
system("cls");
supprimer();
break;

case 2:
system("cls");
afficher();
break;

case 3:
system("cls");
printf("\n\t 3) Ajouter une note.\n");
printf("\n\t\t\t1) Choix du devoir.\n");
printf("\n\t\t\t2)Menu.\n");
scanf("%d",&m);

switch(m)
{
case 1:
system("cls");
choisir();
break;

case 2:
system("cls");
menu();
break;

default :
system("cls");
printf("\tMauvaise touche");
menu();

};
case 4:
system("cls");
menu();
break;

default :
system("cls");
printf("\tMauvaise touche");
menu();
};
break;

case 2:
system("cls");
ajouteleve(&tabeleve);
break;

case 3:
system("cls");
printf("\n \t3)Etablir un graphique des notes du devoir.\n");
printf("\n\t\t\t1)Choix du devoir\n");
printf("\n\t\t\t2)Menu\n");
scanf("%d",&p);
switch(p)
{
case 1:
system("cls");
choixdevoirs();
break;

case 2:
system("cls");
menu();
break;

default :
system("cls");
printf("\tMauvaise touche");
menu();

};
break;

case 4:
system("cls");
anive();
break;

case 5:
system("cls");
sauv();
break;

};


}

int _tmain(int argc, _TCHAR* argv[])
{
int n;
int* tabeleve = NULL;

printf("\n\t\t\tBonjour,\n");
printf("\nVoici le repertoire cree par Saignazite Bryan et Winkelmann Loic\n");
printf("\nQue voulez vous faire\n");
printf("\n\t Acceder au repertoire [1]\n");
printf("\n\t Quitter le repertoire [2]\n");
scanf("%d",&n);
switch(n)
{
case 1:
menu();
break;

case 2:
system("EXIT");
break;

default:
system("EXIT");
};
return 0;
}

voila le tout! si vous avez des questions! n'hesitez pas



Modifié par loulou84 le 26/04/2010 18:50
loulou84
 Posté le 26/04/2010 à 19:03 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

il me dit que void* ne peut etre convertie en void

je ne comprend pas mon erreur!!!

merci

loulou84
 Posté le 26/04/2010 à 19:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bon javais des erreur betes qui gacher tout!!

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int* tabeleve = NULL;

struct eleve
{
char nom[15];
char prenom[15];
char date[10];
char num[12];
int note1;
int note2;
int note3;
};

void sauv(void)
{
}
void afficher(void)
{
}
void supprimer (void)
{
}
void choisir(void)
{
}


void ajouteleve(struct eleve* tabeleve)
{
int nbr = 0, i = 0;
printf("\n\t\t\t\t AJOUT D'UN ELEVE \n\n");
printf("Combien d'eleve vous aller ajouter?");
scanf("%d",&nbr);
if (nbr >0)
{
struct eleve* tabeleve = malloc(nbr * sizeof(int));
if (tabeleve == NULL)
{
exit(0);
}
for(i=0;i<nbr;i++)
{
printf("Rentrez son Nom (Caractére Max 15)");
scanf("%s",tabeleve[i].nom);
printf("Rentrez son Prenom (Caractére Max 15)");
scanf("%s",tabeleve[i].prenom);
printf("Rentrez sa date de naissance au format jj-mm-anne");
scanf("%s",tabeleve[i].date);
printf("Rentrez son Numero d'etudiant (Caractére Max 12)");
scanf("%s",tabeleve[i].num);
printf("Rentrez sa premiére note)");
scanf("%d",tabeleve[i].note1);
printf("Rentrez sa deuxieme note");
scanf("%d",tabeleve[i].note2);
printf("Rentrez sa troisieme note");
scanf("%d",tabeleve[i].note3);
}
}

}
void anive(void)
{
}
void choixdevoirs(void)
{
}
void menu (void)
{
int n,m,p;
system("cls");
printf("\n\t1) Recherche d'un eleve.\n");
printf("\n\t2) Ajouter un eleve. \n");
printf("\n\t3) Etablir un graphque des notes du devoir.\n");
printf("\n\t4) Rappel des anniversaires de la semaine.\n");
printf("\n\t5) Sauvegarder & Quitter.\n");
scanf("%d",&n);

switch(n)
{
case 1:
system("cls");
printf("\n\t 1)Rechercher un eleve.\n");
printf("\n\t\t\t1) Le supprimer.\n");
printf("\n\t\t\t2) L'afficher.\n");
printf("\n\t\t\t3) Ajouter une note.\n");
printf("\n\t\t\t4) Menu.\n");
scanf("%d",&p);
switch(p)
{

case 1:
system("cls");
supprimer();
break;

case 2:
system("cls");
afficher();
break;

case 3:
system("cls");
printf("\n\t 3) Ajouter une note.\n");
printf("\n\t\t\t1) Choix du devoir.\n");
printf("\n\t\t\t2)Menu.\n");
scanf("%d",&m);

switch(m)
{
case 1:
system("cls");
choisir();
break;

case 2:
system("cls");
menu();
break;

default :
system("cls");
printf("\tMauvaise touche");
menu();

};
case 4:
system("cls");
menu();
break;

default :
system("cls");
printf("\tMauvaise touche");
menu();
};
break;

case 2:
system("cls");
ajouteleve(tabeleve);
break;

case 3:
system("cls");
printf("\n \t3)Etablir un graphique des notes du devoir.\n");
printf("\n\t\t\t1)Choix du devoir\n");
printf("\n\t\t\t2)Menu\n");
scanf("%d",&p);
switch(p)
{
case 1:
system("cls");
choixdevoirs();
break;

case 2:
system("cls");
menu();
break;

default :
system("cls");
printf("\tMauvaise touche");
menu();

};
break;

case 4:
system("cls");
anive();
break;

case 5:
system("cls");
sauv();
break;

};


}

int _tmain(int argc, _TCHAR* argv[])
{
int n;


printf("\n\t\t\tBonjour,\n");
printf("\nVoici le repertoire cree par Saignazite Bryan et Winkelmann Loic\n");
printf("\nQue voulez vous faire\n");
printf("\n\t Acceder au repertoire [1]\n");
printf("\n\t Quitter le repertoire [2]\n");
scanf("%d",&n);
switch(n)
{
case 1:
menu();
break;

case 2:
system("EXIT");
break;

default:
system("EXIT");
};
return 0;
}

Le compilo me sort une erreur de cast, impossilbe de convertir int* en eleve *

un peu d'aide svp

breizhbugs
 Posté le 26/04/2010 à 22:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
loulou84 a écrit :

Bon javais des erreur betes qui gacher tout!!

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

struct eleve
{
char nom[15];
char prenom[15];
char date[10];
char num[12];
int note1; // question: es tu sur qu'il n'y ait que 3 notes? c'est pas censée etre une liste?
int note2;
int note3;
};
int* tabeleve = NULL; // Non!
void sauv(void)
{
}
void afficher(void)
{
}
void supprimer (void)
{
}
void choisir(void)
{
}


void ajouteleve(struct eleve* parameleve) // modif pour pas confondre
{
int nbr = 0, i = 0;
printf("\n\t\t\t\t AJOUT D'UN ELEVE \n\n");
printf("Combien d'eleve vous aller ajouter?");
scanf("%d",&nbr);
if (nbr >0)
{
struct eleve* = malloc(nbr * sizeof(int)); //Non: parameleve = malloc(nbr*sizeof(eleve)) ou un truc du genre
if (parameleve== NULL)
{
exit(0);
}
for(i=0;i
{
printf("Rentrez son Nom (Caractére Max 15)");
scanf("%s",parameleve[i].nom);
printf("Rentrez son Prenom (Caractére Max 15)");
scanf("%s",parameleve[i].prenom);
printf("Rentrez sa date de naissance au format jj-mm-anne");
scanf("%s",parameleve[i].date);
printf("Rentrez son Numero d'etudiant (Caractére Max 12)");
scanf("%s",parameleve[i].num);
printf("Rentrez sa premiére note)");
scanf("%d",parameleve[i].note1);
printf("Rentrez sa deuxieme note");
scanf("%d",parameleve[i].note2);
printf("Rentrez sa troisieme note");
scanf("%d",parameleve[i].note3);
}
}

}
void anive(void)
{
}
void choixdevoirs(void)
{
}
void menu (void)
{
int n,m,p;
system("cls");
printf("\n\t1) Recherche d'un eleve.\n");
printf("\n\t2) Ajouter un eleve. \n");
printf("\n\t3) Etablir un graphque des notes du devoir.\n");
printf("\n\t4) Rappel des anniversaires de la semaine.\n");
printf("\n\t5) Sauvegarder & Quitter.\n");
scanf("%d",&n);

switch(n)
{
case 1:
system("cls");
printf("\n\t 1)Rechercher un eleve.\n");
printf("\n\t\t\t1) Le supprimer.\n");
printf("\n\t\t\t2) L'afficher.\n");
printf("\n\t\t\t3) Ajouter une note.\n");
printf("\n\t\t\t4) Menu.\n");
scanf("%d",&p);
switch(p)
{

case 1:
system("cls");
supprimer();
break;

case 2:
system("cls");
afficher();
break;

case 3:
system("cls");
printf("\n\t 3) Ajouter une note.\n");
printf("\n\t\t\t1) Choix du devoir.\n");
printf("\n\t\t\t2)Menu.\n");
scanf("%d",&m);

switch(m)
{
case 1:
system("cls");
choisir();
break;

case 2:
system("cls");
menu();
break;

default :
system("cls");
printf("\tMauvaise touche");
menu();

};
case 4:
system("cls");
menu();
break;

default :
system("cls");
printf("\tMauvaise touche");
menu();
};
break;

case 2:
system("cls");
ajouteleve(tabeleve);
break;

case 3:
system("cls");
printf("\n \t3)Etablir un graphique des notes du devoir.\n");
printf("\n\t\t\t1)Choix du devoir\n");
printf("\n\t\t\t2)Menu\n");
scanf("%d",&p);
switch(p)
{
case 1:
system("cls");
choixdevoirs();
break;

case 2:
system("cls");
menu();
break;

default :
system("cls");
printf("\tMauvaise touche");
menu();

};
break;

case 4:
system("cls");
anive();
break;

case 5:
system("cls");
sauv();
break;

};


}

int _tmain(int argc, _TCHAR* argv[])
{
int n;


printf("\n\t\t\tBonjour,\n");
printf("\nVoici le repertoire cree par Saignazite Bryan et Winkelmann Loic\n");
printf("\nQue voulez vous faire\n");
printf("\n\t Acceder au repertoire [1]\n");
printf("\n\t Quitter le repertoire [2]\n");
scanf("%d",&n);
switch(n)
{
case 1:
menu();
break;

case 2:
system("EXIT");
break;

default:
system("EXIT");
};
return 0;
}

Le compilo me sort une erreur de cast, impossilbe de convertir int* en eleve *

un peu d'aide svp

Sinon, je pense que tu ne gères pas bien le nombre d'élève:

tu ne devrais pas utiliser un tableau, mais une liste je pense!

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
599,99 €Portable 15,6 pouces HP (FullHD, Core i5, 8 Go, SSD 128 Go + DD 1 To, GTX 1050 3 Go) à 599,99 €
Valable jusqu'au 26 Février

Cdiscount fait une belle promotion sur l'ordinateur portable HP Pavilion 15-bc511nf qui passe à 599,99 € livré gratuirement alors qu'on le trouve ailleurs autour de 700 €. Ce portable possède un écran 15,6 pouces HD Full HD (1920x1080), un processeur Intel Core i5 9300H, 8 Go de RAM, un SSD de 128 Go, un disque dur de 1 to et une carte graphique dédiée GeForce GTX 1050 3 Go. Le tout tourne sous Windows 10.


> Voir l'offre
18,90 €Microsoft Office Professionnel 2016 Plus à 18,90 €
Valable jusqu'au 26 Février

Le vendeur sérieux Digital FR sur Amazon propose la clé d'activation légale pour Microsoft Office Professionnel 2016 Plus en français à 18,90 €. Cette clé livrée par email vous permettra d'activer Microsoft Office Professionnel 2016 Plus légalement et vous permettra ainsi d'utiliser autant de temps que vous voulez (il s'agit de la version complète et pas d'un abonnement) Word,Excel, PowerPoint, OneNote, Outlook, Publisher et Access 2016 sur un PC. La clé sera à activer sur Office.com où vous pourrez ensuite télécharger toute la suite bureautique. Si la version 2019 fonctionne uniquement avec Windows 10, cette version 2016 fonctionne avec Windows 7, Windows 8 et Windows 10 !


> Voir l'offre
9,99 €Bloc multiprise parasurtenseur BRENNENSTUHL 8 prises à 9,99 €
Valable jusqu'au 27 Février

Amazon fait une promotion sur le bloc multiprise parasurtenseur BRENNENSTUHL avec 8 prises à orientation interversée qui passe à 9,99 € au lieu de 20 €. Le câble fait 1,4 m.


> Voir l'offre

Sujets relatifs
Fonction qui renvoie un tableau
tableau dynamique
tableau croisé dynamique access
Comment exclure 0 dans une fonction
Rafraichir un tableau en java
commande créer la fonction effacer image en VB10
extraction de valeurs sur un tableau a deux entrees
Site dynamique avec Dream et Wamp
C Problème pointeur et passage en référence.
symétrie d'un tableau 2D
Plus de sujets relatifs à fonction pointeur et, tableau dynamique
 > Tous les forums > Forum Autres langages