> 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
189,99 €Centrale vapeur Calor GV8962 à 189,99 €
Valable jusqu'au 20 Février

Amazon fait une vente flash sur la centrale vapeur Calor GV8962 2400W qui passe à 189,99 € livrée gratuitement au lieu de 285 €.  Vapeur haute pression 6,5 bars pour pénétrer au Cœur des tissus et vous faciliter le repassage. Cuve haute pression pour une vapeur traversant et un gain de temps. Le collecteur anti-calc emprisonne les dépôts calcaires de la cuve pour un entretien facile et efficace et une performance longue durée. Produit fabriqué en France garanti 2 ans et réparable 10 ans.


> Voir l'offre
86,90 €Disque dur Western Digital Blue 4 To à 86,90 € livré
Valable jusqu'au 20 Février

Amazon Espagne propose actuellement le disque dur Western Digital Blue 4 To à 81,19 € (avec la TVA ajustée). Comptez 5,71 € pour la livraison en France soit un total de 86,90 € livré. Ce disque dur 3.5 pouces SATA III  tourne à 5400 tr/min. On le trouve ailleurs à partir de 100 €. Vous pouvez utiliser votre compte Amazon France sur Amazon Espagne et il n'y a pas de douane.


> Voir l'offre
329,90 €Ecran ultra large LG 34 pouces 34WL50S-B à 329,90 €
Valable jusqu'au 22 Février

Amazon propose actuellement l'écran 34 pouces LG 34WL50S-B à 329,90 € livré gratuitement alors qu'on le trouve à partir de 400 € ailleurs. Cet écran ultra large est au format 21/9, possède une dalle IPS et offre une résolution de 2560 x 1080 pixels. Avec lui, vous pourrez bénéficier d'une plus grande immersion dans les jeux et les films. Cet écran est compatible FreeSync.


> 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