Fonctions simples en C aidez moi svp.....
Résolu
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-
-
-
@Baryton4oui faudrait déclarer le tableau je suppose... en fin je débute....
sinon ca serait une fonction itérative ou bien récursive? -
@micka1988La tu me pose une colle
Je ne sais même pas ce que ca veux dire.
J'attendrais donc l'explication de quelqu'un d'autre autant que toi -
@Baryton4pour 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; } -
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); }-
-
@micka1988eh 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-
-
@micka1988je sais pas comment tu fais ton compte il suffit de faire copier coller...
que ce soit le code de =[Cvrd]= Tassin ou le mien il marche bien j'ai testé les deux donc a toi de choisir celui que tu prefere -
@mypeje sais pas perso je teste sur Dev-C/C++ celui de tassin ne s'execute pas par contre le tien demande d'entrer les nombres puis l'entier a tester masi ne retourne pas de resultat..... il se ferme
-
@mypeje sais pas perso je teste sur Dev-C/C++ celui de tassin ne s'execute pas par contre le tien demande d'entrer les nombres puis l'entier a tester masi ne retourne pas de resultat..... il se ferme
-
-
Pourquoi le mien ne s'exécute pas ??
-
-
@micka1988les programmmes marchent lorsque vous testez??
peut etre que le compilateru que j'utilise est mauvais.... -
@micka1988merci de votre aide précieuse!
-
-
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");
}