Fonction en c
Résolu/Fermé
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
-
3 févr. 2008 à 22:37
limbergh Messages postés 658 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 29 juin 2010 - 4 févr. 2008 à 00:24
limbergh Messages postés 658 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 29 juin 2010 - 4 févr. 2008 à 00:24
A voir également:
- Fonction en c
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction trier excel - Guide
- Fonction ms dos non valide - Forum Windows 8 / 8.1
6 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
3 févr. 2008 à 22:59
3 févr. 2008 à 22:59
Salut,
Tout d'abord, avant de poster du code, utilise la case "conversation du code" à côté de "souligner", ça sera plus lisible ;)
Sinon, une petite remarque, dans ton switch, n'utilise pas des { } après les case, ça sert à rien, et dans certain cas, ça pourra t'amener des erreurs ;) L'utilisation de { } crée un nouvel espace mémoire dans la pile.
Pour créer ta fonction, tu écris en case 3: inverse(T);
Ensuite tu crées la fonction : void inverse(int *T){ ... }
Bon code
Tout d'abord, avant de poster du code, utilise la case "conversation du code" à côté de "souligner", ça sera plus lisible ;)
Sinon, une petite remarque, dans ton switch, n'utilise pas des { } après les case, ça sert à rien, et dans certain cas, ça pourra t'amener des erreurs ;) L'utilisation de { } crée un nouvel espace mémoire dans la pile.
Pour créer ta fonction, tu écris en case 3: inverse(T);
Ensuite tu crées la fonction : void inverse(int *T){ ... }
Bon code
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
3 févr. 2008 à 23:20
3 févr. 2008 à 23:20
rebonsoir,
voilà j'ai défini ma fonction mais quand je compile, ça m'indique que certains éléments
de ma fonction sont déclarées plusierus fois et donc ça ne marche pas.
En plus je ne comprend pas mon erreur.
Si quelqu'un peut m'aider c'est avec plaisir.
Merci d'avance et voici mon code...
voilà j'ai défini ma fonction mais quand je compile, ça m'indique que certains éléments
de ma fonction sont déclarées plusierus fois et donc ça ne marche pas.
En plus je ne comprend pas mon erreur.
Si quelqu'un peut m'aider c'est avec plaisir.
Merci d'avance et voici mon code...
#include <stdio.h> #include <stdlib.h> #define Tmax 5 int inverse(int *T[Tmax]) { int i, xtp ; int *T[Tmax]; for (i=0;i<=Tmax/2;i++) { xtp=T[i]; T[i]=T[Tmax-i]; T[Tmax-i]=T[i]; return 1; } } int choix,i,T[Tmax]; int main(int argc, char *argv[]) { do { printf("\n-1- introduire les chiffres de la table\n"); printf("\n-2- affichage de la table\n"); printf("\n-3- inversion de la table\n"); printf("\n-0- fin\n"); printf("votre choix===============>"); scanf("%d", &choix); switch(choix) { case 1 : { for (i=0;i<=Tmax;i++) { printf("introduisez le chiffre %d de la table :", i); scanf("%d", &T[i]); } break; } case 2 : { for (i=0;i<=Tmax;i++) printf("%d\t", T[i]); break; } case 3 : { inverse(T[Tmax]); } } } while (choix!=0); system("PAUSE"); return 0; }
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
3 févr. 2008 à 23:30
3 févr. 2008 à 23:30
Re,
Visiblement, tu n'as pas tenu compte de mes petits conseils et pas bien lu mon post ^^.
Ca marchera mieux
Visiblement, tu n'as pas tenu compte de mes petits conseils et pas bien lu mon post ^^.
#include <stdio.h> #include <stdlib.h> #define Tmax 5 int inverse(int *T) { int i, xtp ; for (i=0;i<=Tmax/2;i++) { xtp=T[i]; T[i]=T[Tmax-i]; T[Tmax-i]=T[i]; return 1; } } int main(int argc, char *argv[]){ int i; int choix; int T[Tmax]; do { printf("\n-1- introduire les chiffres de la table\n"); printf("\n-2- affichage de la table\n"); printf("\n-3- inversion de la table\n"); printf("\n-0- fin\n"); printf("votre choix===============>"); scanf("%d", &choix); switch(choix) { case 1 : for (i=0;i<=Tmax;i++) { printf("introduisez le chiffre %d de la table :", i); scanf("%d", &T[i]); } break; case 2 : for (i=0;i<=Tmax;i++) printf("%d\t", T[i]); break; case 3 : inverse(T); } } while (choix!=0); system("PAUSE"); return 0; }
Ca marchera mieux
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
3 févr. 2008 à 23:40
3 févr. 2008 à 23:40
re fiddy,
effectivement je n'avais pas bien compris avec les {}, j'ai du faire une maivaise manipulation.
J'ai fait une petite modification du code et il ne fonctionne toujours pas.
Je ne sais pas si l'erreur est dans la fonction ou dans le case3.
Encore merci pour ton aide.
effectivement je n'avais pas bien compris avec les {}, j'ai du faire une maivaise manipulation.
J'ai fait une petite modification du code et il ne fonctionne toujours pas.
Je ne sais pas si l'erreur est dans la fonction ou dans le case3.
Encore merci pour ton aide.
#include <stdio.h> #include <stdlib.h> #define Tmax 5 int inverse(int *T) { int i, xtp ; for (i=0;i<=Tmax/2;i++) { xtp=T[i]; T[i]=T[Tmax-i]; T[Tmax-i]=T[i]; return 1; } } int main(int argc, char *argv[]){ int i; int choix; int T[Tmax]; do { printf("\n-1- introduire les chiffres de la table\n"); printf("\n-2- affichage de la table\n"); printf("\n-3- inversion de la table\n"); printf("\n-0- fin\n"); printf("votre choix===============>"); scanf("%d", &choix); switch(choix) { case 1 : for (i=0;i<=Tmax;i++) { printf("introduisez le chiffre %d de la table :", i); scanf("%d", &T[i]); } break; case 2 : for (i=0;i<=Tmax;i++) printf("%d\t", T[i]); break; case 3 : (inverse(T)==1); printf("%d\t", T[i]); break; } } while (choix!=0); system("PAUSE"); return 0; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
4 févr. 2008 à 00:03
4 févr. 2008 à 00:03
Dans ton case 3 : (inverse(T)==1);
L'opérateur == n'est pas approprié ici. L'opérateur d'affectation est = (un seul et non deux). L'opérateur == sert dans les tests conditionnels.
La valeur de retour renvoyée par inverse ne t'est pas utile. Donc, tu peux faire void inverse, au lieu de int inverse.
Et l'appel sera inverse() et non inverse==1; Ou si tu veux récupérer la valeur de retour : int val=inverse(...);
Ou si tu veux faire un test : if(inverse(..)==1) { ça c'est bien passé} else {sinon problème}
Cordialement
L'opérateur == n'est pas approprié ici. L'opérateur d'affectation est = (un seul et non deux). L'opérateur == sert dans les tests conditionnels.
La valeur de retour renvoyée par inverse ne t'est pas utile. Donc, tu peux faire void inverse, au lieu de int inverse.
Et l'appel sera inverse() et non inverse==1; Ou si tu veux récupérer la valeur de retour : int val=inverse(...);
Ou si tu veux faire un test : if(inverse(..)==1) { ça c'est bien passé} else {sinon problème}
Cordialement
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
4 févr. 2008 à 00:24
4 févr. 2008 à 00:24
Merci beaucoup pour ton aide, ça fonctionne!!!!!