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