Fonctions simples en C aidez moi svp.....
Résolu
micka1988
Messages postés
20
Statut
Membre
-
micka1988 Messages postés 20 Statut Membre -
micka1988 Messages postés 20 Statut Membre -
Bonjour, je dois créer une fonction itérative et une fonction récursive pour tester si un entier x est présent dans le tableau T ou non. la fonction retourne 1 six est présent dans le tableau et 0 sinon.
Merci d'avance pour votrre aide car je suis perdu.....
Merci d'avance pour votrre aide car je suis perdu.....
Configuration: Windows XP Internet Explorer 6.0
10 réponses
-
int i;
for(i=0;t;i++)
{
if(T(i)=X)
{S=1;
}
else
{S=0;
}
} // fin du for
Lexique : i : variable interne
T : nom de ton tableau
S variable de sortie qui vaut 0 ou 1-
-
int i;
init S=0;
for(i=0;t;i++)
{
if(T(i)=X)
{S=S+1;
}
else
{S=S;
}
} // fin du for
if(S<>0)
{S=1
}
Dzl ce que j'ai mis ca ne marche pas
Essaye plutot ca.- pour le for c'est plutot
for(i=0;i<t;i++)
le petit t étant la taille de ton tableau.
Crée en un par
int T(t); //je crois
Bon desolé pour le manque d'assurance, mais ca fait longtemps que je n'en est aps fais et maintenant je travaille en VB, ca change un peu toutes les fonctions.
Bon courrage pour me traduire
-
-
il me semble que c'est une fonction itérative parceque d'aprés ce que je sais une fonction recursive c'est une fonction qui s'appelle elle meme.... en tout cas meci pour ton aide!
-
ca ne marche pas plusieurs messages d'erreur....
Au fait que signifie if(S<>0)
{S=1
}
?? -
Voici une méthode itérative :
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int T[5] = {15, 20, 10, 5, 2}; int i, X; X = 25; for(i=0; i < 5; i++){ if(T[i] == X) return 1; } return 0; } -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
en iterative :
int fonction(int *tab, int taille, int x) { int i; for(i=0;i<taille;i++) if(tab[i]==x) return 1; return 0; }en recursive :int fonction(int *tab, int taille, int x) { if(taille<0) return 0; if(tab[taille]==x) return 1; else fonction(tab,taille-1,x); }-
merci myope ca ma l'air correcte mais j'essaie de l'executer et ca m'affiche des erreurs....
qu'est ce que je dois rajouter pour qu'au compilateur ca passe?
seulement #include.............. ?- eh ben il te restait juste a faire le main c'est pas tres dur...
#include <stdio.h> #include <stdlib.h> int iterative(int *tab,int taille,int x) { int i; for(i=0;i<taille;i++) if(tab[i]==x) return 1; return 0; } int recursive(int *tab, int taille, int x) { if(taille<0) return 0; if(tab[taille]==x) return 1; else return recursive(tab,taille-1,x); } int main() { int *tab; int i,x; tab=(int *) malloc(10*sizeof(int)); printf("entre les dix entiers dans le tableau\n"); for(i=0;i<10;i++) scanf("%d",&tab[i]); printf("donne un entier a recherche dans le tableau : \n"); scanf("%d",&x); if(iterative(tab,10,x)==1) printf("l'entier a ete trouve dans le tableau de facon iterative\n"); else printf("l'entier n'a pas ete trouve de facon iterative\n"); if(recursive(tab,10,x)==1) printf("l'entier a ete trouve dans le tableau de facon recursive\n"); else printf("l'entier n'a pas ete trouve de facon recursive\n"); }
-
-
Voilà les 2 solutions qui fonctionnent bien sous Dev-Cpp :
#include <stdio.h> #include <stdlib.h> #define TRUE 1 #define FALSE 0 int fonctionIterative(int T[], int taille, int X){ int i; for(i=0; i < taille; i++){ if(T[i] == X) return TRUE; } return FALSE; } int fonctionRecursive(int T[], int taille, int X){ if(taille<0) return FALSE; else { if(T[taille] == X) return TRUE; else return fonctionRecursive(T, taille - 1, X); } } int main(int argc, char *argv[]) { int T[5] = {15, 20, 10, 5, 2}; printf("10 est une valeur dans le tableau ? : %d \n", fonctionIterative(T, 5, 10)); printf("25 est une valeur dans le tableau ? : %d \n", fonctionIterative(T, 5, 25)); printf("10 est une valeur dans le tableau ? : %d \n", fonctionRecursive(T, 5, 10)); printf("25 est une valeur dans le tableau ? : %d \n", fonctionRecursive(T, 5, 25)); }A toi de les adapter à ton besoin -
-
Bonjour,
je ne suis pas sûr que ça soit ça le problème mais essayes avec un:
system("pause");
à la fin
en le mettant juste avant l'accolade de fin. -
pour moi les deux marche mais je suis sous linux...
comme la dit humi rajoute a la fin du main()system("pause"); -
c'est OK ca fonctionne..... la solution est donc:
#include <stdio.h>
#include <stdlib.h>
int iterative(int *tab,int taille,int x)
{
int i;
for(i=0;i<taille;i++)
if(tab[i]==x)
return 1;
return 0;
}
int recursive(int *tab, int taille, int x)
{
if(taille<0) return 0;
if(tab[taille]==x) return 1;
else return recursive(tab,taille-1,x);
}
int main()
{
int *tab;
int i,x;
tab=(int *) malloc(10*sizeof(int));
printf("entre les dix entiers dans le tableau\n");
for(i=0;i<10;i++) scanf("%d",&tab[i]);
printf("donne un entier a recherche dans le tableau : \n");
scanf("%d",&x);
if(iterative(tab,10,x)==1) printf("l'entier a ete trouve dans le tableau de facon iterative\n");
else printf("l'entier n'a pas ete trouve de facon iterative\n");
if(recursive(tab,10,x)==1) printf("l'entier a ete trouve dans le tableau de facon recursive\n");
else printf("l'entier n'a pas ete trouve de facon recursive\n");
system("pause");
}