begin process at 2012 05 28 11:35:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

Aide programme tri croissant et décroissant


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Aide programme tri croissant et décroissant

dimanche 7 novembre 2010 à 02:04:09 | Aide programme tri croissant et décroissant

nikesava

Bonjour, je dois obtenir cet affichage de mon programme:

Combien de valeurs vous desirez trier ? 5

Dans quel ordre desirez vous trier (1 pour croissant, 2 pour decroissant) ?1

Entrer la donnee 1 de 5 ? 45
Entrer la donnee 2 de 5 ? 23
Entrer la donnee 3 de 5 ? -14
Entrer la donnee 4 de 5 ? 0
Entrer la donnee 5 de 5 ? 4

Resultats des nombres tries
Index Origine Tri
1 45 -14
2 23 0
3 -14 4
4 0 23
5 4 45

Je n'y arrive toutefois pas, mon triage n'est pas correct...
voici mon code-source


#include <iostream>
#include <math.h>

using namespace std ;

#define nDonneesMax 15

void main()
{
float Don[nDonneesMax], tempD; // Donnee
int iI, nDonI, Tri; // Variables d'itération
char Triok; // Variable de sortie

do // Reprise du programme
{
Triok = 'O';
do
{
do
{cout << "\nCombien de valeurs vous desirez trier? ";
cin >> nDonI;
if ((nDonI < 2 || nDonI >15))
{cout << "La valeur est hors de la plage, veuillez recommencer... \n\n";}
}while ((nDonI < 2 || nDonI >15));
} while (nDonI < 1 || nDonI > nDonneesMax);

cout << "\n\nDans quel ordre desirez vous trier (1 pour croissant, 2 pour decroissant) ?";
cin >> Tri;

// Entrée des coordonnées

for (iI = 0; iI < nDonI; iI++)
{
cout << "\nEntrer donnee " << iI+1 << " de 15 ?";
cin >> Don[iI];
}


// Calculs

if (Tri == 1)
{ for (iI=0; iI<nDonI; iI++)
do
{
if (Don[iI] < Don [iI+1])
{Triok = 0;
tempD= Don[iI+1];
Don[iI+1]=Don[iI];
Don[iI] = tempD;
}
}while (Triok =0);
}
if (Tri == 2)
{ for (iI=0; iI<nDonI; iI++)
do
{
if (Don[iI] > Don [iI+1])
{Triok = 0;
tempD = Don[iI+1];
Don[iI+1] = Don[iI];
Don[iI] = tempD;
}
} while (Triok =0);
}

/*cout << "valeur de i ? " << iI << "\n";*/

// Affichage des résultats

cout << "\n\nResultats des nombres tries\n";
cout << "Index\tOrigine\tTri\n";
for (iI=0; iI<nDonI; iI++)
cout << iI+1 << "\t" << Don[iI] << "\t" << tempD << "\n";

cout << "\nVoulez-vous recommencer (O/N) ?";
cin >> Triok;

}while (Triok == 'O' || Triok == 'o');
cout << "\nProgramme termine.\n";

// 5- Fin du programme
}
dimanche 7 novembre 2010 à 03:20:07 | Re : Aide programme tri croissant et décroissant

DeAtHCrAsH


Salut,

Jette donc un oeil aux algo de tri a bulles, vu que c'est ce que tu cherchers à faire.
Le tri à bulles est le pire qu'il existe d'un point de vu performance mais ca reste le plus simple a mettre en oeuvre et à comprendre pour un débutant.

A part ca lorsque tu écrit un message, pense a mettre ton code en forme tu y gagnera en lisibilité.

Shell
dimanche 7 novembre 2010 à 03:36:38 | Re : Aide programme tri croissant et décroissant

nikesava

Ok, comment je m'y prend pour le tri décroissant?
dimanche 7 novembre 2010 à 19:54:47 | Re : Aide programme tri croissant et décroissant

didoux95

Salut,

Je pense que tu peux faire quelque chose de plus simple pour l'algo de tri en lui-même.
L'algorithme global que tu sembles avoir choisit :
- Tu récupères les différentes valeurs dans un tableau
- Tu tries
- Tu affiches

Un exemple d'algorithme de tri (où tu peu choisir l'ordre) :
Code C/C++ :
//Contient les valeurs saisies
int tab[] = {9, 2, 7, 3, 4};
//Permet de se déplacer dans la liste
int index1, index2;
//Classes les valeurs de la plus grande à la plus petite
int higher = 1;

//Tri du tableau de int
for (index1=0; index1<sizeof(tab); index1++) {
  for (index2=0; index2<sizeof(tab); index2++) {
    if (index2 < index1)
      continue;
    if (higher) {
      if (tab[index1] < tab[index2])
        swap(tab, index1, index2);
    }else{
      if (tab[index1] > tab[index2])
        swap(tab, index1, index2);
    }
  }
}


Un exemple de la fonction swap :
Code C/C++ :
void swap (int * tab, int index1, int index2) {
  int temp;
  temp = tab[index1];
  tab[index1] = tab[index2];
  tab[index2] = temp;
  return;
}


Je ne sais pas comment s'appel mon algo, mais ce qui est sur c'est que ce n'est pas le meilleur au niveau des performances.

Ciao.

lundi 8 novembre 2010 à 14:09:01 | Re : Aide programme tri croissant et décroissant

nikesava

Bonjour, j'ai retravaillé un peu mon algo et maintenant, le seul bug est que ma dernière valeur n'est pas triée... quelqu'un peu m'aider avec cela?


#include <iostream>
#include <math.h>

using namespace std ;

#define nDonneesMax 15

int main(){
float Don[nDonneesMax], DonCopie[nDonneesMax], tempD; // Donnee
int iI, nDonI, Tri; // Variables d'itération
char Triok; // Variable de sortie

do // Reprise du programme
{
Triok = 'O';
do
{
cout << "\nCombien de valeurs vous desirez trier? ";
cin >> nDonI;
if ((nDonI < 2 || nDonI >15))
cout << "La valeur est hors de la plage, veuillez recommencer... \n\n";
}while ((nDonI < 2 || nDonI >nDonneesMax));
cout << "\n\nDans quel ordre desirez vous trier (1 pour croissant, 2 pour decroissant) ? ";
cin >> Tri;

// Entrée des valeurs
for (iI = 0; iI < nDonI; iI++)
{
cout << "\nEntrer donnee " << iI+1 << " de "<<nDonI<<" : ";
cin >> Don[iI];
}

//copie du tableau
for (iI = 0; iI < nDonI; iI++)
{
DonCopie[iI] = Don[iI];
}

// Calculs
if (Tri == 1)
{
for (iI=0; iI<nDonI-2; iI++)
{
for (int i = iI+1 ; i<nDonI-1 ; i++)
{
if (DonCopie[iI] > DonCopie [i])
{
tempD= DonCopie[iI];
DonCopie[iI]=DonCopie[i];
DonCopie[i] = tempD;
}
}
}
}
if (Tri == 2)
{
for (iI=0; iI<nDonI-2; iI++)
{
for (int i = iI+1 ; i<nDonI-1 ; i++)
{
if (DonCopie[iI] < DonCopie [i])
{
tempD= DonCopie[iI];
DonCopie[iI]=DonCopie[i];
DonCopie[i] = tempD;
}
}
}
}

// Affichage des résultats
cout << "\n\nResultats des nombres tries\n";
cout << "Index\tOrigine\tTri\n";
for (iI=0; iI<nDonI; iI++)
cout << iI+1 << "\t" << Don[iI] << "\t" << DonCopie[iI] << "\n";
cout << "\nVoulez-vous recommencer (O/N) ?";
cin >> Triok;
}while (Triok == 'O' || Triok == 'o');

cout << "\nProgramme termine.\n";
return 0 ;
}


Cette discussion est classée dans : donnee, tri, ii, don, triok


Répondre à ce message

Sujets en rapport avec ce message

pb de base de donnee en C [ par tequ13 ] j'aimerais savoir comment faire pour charger des fichiers (*.txt) a l'ouverture d'un programme pour ensuite les comparer et repérer les doublons pour tri dans un tableau a 2 dimension en cpp [ par vivo95 ] Bonjours, je rechercherai comment faire pour faire un tri dans un tableau a 2 dimension, je sais le faire dans un tableua a 1 dim mais la je seche.Mer I don't like VC++ [ par Toobad ] J'ai un bug du genre "grilleur de nerf" avec mon VC++6.l'ereur c'est: error C2018: unknown character '0xa0'y a des problemes avec les #include et les tri par comptage et tri de dijkstra. urgent!!! et au secours!!! [ par magicoz ] Bonjour, j'aurais voulu avoir de l'aide pour les tris par comptage et dijkstra.Je ne comprend pas le principe.Est-ce que quelqu'un peut m'expliquer et a l'aide!!!!?!? programme equivalent au DIR de Dos [ par rouxc ] Ce programme doitpermettre de lister des fichiers en parcourant les sous-répertoires avecquelques options de tri pour la sélection et l'affichage des BD en C++, ADO ? [ par lapiou ] voilà, ma question : je doit faire un petit logiciel de gestion en VC++, avec stockage des informations sur les personnes etc...Ma question est de sav ecrire Base de donnee [ par amosc ] comment fait on pour ecrire sur une base de donne tu type access utilise ton une requette SQL comme en php ou une methode precise de la classe CRecord recherche donnee system [ par cedkat ] bonjourje cherche a trouver le nombre de processeur que l'ordinateurpossede, la taille memoire physique, la vitesse du processeuretcc...sous borland c Help :: Tri-Fusion itératif !! [ par daarkon666 ] Salut !! Je planche actuellement sur une version itérative du Tri-Fusion, et y a un pb : je ne vois pas comment écrire la fonction fusion qui se charg Pb de tri et taille de tableaux [ par daarkon666 ] Salut !!Je viens de terminer le tri/fusion itératif (et d'autres algos de tri, pr un projet info de fac) en C, et je suis soumis à un pb auss ibien so


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales