Quel erreur dans ce programme???

imoura Messages postés 12 Statut Membre -  
Gaunts Messages postés 1390 Statut Membre -
Bonjour,
quelqu'un peut bien m'expliquer pourquoi mon programme ne marche pas correctement..en effet c'est la boucle (for) qui ne marche pas!!
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,n,j,tmp;
int t[10];
printf("entrez la dimension du tableau:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("entrez une valeur");
scanf("%d",&n); /*lis la valeur*/
t[i]=n;
}
for(i=0;i<n;i++)
{
j=i;
tmp=t[j];
while(j>0)
{
if (t[j-1]>tmp) //tri insertion
{
t[j]=t[j-1];
j--;
}
else break;
}
t[j]=tmp;
}

printf("votre tableau est le suivant:");
for(i=0;i<n;i++)
{
printf("%d",t[i]);
}
getchar();
getchar();
getchar();
return 0;
}

2 réponses

flo13142 Messages postés 74 Statut Membre 18
 
tu ne décrémente j que si
if (t[j-1]>tmp) 

or ce n'est pas toujours vrai; du coup tu pars en boucle infinie, vu que j reste constant
si t[j-1] n'est pas > tmp à la première itération, il ne le serra jamais et ton j restera constant
0
Gaunts Messages postés 1390 Statut Membre 116
 
Salut,

et pour la boucle for()
Ta condition est fausse si i >= n.
Le problème c'est qu'à chaque entrée dans la boucle tu changes la valeur de n.. Il faut utiliser une autre variable.
0