Help à la finition d'un prog. (tri croissant)
Résolu/Fermé
A voir également:
- Help à la finition d'un prog. (tri croissant)
- Excel trier par ordre croissant chiffre - Guide
- Google sheet tri automatique ✓ - Forum Bureautique
- Triez cette liste par ordre alphabétique des villes et par note de la meilleure à la moins bonne. quel mot est formé par les 8 premières lettres de la colonne code ? ✓ - Forum Excel
- Robot prog - Télécharger - Édition & Programmation
- Logiciel de tri de photos - Guide
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 ;)
MrOrange
Messages postés
5
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
5 février 2008
1
5 févr. 2008 à 16:35
5 févr. 2008 à 16:35
Pour récupérer l'entrée clavier de l'utilisateur, il faut utiliser la fonction scanf
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
Mahmah
Messages postés
496
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
22 juin 2010
125
5 févr. 2008 à 21:38
5 févr. 2008 à 21:38
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.