Help à la finition d'un prog. (tri croissant)
Résolu
Novice :-(
-
merccccccciiiii -
merccccccciiiii -
Bonjour,
voila j ai voulu créer un programme qui classe une série de nombre par ordre croissant, je ne suis pas trés doué en programmation, je suis arriver à faire ce programme :
#include <stdio.h>
#include <stdlib.h>
int main()
{
int Liste[15];
int i, j, k, min;
Liste[0]=1;
Liste[1]=26;
Liste[2]=4;
Liste[3]=15;
Liste[4]=2;
Liste[5]=7577878;
Liste[6]=4578;
Liste[7]=100;
Liste[8]=101;
Liste[9]=42;
for (i=0; i<10; i++){
for (j=0; j<10; j++){
if (Liste[j]<Liste[i]){
min = Liste[j];
Liste[j] = Liste[i];
Liste[i] = min;
}
}
}
for (k=9; k>-1; k=k-1){
printf("%d \n", Liste[k]);
}
system("PAUSE");
return 0;
}
est ce que c est la meilleure méthode et est elle bien?...
Avec ça j aimerais que ca soit l utilisateur qui rentre lui meme des nombres et que ça les classe, comment faire?
- je vois pas comment faire pour les taper dans la console (espace, a la ligne,..??)
- quelles variables utiliser et comment faire si jamais mon tableau fait 5 cases ou 150 ...
Merci pour vos réponses :D
a trés bientôt
voila j ai voulu créer un programme qui classe une série de nombre par ordre croissant, je ne suis pas trés doué en programmation, je suis arriver à faire ce programme :
#include <stdio.h>
#include <stdlib.h>
int main()
{
int Liste[15];
int i, j, k, min;
Liste[0]=1;
Liste[1]=26;
Liste[2]=4;
Liste[3]=15;
Liste[4]=2;
Liste[5]=7577878;
Liste[6]=4578;
Liste[7]=100;
Liste[8]=101;
Liste[9]=42;
for (i=0; i<10; i++){
for (j=0; j<10; j++){
if (Liste[j]<Liste[i]){
min = Liste[j];
Liste[j] = Liste[i];
Liste[i] = min;
}
}
}
for (k=9; k>-1; k=k-1){
printf("%d \n", Liste[k]);
}
system("PAUSE");
return 0;
}
est ce que c est la meilleure méthode et est elle bien?...
Avec ça j aimerais que ca soit l utilisateur qui rentre lui meme des nombres et que ça les classe, comment faire?
- je vois pas comment faire pour les taper dans la console (espace, a la ligne,..??)
- quelles variables utiliser et comment faire si jamais mon tableau fait 5 cases ou 150 ...
Merci pour vos réponses :D
a trés bientôt
A voir également:
- Help à la finition d'un prog. (tri croissant)
- Excel trier par ordre croissant chiffre - Guide
- Logiciel tri photo - Guide
- Robot prog - Télécharger - Édition & Programmation
- Ajoutez à la liste de contacts ana le goff, inscrite le 27 novembre 2015, dans la catégorie i. puis triez les contacts en les classant : par ordre alphabétique de leur nom de famille (critère principal), puis par date du plus récent au plus ancien (critère secondaire). quel mot apparaît à la verticale dans la colonne "catégorie" entre les lignes 200 et 209 (en-tête compris) ? ✓ - Forum Word
- Le fichier à télécharger contient une liste de chats. triez-la comme dans le tableau ci-dessous (attention, on ne voit que le début…). quel est le mot formé par les 8 dernières lettres de la colonne code ? - Forum Word
6 réponses
salut Mahmah,
merci beaucoup pour ta réponse trés compléte!il y a tout ce que je voulais et bien expliqué :D
je vais essayer tout ce que tu m as dis (pour ce qui est de l allocation dynamique, faut que je regarde sur le net comment ca fonctionne, j ai jamais faits avec ca)
si jamais tu connais un bon site qui explique bien ca et donc le langage C je veux bien (surtout pointeurs et all. dynamique) à par le site du zero. merci bien
SUJET RESOLU : Méthodes de tris + définir taille tableau
Bonne soirée!
et encore merci ;)
merci beaucoup pour ta réponse trés compléte!il y a tout ce que je voulais et bien expliqué :D
je vais essayer tout ce que tu m as dis (pour ce qui est de l allocation dynamique, faut que je regarde sur le net comment ca fonctionne, j ai jamais faits avec ca)
si jamais tu connais un bon site qui explique bien ca et donc le langage C je veux bien (surtout pointeurs et all. dynamique) à par le site du zero. merci bien
SUJET RESOLU : Méthodes de tris + définir taille tableau
Bonne soirée!
et encore merci ;)
Tu peux faire une boucle tant qu'il ne saisi pas 0 ou -1 par exemple (et qu'il n'est pas or limite du tableau bien sur)
Ensuite en ce qui concernen ltri croissant tu as plusierus méthode:
Tri par recherce de maxi ou mini ensuite il y en a d'autre mais c'est plus complexe tu as le tri a bulle un autre dont je sais plus le nom...
Si sa t'interesse je peux te l'expliquer mais seulement ce soir.
Pour la taille prend le maxi ou fait saisir a l'utilisateur le nb de chiffre qu'il veut entrer (la tu change la boucle de saisi)
J espere que sa t'aidera
Ensuite en ce qui concernen ltri croissant tu as plusierus méthode:
Tri par recherce de maxi ou mini ensuite il y en a d'autre mais c'est plus complexe tu as le tri a bulle un autre dont je sais plus le nom...
Si sa t'interesse je peux te l'expliquer mais seulement ce soir.
Pour la taille prend le maxi ou fait saisir a l'utilisateur le nb de chiffre qu'il veut entrer (la tu change la boucle de saisi)
J espere que sa t'aidera
merci pour vos réponse.
pour la fonction scanf, ok je suis en train de tester, mais bon dans la console je sais pas coment je dois taper les nombres?
oui mais si on saisit une série de nombre et que l on veut s arréter à un 5 par exemple, comment dire au programme qu on a fini de taper les nombres?
Dam : j ai pas tout compri, tu veux dire que je dois y mettre une limite au tableau en fait? par exemple qu on ne peut pas taper plus de 10 nombres ?...
sinon pour mon programme déjà fait, est il bien? vous en penser quoi? j ai commencé il y a 2 jours la programmation et je me suis creuser le cerveau :D
pour la fonction scanf, ok je suis en train de tester, mais bon dans la console je sais pas coment je dois taper les nombres?
oui mais si on saisit une série de nombre et que l on veut s arréter à un 5 par exemple, comment dire au programme qu on a fini de taper les nombres?
Dam : j ai pas tout compri, tu veux dire que je dois y mettre une limite au tableau en fait? par exemple qu on ne peut pas taper plus de 10 nombres ?...
sinon pour mon programme déjà fait, est il bien? vous en penser quoi? j ai commencé il y a 2 jours la programmation et je me suis creuser le cerveau :D
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Il y a toujours plusieurs solution, soit tu limites effectivement à une certaine taille:
Soit idem en demandant au début combien il veut en rentrer et vérifier si le tableau est assez grand pour.
Soit idem avec un nombre particulier du style -1 pour arrêter.
Soit ... plutôt que d'avoir un tableau dont on connait la taille à la compilation (statique) on alloue dynamiquement un talbeau:
ou alors... (je ne le taperai pas ^^")
Le coup du -1 avec un tableau dynamique (et gaspillage de mémoire dérisoire)
- on alloue un espace mémoire pour contenir N int.
- on compte combien d'entiers il saisit.
- si il en saisit N, on réalloue un tableau plus grand (avec realloc) Communément on double chaque fois la taille (Si on en est à 4000 entier on ne va pas s'amuser à refaire une allocation pour en prendre 4100, on suppose qu'il ne va pas s'arrêter si vite)
Pour les tris il y a surement sur le net tout ce qu'il faut.
tri bulle (comme une bulle qui remonte dans un verre, on prends la première valeur et on la remonte dans le tableau pour trouver sa place)
tri par insertion (très bien pour notre cas) même genre que tri bulle mais sur un tableau en construction.
tri fusion (on démonte le tableau puis on reconstruit chaque miette par insertion dans les autres miettes)
tri pivot ( on prend un nombre au pif, généralement le premier du talbeau et on construit deux tableaux : les nombres plus petits et les nombres plus grand, puis on recole avec le pivot entre les deux apr_s avoir recommencé sur les deux sous-tableaux)
voili voilou,
M.
Il y a toujours plusieurs solution, soit tu limites effectivement à une certaine taille:
#define MAX 27 void main( int argc, char **argv ) { int monTableau[MAX]; printf( "Entrez %d nombres\n", MAX ); for ( unsigned int i = 0 ; i != MAX ; i++ ) { while ( scanf( "%d", &monTableau[i] ) != 1 ); } ...
Soit idem en demandant au début combien il veut en rentrer et vérifier si le tableau est assez grand pour.
Soit idem avec un nombre particulier du style -1 pour arrêter.
Soit ... plutôt que d'avoir un tableau dont on connait la taille à la compilation (statique) on alloue dynamiquement un talbeau:
void main( int argc, char **argv ) { int *monPointeur = NULL; int maTaille = 0; printf( "Entrez la taille du talbeau ); flush( stdin ); scanf( "%u", &maTaille ); if ( maTaille == 0 ) { printf( "Haha, gors malin !\n" ); return; } // Préparer le tableau -> demander de la mémoire (exprimé en octect) monTableau = (int*) malloc( maTaille * sizeof(int) ); if ( monTalbeau == NULL ) { printf( "Hé le plouc, ton ordi est pas foutu de me donner de la mémoire y doit être dans un pâté pas terrible et va certainement planter sous peu, bonne chance à tous les deux\n" ); return; } for ( unsigned int i = 0 ; i != maTaille ; i++ ) { while ( scanf( "%d", &monTableau[i] ) != 1 ); } // La on fait quand même mumuse avec le talbeau ... // Et là on rend la mémoire qu'on nous a gentillement prêté ^^ free( monTableau ); monTalbeau = NULL; // Pas obligatoire mais marque le pointeur comme étant inutilisable.
ou alors... (je ne le taperai pas ^^")
Le coup du -1 avec un tableau dynamique (et gaspillage de mémoire dérisoire)
- on alloue un espace mémoire pour contenir N int.
- on compte combien d'entiers il saisit.
- si il en saisit N, on réalloue un tableau plus grand (avec realloc) Communément on double chaque fois la taille (Si on en est à 4000 entier on ne va pas s'amuser à refaire une allocation pour en prendre 4100, on suppose qu'il ne va pas s'arrêter si vite)
Pour les tris il y a surement sur le net tout ce qu'il faut.
tri bulle (comme une bulle qui remonte dans un verre, on prends la première valeur et on la remonte dans le tableau pour trouver sa place)
tri par insertion (très bien pour notre cas) même genre que tri bulle mais sur un tableau en construction.
tri fusion (on démonte le tableau puis on reconstruit chaque miette par insertion dans les autres miettes)
tri pivot ( on prend un nombre au pif, généralement le premier du talbeau et on construit deux tableaux : les nombres plus petits et les nombres plus grand, puis on recole avec le pivot entre les deux apr_s avoir recommencé sur les deux sous-tableaux)
voili voilou,
M.