Help pour un petit programme en C svp

Lefty09 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je dois faire un programme pour l'école qui doit trier une série de nombres selon 3méthodes différentes, il faut donc d'abord entrer la série de nombre et ensuite choisir la méthode de tri, ce programme doit également s'arrêter lors de l'ajout d'un nombre négatif. Voici mon problème, je bloque déjà au début pour sortir de ma boucle :/

Voici le début du code

main()
{
n=1;
system("cls");
printf("bienvenue dans le programme de tri de nombres\n\n");
printf("entrer le %d er nombre\n",n++);
scanf("%d",&tab[i]);

for (i=1;i<=100;i++)

{
printf("Entrer le %d eme nombre \n",n++);
scanf("%d",&tab[i]);

printf("Entrer un autre nombre? \n");
printf("1 - oui\n",choix2);
printf("0 - non\n",choix2);
}while (choix2=0);

printf("Que voulez-vous faire?\n");
printf("1 - Tri par selection\n");
printf("2 - Tri a bulle\n");
printf("3 - Tri par insertion\n");
printf("4 - Sortir\n");

Que dois-je modifier pour sortir de ma boucle lorsque je tape "0" ? Et qu'il continue tant que je tape "1"??

Merci d'avance!!

8 réponses

adnanforum Messages postés 204 Date d'inscription   Statut Membre Dernière intervention   38
 
Tu est dans une école de c c'est ou c'ete école
0
Lefty09 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Je fais des études d'ingénieur et dans mon cours d'info on nous a demandé de créer ce programme...
0
adnanforum Messages postés 204 Date d'inscription   Statut Membre Dernière intervention   38
 
a ta quel age
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
deja normalment on n'utilise pas de for et while ensemble tu pourrais faire plutot une boucle do...while ensuite dans ton while si tu veut tester la valeur de choix2 il faut l'operateur ==pas un simple =

i=2;
do
{
printf("Entrer le %d eme nombre \n",n++);
scanf("%d",&tab[i]);
i++;
printf("Entrer un autre nombre? \n");
printf("1 - oui\n");
printf("0 - non\n");
scanf("%d",&choix2)
}while (choix2!=0 && i<=100); 
0

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

Posez votre question
Lefty09 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Merci maintenant ça fonctionne^^ mais il ne m'affiche toujours pas le choix entre les 3 méthodes de tri à la sortie de ma boucle :/ Je suis débutant en langage C, c'est mon 2ème programme donc...
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
il t'affiche quoi a la sortie de boucle ?
0
Lefty09 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   > mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention  
 
Il continue lorsque le tape 1, et arrête le programme lorsque je tape 0 ou tout autre chiffre, alors qu'il devrait passer a la suite du programme en tapant 0 et repose la question si le chiffre est différent de 1 ou 0
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437 > Lefty09 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
repostes ton nouveau code car normalement si tu as bien fais les modif il devrait bien continuer si tu tapes 0
0
Lefty09 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   > mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention  
 
do
{
printf("Entrer le %d eme nombre \n",n++);
scanf("%d",&tab[i]);
i++;
printf("Entrer un autre nombre? \n");
printf("1 - oui\n");
printf("0 - non\n");
scanf("%d",&choix2);
}while (choix2==1 && i<=100);


printf("Que voulez-vous faire?\n");
printf("1 - Tri par selection\n");
printf("2 - Tri a bulle\n");
printf("3 - Tri par insertion\n");
printf("4 - Sortir\n\n\n");
scanf("%d",&choix);
switch (choix)
case '1':
printf("Tri par selection");
for (i=1;i<=n-1;i++)
min=i;
for (k=i+1;k=n;k++)
{
if (tab[k]<tab[min])
{
min=k;
}
}
temp=tab[i];
tab[i]=tab[min];
tab[min]=temp;
getchar();

}
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437 > Lefty09 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
et bien je viens de le tester en quand je tape 0 il me propose bien le choix du tri...
0
adnanforum Messages postés 204 Date d'inscription   Statut Membre Dernière intervention   38
 
il faut scanf pour choix2.Quel est to age?
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
rajoute des accolades
switch (choix){
case '1':{
printf("Tri par selection");
for (i=1;i<=n-1;i++)
min=i;
for (k=i+1;k=n;k++)
{
if (tab[k]<tab[min])
{
min=k;
}
}
temp=tab[i];
tab[i]=tab[min];
tab[min]=temp;
getchar();
}
}
0
Lefty09 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Désolé mais...ca ne fonctionne toujours pas je ne vois pas ce qui cloche, j'ai beau chercher mais... :/

/*Programme de tri de nombres*/

#include <stdio.h>
#include <stdlib.h>

int choix;
int choix2;
int i,n,min,k,nombre;
int tab[100];
int temp;
int permut;
int a,b,c,tmp; /*variables du tri a bulle*/
main()
{
nombre=1;
system("cls");
printf("bienvenue dans le programme de tri de nombres\n\n");
printf("entrer le %d er nombre\n",nombre++);
scanf("%d",&tab[i]);
if (tab[i]<<0)
{

printf("Entrez des nombres positifs!!\n");
nombre=nombre-1;


}



do
{
printf("Entrer le %d eme nombre \n",nombre++);
scanf("%d",&tab[i]);
i++;
printf("Entrer un autre nombre? \n");
printf("1 - oui\n");
printf("0 - non\n");
scanf("%d",&choix2);
}while (choix2==1 && i<=100 && i<<0 );


printf("Que voulez-vous faire?\n");
printf("1 - Tri par selection\n");
printf("2 - Tri a bulle\n");
printf("3 - Tri par insertion\n");
printf("4 - Sortir\n\n\n");
scanf("%d",&choix);
switch (choix)
{
case '1':
{
printf("Tri par selection");

for (i=1;i<=n-1;i++)
{
min=i;

for (k=i+1;k=n;k++)
if (tab[k]<tab[min])
{
min=k;

}
}
temp=tab[i];
tab[i]=tab[min];
tab[min]=temp;

}
}
}
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
1 c'est pas un caractere
case 1 :
0