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   -
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.....

10 réponses

Baryton4
 
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
0
Baryton4
 
J'ai fais ca en live donc je ne suis aps sur qu'a la compilation ca soit accepter tel quel,
Arrange le un peu
0
micka1988 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   > Baryton4
 
oui faudrait déclarer le tableau je suppose... en fin je débute....
sinon ca serait une fonction itérative ou bien récursive?
0
Baryton4 > micka1988 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
La 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
0
Baryton4
 
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.
0
Baryton4 > Baryton4
 
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
0
micka1988 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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!
0
micka1988 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
ca ne marche pas plusieurs messages d'erreur....
Au fait que signifie if(S<>0)
{S=1
}
??
0
Utilisateur anonyme
 
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;
}
0
micka1988 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
merci beaucoup pour ton aide mais j'ai essayé de compiler ca ne fonctionne pas non plus...
Aussi il me semble que je dois faire ce test avec un tableau en général de taille 10 maximale mais pas avec des entiers que j'entre moi même.....
Merci pour votre aide!!!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
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);
}
0
micka1988 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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.............. ?
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437 > micka1988 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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");
}
0
Utilisateur anonyme
 
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
0
micka1988 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
merci de votre aide c'est vraiment sympa....
mais pour les utiliser est ce que je dois ecrire ce code en entier ou bien séparer les 2 fonctions.....
Je sais que ca doit paraitre stupide mais j'ai vraiment du mal et lorque je compile tout le code ca ne marche pas....
merci !
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437 > micka1988 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
je 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
0
micka1988 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   > mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention  
 
je 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
0
micka1988 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   > mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention  
 
je 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
0
Utilisateur anonyme
 
Pourquoi le mien ne s'exécute pas ??
0
micka1988 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
je ne sais pas ya pas de message d'erreur mais il ne se lance pas.....
0
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  
 
les programmmes marchent lorsque vous testez??
peut etre que le compilateru que j'utilise est mauvais....
0
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  
 
merci de votre aide précieuse!
0
Humi
 
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.
0
micka1988 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
yesssss maintenant celui de mype fonctionne bien merci énormément!!! celui e tassin s'éxécute mais bugg.... en tout cas merci a tous c gentil de m'avoir aiderr!!!!
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
pour moi les deux marche mais je suis sous linux...
comme la dit humi rajoute a la fin du main()
system("pause");
0
micka1988 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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");
}
0