× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > 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
59,99 €Switch Netgear GS116, 16 ports à 59,99 €
Valable jusqu'au 27 Novembre

Amazon propose actuellement le commutateur 16 ports Netgear GS116E-200PES à 59,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 100 €. Ce switch bénéficie de 16 connexions Ethernet haut débit commutées à 10/100/1000 Mbps en full-duplex ce qui vous permet de transférer vos fichiers sur votre réseau local à une vitesse maximum sur chaque port (jusqu'à 2000 Mbits/s). Compatible VLAN, le Netgear GS116 vous permettra également de mettre en place des réseaux locaux virtuels à l'intérieur de votre réseau local afin de mieux répartir votre bande passante et mieux gérer les priorités. Le produit est garanti 5 ans !


> Voir l'offre
56,23 €SSD Samsung 860 EVO 500 Go à 56,23 € livré
Valable jusqu'au 30 Novembre

Amazon Allemagne fait une promotion sur le SSD Samsung 860 EVO 500 Go qui passe à 51,62 €. Comptez 4,61 € pour la livraison en France soit un total de 56,23 € livré alors qu'on le trouve ailleurs à partir de 70 €. Ce SSD offre des vitesses de 560 Mo/s en lecture et 520 Mo/s en écriture. Il est garanti 5 ans. Une bonne affaire.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douane. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> Voir l'offre
106,33 €Alimentation modulaire Seasonic Focus Plus Platinium 650W (garantie 10 ans) à 106,33 € livré
Valable jusqu'au 28 Novembre

Amazon Allemagne fait une promotion sur l'alimentation Seasonic Focus Plus Gold 650W qui passe à 97,62 € (avec la TVA ajustée) grâce à un coupon de réduction automatiquement appliqué au moment du paiement. Comptez 8,71 € pour la livraison en France soit un total de 106,33 € livré alors qu'on la trouve ailleurs à partir de 139 €. Le niveau frise la perfection avec une magnifique certification 80+ PLATINIUM et un câblage full modulaire, le tout dans un silence de cathédrale. L'alimentation est garantie 10 ans.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et qu'il n'y a pas de douane. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> 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