Rechercher : dans
Par :

Aide appel de fonctions (langage C)

Dernière réponse le 10 nov 2004 à 10:49:02 paul75, le 9 nov 2004 à 23:11:57 
 Signaler ce message aux modérateurs

Bonsoir,
voila, je doit saisir les renseignements parmi :
code produit (chaine de 3 caractere)
quantite vendue (entier)
on s'arrete des qu'on entre XXX pour code-produit.

voici ce que j'ai essaye de faire :

#include <stdio.h>
#include <string.h>
typedef char CH3[4];

void main()
{
	CH3 cdeprod;
	int qte;
	char SAISIE(CH3,int);
	printf("Entrez un code-produit :\n");
	gets(cdeprod);
	while(strcmp(cdeprod,"XXX")!=0)
	{
		char SAISIE(CH3,int);
		gets(cdeprod);
	}
}


//fonction saisie
char SAISIE(CH3 cdeprod,int qte)
{
	printf("Entrez une quantite");
	scanf("%d",qte);
	return(qte);
}


voila j'arrive pas a declarer la fonction, elle ne veut pas !
j'ai du oublier un truc mais je ne saurais le dire.

Merci

Meilleures réponses pour « aide appel de fonctions (langage C) » dans :
Langage C - Les fonctions Voir La notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
Les fonctions en C++ : surcharge et paramètres par défaut. VoirLes fonctions en C++ : surcharge et paramètres par défaut. 1. La surcharge de fonctions et méthodes de classes, dont le constructeur 2. Utilisation des paramètres par défaut En C++, une même fonction ou méthode de classe peut être...
Les piles en langage C VoirLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...

1

beeboo, le 9 nov 2004 à 23:25:12

Dans ton code tu déclares 2 fois SAISIE, en fait à la 3ème ligne de ton main, en faisant précéder SAISIE(CH3,int); par char, c'est une redéclaration que tu fais, enlèves le char de cette ligne et c'est OK.

#include <stdio.h>
#include <string.h>
typedef char CH3[4];

void main()
{
	CH3 cdeprod;
	int qte;
	char  SAISIE(CH3,int);
	printf("Entrez un code-produit :\n");
	gets(cdeprod);
	while(strcmp(cdeprod,"XXX")!=0)
	{
		char SAISIE(CH3,int);
		gets(cdeprod);
	}
}


//fonction saisie
char SAISIE(CH3 cdeprod,int qte)
{
	printf("Entrez une quantite");
	scanf("%d",qte);
	return(qte);
}

Répondre à beeboo

2

beeboo, le 9 nov 2004 à 23:27:11

J'oubliais, c'est la même chose dans la boucle while, bien entendu :-) (suis-je distrait.)

Répondre à beeboo

3

paul75, le 9 nov 2004 à 23:31:04

Bonsoir et merci,
le probleme c'est que si je l'enlève, il me met à la compilation 6 problemes :
le premier me signale une "error C2065: 'SAISIE' : undeclared identifier"
ensuite :
"error C2275: 'CH3' : illegal use of this type as an expression"

voila

merci infiniment

Répondre à paul75

4

Guki, le 10 nov 2004 à 00:06:16

Salut!

Manque le prototype de la fonction SAISIE avant la définition de la fonction main. Pas de type devant l'application d'une fonction seulement pendant sa définition et la déclaration du prototype. De plus tu ne mets pas en argument les noms des variables que tu as déclarés précédemment.

Observe la différence.

#include <stdio.h>
#include <string.h>

typedef char CH3[4];

/* prototype de saisir */

char saisir(CH3 cdeprod, int qte);

int main(void)
{
	CH3 cdeprod;
	int qte;

	/*
		ici on passe cedprod et qte en argument
		on applique la fonction pas besoin de char
	*/

	saisir(cdeprod, qte);
	printf("Entrez un code-produit :\n");
	gets(cdeprod);
	while(strcmp(cdeprod, "XXX") != 0)
	{

	/*
		même chose ici
	*/
		saisir(cdeprod, qte);
		gets(cdeprod);
	}

	/*
		on retourne la valeur de la macro qui vaut 0
	*/

	return EXIT_SUCCESS;
}


/* fonction saisir */

char saisir(CH3 cdeprod, int qte)
{
	printf("Entrez une quantite");
	
	/*
		ne pas oublier l'adresse & pour scanf
	*/

	scanf("%i", &qte);
	return qte;
}


Je pense que ça passera mieux ainsi bien que je n'ai pas essayé de comprendre le code. ;-)

Répondre à Guki

5

beeboo, le 10 nov 2004 à 00:07:56

Pas mieux :)

Répondre à beeboo

6

 LeSousss, le 10 nov 2004 à 10:49:02

Salut, je ne suis pas vraiment sur mais essaye çà :

#include <stdio.h>
#include <string.h>

typedef char CH3[4];

//Je ne sais pas pourquoi tu veut envoyer cdeprod et qte dans ta fonction puisque tu ne les utilise pas
//char saisir(CH3 cdeprod, int qte);
//devient
char saisir();

int main(void)
{
CH3 cdeprod;
int qte;
//dans ta fonction tu retourne qte mais tu n'a pas de variable qui reçoit cette valeure donc :
qte = saisir();
printf("Entrez un code-produit :\n");
gets(cdeprod);
while(strcmp(cdeprod, "XXX") != 0)
{
qte = saisir();
gets(cdeprod);
}

return 0;
}

char saisir(CH3 cdeprod, int qte)
{
printf("Entrez une quantite");
scanf("%d", &qte);
return qte;
}

Voila dis moi si ca marche !

Répondre à LeSousss