passage de parametres a 1 fonction pb de retour - C - Programmation
Marsh Posté le 13-12-2004 à 18:28:54
tu mets dans une structure ou tu passes des arguments de sortie par pointeur
Marsh Posté le 13-12-2004 à 19:09:50
Salut Taz, pour l'instant, je ne fais pas encore de structure et donc je passe par les pointeurs. J'ai bien pensé passer dans le main() a l'appel de la fonction saisie() l'adresse de l'entier qui determine le nombre de mes elements du tableau_ &N _ et un pointeur sur tableau puis dans la fonction saisie terminer par return X[i], i l'incrementation du tableau ~valeur de N max~. Mais ca n'a rien donné de plus quant au deuxieme argument(l'entier qui reste scotché dans la fonction) et le tableau ?
Ou alors existe-il un pointeur sur fonction qui puisse me retourner ces 2 entites dans le main ?
Marsh Posté le 13-12-2004 à 21:05:24
Voici avec le code ce que j'ai fait :
#include <stdio.h>
int saisie(int,int *);
void affichage(int,int *);
int POINTS[50]; /* tableau des points */
void main()
{
int N=0; /* nombre d'etudiants*/
int *P=POINTS;
saisie(N,P);
affichage(N,P);
printf("\n" );
}
/* ******* Saisie ******** */
int saisie(int N,int *X)
{
int I;
int N=0; /* nombre d_etudiants */
printf("Entrez le nombre d_Etudiants(max.50) :\n" );
scanf("%d",&N);
printf("Entrez les points des Etudiants :\n" );
for(I=0;I<N;I++)
{
printf("Etudiant %d :",I+1);
scanf("%d",&X[I]);
}
return X[I];
}
Et la ca bloque car il me faudrait retourner le tableau et aussi le nombre d_etudiants dans le main() !!!
Marsh Posté le 13-12-2004 à 21:13:47
Ben ton return X[I] est totalement inutile. Un return N par contre...
surtout si tu fais un appel avec N = saisie(P);
je met pas N = saisie(N,P); car il est clair que N est totalement inutile comme parametre de saisie.
A+,
Marsh Posté le 13-12-2004 à 21:33:35
Manque les balises pour le code ...
Citation :
|
http://mapage.noos.fr/emdel/notes.htm#typemain
http://mapage.noos.fr/emdel/notes.htm#saisie
Vu de la fonction saisie() le tableau est accessible en écriture et celle-ci ne se prive pas de le modifier. Il n'y a donc rien à retourner de plus...
La fonction pourrait retourner le nombre d'étudiants. La paramètre N devient alors inutile.
Marsh Posté le 13-12-2004 à 21:43:25
Merci Gilou, ca marche au poil. C'est vrai que je ne suis jamais tres loin de la solution, mais a la compil, ce presque entraine fatalement un echec ! merci encore...
Marsh Posté le 14-12-2004 à 19:39:28
Bonsoir,
J'ai juste omis de vous mettre ma solution, qui grâce à vous m'a permis de progresser d'un pas.
#include <stdio.h>
int saisie(int *);
void main()
{
int N=0; /* nombre d'etudiants */
int I;
int POINTS[50]; /* tableau des points */
int *P=POINTS;
N=saisie(P);
for(I=0;I<N;I++)
printf("etudiant %d : points %d \n",I+1,P[I]);
printf("\n" );
}
/* ******* Saisie ******** */
int saisie(int *X)
{
int I;
int E=0;
printf("Entrez le nombre d'Etudiants(max.50) :\n" );
scanf("%d",&E);
printf("Entrez les points des Etudiants :\n" );
for(I=0;I<E;I++)
{
printf("Etudiant %d :",I+1);
scanf("%d",&X[I]);
}
return E;
}
Merci encore à ce forum.
Marsh Posté le 13-12-2004 à 18:16:37
Bonjour,
Merci pour ce forum très utile. J'ai un petit soucis de retour de parametre :
j'ai appele dans le main() une fonction saisie avec 2 parametres - un entier qui me reservira après pour efectuer des operations de calcul, et un pointeur sur tableau. int N=0;int *P=POINTS;saisie(N,P); (fonction declaree _int saisie(int,int *);_)
la fonction saisie_ int saisie(int N,int *X)_ se charge de la saisie de l'entier puis des valeur tableau X[i]:
Comment puis-je retourner au programme principal et l'entier saisi et le tableau ? sachant qu'en C on ne peut retourner qu'une valeur ? (j'ai besoin de ces deux paramètres pour une prochaine fonction d'affichage et une autre de calcul (moyenne, maximum, somme etc.))
Merci de m'indiquer un peu le chemin a suivre si il ya bien une solution...
---------------
nationale85