Fonctions simples en C aidez moi svp.....
Résolu
micka1988
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
micka1988 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
micka1988 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
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.....
A voir également:
- Fonctions simples en C aidez moi svp.....
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Fonctions excel en anglais - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Comment colorer une cellule excel en fonction du contenu d'une autre cellule - Forum Bureautique
- Mise en forme conditionnelle avec fonction si - Guide
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
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
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!
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); }
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.
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()
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");
}
#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");
}
Arrange le un peu
sinon ca serait une fonction itérative ou bien récursive?
Je ne sais même pas ce que ca veux dire.
J'attendrais donc l'explication de quelqu'un d'autre autant que toi
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.
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