Pb de compilation

yedez Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   -  
to_char Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -
slt tout le monde :pouvez vous m'aide et me chercher l erreur de l execution de ma fonction "seek_valeurs" qui fait une recherche dichotomique d'un tableau trie et renvois\t son occurence !!!
le probleme C qu'elle renvoie toujours 0
aidez moi s'il vous plait et merci d'avance :)


int seek_valeurs(int t[],int n,int v)
{
int deb,fin,m,k;
k=0;
deb=0;
fin=n-1;

while (deb<fin)
{
m=(deb+fin)/2;
if (t[m]>v)
fin=m-1;
else if (t[m]<v)
deb=m+1;
else
{
k=k+1;
m=m+1;
}
}
return (k);
}

12 réponses

nar6du14 Messages postés 459 Date d'inscription   Statut Membre Dernière intervention   64
 
pourquoi utilises tu les "int" n'aurait il pas été préférable d'utiliser les "float" ??

sinon deb doit conter jusqu'à n-1 c'est à dire jusqu'à fin

while (deb <= fin ) et non while( deb < fin )

pour le else de la fin, je ne vois pas trop à quoi il sert vu que ici t[m] == v
suffit de retourner "m" qui sera la place de "v" dans le tableau
1
to_char Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   2
 
voici un lien qui explique comment tu peux traiter des tableaux 3 dimentions:
https://openclassrooms.com/forum/sujet/tableau-a-3-dimension-31672

essaye de créer un autre programme ou tu essayera ce code et après retourne à exercice comme ca tu saura tres bien comment faire :)
1
yedez Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   2
 
 est'Ce que j'ai fait une grande erreur dans mon programme ou vous ne avez pas saisie mon programme car mon tableau est a une dimension! :p


ps: merci pr le lien car j'en ai besoin aussi :)
    
0
yedez Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   2
 
quelqu'un peut m'aider s'il vous plait !! :(
0
BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 919
 
Hello,
Je me suis permis d'éditer ton message pour rajouter les balises code (4e icone au-dessus de la zone de texte) afin de gagner en lisibilité.
Merci d'y penser la prochaine fois ;)
0

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

Posez votre question
yedez Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   2
 
merci :)

                
0
to_char Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   2
 
re Bonjour yedez ,
est ce que je peux avoir l'erreur envoyer par ton compilateur;
0
yedez Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   2
 
bon en faite les en tetes font partie de l enonce je ne peut pas mettre float ni rien d'autre

de plus le probleme qui s 'affiche windows a arrete de fonctionner et va chercher le probleme!!! bon j'ai fait quelque modification au niveau cette fonction mai el meme probleme s'affiche au niveau d'une autre fonction C'est la suppression dun elemet de tableau voila tout mon programme et je note bien que le probleme est au niveau ma derniere fonction la suppression
#include <stdio.h>



int get_option();
int lire_valeurs(int t[]);
void tri_insertion(int t[],int n);
void view(int t[],int n);
int seek_valeurs(int t[],int n,int v );
void delete_element(int t[],int *n, int v);

void main()
{
int t[100],option,n,v,k;

while ( (option=get_option())!=-1)

{
switch(option)
{
case 0:
n=lire_valeurs(t);
break;


case 1:
tri_insertion(t,n);
break;

case 2:
view(t,n);
break;

case 3:
printf("\nValeur Cherchee:\n");
scanf("%d",&v);
k=seek_valeurs(t,n,v);
printf( "nombre de Repetition de %d:%d",v,k);
break;

case 4:
printf("\nValeurs A supprimer:'\n");
scanf ("%d",&v);
delete_element(t,&n,v);

break;


}
}
}
int get_option()
{
int p;
printf("donner la valeur de p\n");
scanf("%d",&p);


if (p==0)
printf ("remplir le tableau\n");

else
if (p==1)
printf("Trier le tableau\n");
else
if (p==2)
printf ("afficher le tableau\n");
else
if (p==3)
printf ("cherchez la valeur demandee \n ");
else
if (p==4)
printf (" supprine la valeur demandee \n ");


return(p);


}

int lire_valeurs(int t[])
{
int i;
i=0;


while ((t[i]=lire_val())!=-1)
i++;

return(i);
}
int lire_val()
{
int val;
scanf("%d",&val);
return(val);
}
void tri_insertion(int t[],int n)

{
int i,X,j;
for (i=1;i<n;i++)
{
X=t[i];
j=i;
while ((X<t[j-1])&&(j>0))
{
t[j]=t[j-1];
j=j-1;
}
t[j]=X;
}
}

void view(int t[],int n)
{
int i;
for (i=0;i<n;i++)
printf (" %d",t[i]);

}
int seek_valeurs(int t[],int n,int v)
{
int deb,fin,m,k;
k=0;
deb=0;
fin=n-1;
m=(deb+fin)/2;

while (deb<fin)
{

if (t[m]>v)
{
fin=m-1;
m=(deb+fin)/2;

}
else if (t[m]<v)
{
deb=m+1;
m=(deb+fin)/2;
}
else
{k=k+1;
m=m+1;
}
}
return (k);
}

void delete_element(int t[],int *n, int v)

{
int i;
i=1;
while (i<*n)
{
if (t[i]==v)
{
decalage (t,*n,i);
i++;

}
else

i++;

}
}




int decalage (int t[],int *n, int p)
{
int i;
for (i=p;i<=*n-1;i++)
{
t[i]=t[i+1];


}
*n=*n-1;
return (*n);



}

                
0
to_char Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   2
 
re bonjour yedez :)
premièrement je ne crois pas que c'est la bonne manière de traiter un tableau tri
deuxièmement il faut bien indenter le code pour qu'on puisse tous le lire parce que désolé de te le dire mais ça c'est de la torture :)
0
yedez Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   2
 
d'accord je suis desole je vais seulement copier la fonction qui contient l'erreur

qqe chose de plus je ne comprends pas ce que vous voulez dire par "C pa la bonen maniere de traiter un tableau trie"
void delete_element(int t[],int *n, int v)

{
int i;
i=1;
while (i<*n)
{
if (t[i]==v)
{
decalage (t,*n,i);
i++;

}
else

i++;

}
}




int decalage (int t[],int *n, int p)
{
int i;
for (i=p;i<=*n-1;i++)
{
t[i]=t[i+1];


}
*n=*n-1;
return (*n);



}


    
0
to_char Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   2
 
si c'est un tableau à une dimension je crois que ça a l'air correcte mais je ne peux pas juger plus car je n'est pas l'a fonction main et je ne sais pas ce que le programme dois faire ni ce que le compilateur a afficher comme erreur :)
0
yedez Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   2
 
bon le programme a b1 fait la compilation j ai entre les valeurs de tableau ensuite il ya  le tri de tableau, son affichage,apres le pg a renvoye l occurence d un entier que j ai saisi et ainsi s'affiche le probleme quand je demande au pg de supprimer un element de tableau une alerte s'annonece et m'avertit que le fichie a arreter de fonctionner et windows essayera de trouver l'erreur et voila 

et MerCi d'avance :)

                
0
to_char Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   2
 
ah ben l'a t'es plus claire :) :)
le programme s'arrête parce qu'il essaye d'accéder à une case de mémoire qui n'est lui pas attribuer donc le système d'exploitation est obliger d'arrêter le programme
CAD que quelque pars dans ton code il y a une erreur que je peux malheureusement pas identifier :)
0
yedez Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   2
 
oui d'accord je vais chercher Ce pb et MERCIIIII :))
0
to_char Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   2
 
:)
0