Problème Fonctions en C
Fermé
Magenti
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
20 juillet 2012
-
3 mars 2010 à 16:29
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 10 mars 2010 à 19:55
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 10 mars 2010 à 19:55
A voir également:
- Problème Fonctions en C
- Ces codes secrets vous donnent accès aux fonctions cachées de votre smartphone Android - Accueil - Android
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Les fonctions excel en anglais - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Formule permettant de remplir automatiquement un tableau excel ✓ - Forum Excel
8 réponses
Salut, ton code est a peu pret bon....
Il te dit que a est pair car ta fonction f1 retourne toujours 0.
plus loin tu as un
if(f1(a))
{
/****/
}
vu que f1 retourne 0, et que 0 = TRUE, alors ce que tu as dans ce bloc est tout le temps exécuté.
Remplace ta fonction f1 par ça :
int f1 (int n)
{
if ((n%2)==0)
{
printf("est multiple de 2");
return 0;
}
return -1;
}
Il te dit que a est pair car ta fonction f1 retourne toujours 0.
plus loin tu as un
if(f1(a))
{
/****/
}
vu que f1 retourne 0, et que 0 = TRUE, alors ce que tu as dans ce bloc est tout le temps exécuté.
Remplace ta fonction f1 par ça :
int f1 (int n)
{
if ((n%2)==0)
{
printf("est multiple de 2");
return 0;
}
return -1;
}
Pardon, 0 != TRUE !
true == 1
Mais ta fonction f1 est censée retourner un entier, alros qu'elle ne retourne rien dans ton code
true == 1
Mais ta fonction f1 est censée retourner un entier, alros qu'elle ne retourne rien dans ton code
Magenti
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
20 juillet 2012
3 mars 2010 à 16:46
3 mars 2010 à 16:46
Merci pour le conseil ^^
Mais je viens de tester, le problème est toujours là et de plus si je mets a=2 il ne m'affiche plus qu'il est pair alors qu'avant ça marchait lol ^^
Mais je viens de tester, le problème est toujours là et de plus si je mets a=2 il ne m'affiche plus qu'il est pair alors qu'avant ça marchait lol ^^
bool f1 (int n)
{
if ((n%2)==0)
{
printf("est multiple de 2");
return true;
}
return false;
}
bool f2 (int n)
{
if ((n%3)==0)
{
printf("est multiple de 3 \n");
return true;
}
return false;
}
int main ()
{
int a;
a= lire_entier ();
if (f1(a))
{
printf(" et est pair \n");
}
f2(a);
if ((a%6)==0)
{
printf("est multiple de 6");
}
return 0;
}
{
if ((n%2)==0)
{
printf("est multiple de 2");
return true;
}
return false;
}
bool f2 (int n)
{
if ((n%3)==0)
{
printf("est multiple de 3 \n");
return true;
}
return false;
}
int main ()
{
int a;
a= lire_entier ();
if (f1(a))
{
printf(" et est pair \n");
}
f2(a);
if ((a%6)==0)
{
printf("est multiple de 6");
}
return 0;
}
Magenti
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
20 juillet 2012
3 mars 2010 à 16:58
3 mars 2010 à 16:58
Codeblocks le prend pas, il y aurait une erreur de syntaxe.....:S
Et l'ennui, c'est qu'on n'a pas vu la fonction bool. Apparement, on est censé utiliser que void ou int pour cet exo.
Et l'ennui, c'est qu'on n'a pas vu la fonction bool. Apparement, on est censé utiliser que void ou int pour cet exo.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
le "B" majuscule au début pour l'erreur de synthaxe.
sinon laisse int en valeur de retour, mais dans les if où tu appelles ta fonction, met une égalité
sinon laisse int en valeur de retour, mais dans les if où tu appelles ta fonction, met une égalité
Magenti
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
20 juillet 2012
3 mars 2010 à 17:11
3 mars 2010 à 17:11
Je vois pas trop ce que tu veux dire mais je me suis inspiré de ce que tu as écrit avant et ça marche !!! ^^
Ca donne ça :
#include <stdio.h>
#include <stdlib.h>
#include "lecture.h"
int f1 (int n)
{
if ((n%2)==0)
{
printf("est multiple de 2");
return 1;
}
return 0;
}
int f2 (int n)
{
if ((n%3)==0)
{
printf("est multiple de 3 \n");
return 1;
}
return 0;
}
int main ()
{
int a;
a= lire_entier ();
if (f1(a))
{
printf(" et est pair \n");
}
f2(a);
if ((a%6)==0)
{
printf("est multiple de 6");
}
return 0;
}
Le seul problème c'est que j'ai du mal à comprendre pourquoi......lol ! Merci pour ton aide ^^
Ca donne ça :
#include <stdio.h>
#include <stdlib.h>
#include "lecture.h"
int f1 (int n)
{
if ((n%2)==0)
{
printf("est multiple de 2");
return 1;
}
return 0;
}
int f2 (int n)
{
if ((n%3)==0)
{
printf("est multiple de 3 \n");
return 1;
}
return 0;
}
int main ()
{
int a;
a= lire_entier ();
if (f1(a))
{
printf(" et est pair \n");
}
f2(a);
if ((a%6)==0)
{
printf("est multiple de 6");
}
return 0;
}
Le seul problème c'est que j'ai du mal à comprendre pourquoi......lol ! Merci pour ton aide ^^
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
3 mars 2010 à 17:30
3 mars 2010 à 17:30
Le mot clé bool n'existe pas en C.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
3 mars 2010 à 17:38
3 mars 2010 à 17:38
Bonjour
vous mélangez un peu les deux façons de faire.
Soit votre fonction traite laffichage auquel cas elle n'a pas besoin de renvoyer un int. Ou alors c'est la fonction appelante qui traite en fonction du nombre retournée.
Prenons le dernier cas.
int f1(int n) {
return n%2==0;
}
de même pour l'autre fonction.
Cdlt
vous mélangez un peu les deux façons de faire.
Soit votre fonction traite laffichage auquel cas elle n'a pas besoin de renvoyer un int. Ou alors c'est la fonction appelante qui traite en fonction du nombre retournée.
Prenons le dernier cas.
int f1(int n) {
return n%2==0;
}
de même pour l'autre fonction.
Cdlt
Magenti
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
20 juillet 2012
10 mars 2010 à 19:46
10 mars 2010 à 19:46
Bonsoir, j'ai un autre problème avec un algo. Un petit coup de main serait le bienvenu ^^
Voici ce qu'il faut faire : on veut trouver les entiers "x" inférieurs à 1000 tel que x est = à la somme des cubes de ses chiffres. Exemple : 371=3^3+7^3+1^3.
Je dois écrire une fonction qui teste chaque entier compris entre 2 et 999.
J'aimerai isoler dans une variable chaque chiffre du nombre mais je sais pas comment l'écrire....:S
ps : la fonction mod de Maple devient "%" en langage C, mais la fonction quo ?
Merci d'avance ! ^^
Voici ce qu'il faut faire : on veut trouver les entiers "x" inférieurs à 1000 tel que x est = à la somme des cubes de ses chiffres. Exemple : 371=3^3+7^3+1^3.
Je dois écrire une fonction qui teste chaque entier compris entre 2 et 999.
J'aimerai isoler dans une variable chaque chiffre du nombre mais je sais pas comment l'écrire....:S
ps : la fonction mod de Maple devient "%" en langage C, mais la fonction quo ?
Merci d'avance ! ^^
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
10 mars 2010 à 19:55
10 mars 2010 à 19:55
La fonction quo (récupération de quotient ?) est l'opérateur / tout simplement.
Par exemple : 5/2 te donnera 2 et 5%2 te donnera 1.
Cdlt,
Par exemple : 5/2 te donnera 2 et 5%2 te donnera 1.
Cdlt,
3 mars 2010 à 17:27
non la fonction ne retourne pas 0 puisqu'il n'y a pas de return.
De plus il ne faut pas mettre return 0 puisque sinon son programme ne sera pas cohérent.
Cdlt