Accueil > > > TRI CROISSANT ET DÉCROISSANT D'ENTIERS
TRI CROISSANT ET DÉCROISSANT D'ENTIERS
Information sur la source
Description
Ce programme saisit des valeurs dans un tableau x de 100 entiers, puis les trie dans un ordre croissant ou décoissant selon votre choix:p) <<Made by Thierry N.>>
Source
- #include <stdio.h>
- #include <conio.h>
- #define LG 128
- main()
- {
- int x[100]; /* tableau d'entiers */
- int i = 0; /* variable de controle */
- int last; /* Index de la derniere valeur saisie */
- int d; /* nombre de passages de tri */
- int k,j,z,ok; /*k,z et ok sont des variables de controles,et j un cpteur*/
- int temp; /* variable auxiliaire pour permutation */
- char reply; /* variable de contr0le */
- char ligne[LG+1]; /*tabeau recevant la saisie de l'utilisateur au clavier*/
-
- printf("Le programme saisit jusqu'à 100 entiers positifs compris entre \n"
- "0 et 30000 et les trie en ordre croissant ou décroissant (au choix).\n"
- "Fin par -1.\n\n");
- printf("Entrez les nombres positifs :\n\n");
-
- do
- {
- /*ici on controle si la valeur saisie est entiere et appatient à l'inteval
- voulu,sinon on genère un message d'erreur*/
- do{ ok=0;
- gets(ligne);
- for(j=0;j<strlen(ligne);j++)
-
- /*ceci protège contre la saisie des valeurs réelles*/
- if(ligne[j]=='.'){ok=1;printf("Saisie incorrecte!Recommencer SVP:\n");}
-
- k=sscanf(ligne,"%d", &x[ i ]);
-
- /*ceci protège contre une touche inattendue ou une valeur
- non compris dans l'interval voulu*/
-
- if(k!=1) {printf("Saisie incorrecte!Recommencer SVP:\n");ok=1;}
- else if(!(x[ i ]>=-1&&x[ i ]<=30000)){printf("Saisie incorrecte!Recommencer SVP:\n"); ok=1;}
-
- /*c'est le dernier test contre les données superflues du genre 25ff ou 2f*/
- if(ok==0)for (j=0;j<strlen(ligne);j++){z=ligne[j]-'1';
- if(!(z>=0&&z<10)&&x[i]!=-1&&ligne[j]!=32&&ligne[j]!='0')
- {ok=1;
- /*on vide*/
- for (j=0;j<strlen(ligne);j++)ligne[j]=' ';
- printf("Des données superflues saisies!\n");
- printf("Recommencer la précédente saisie\n");}
- }
-
- }while(ok);
-
- i++;
- } while (x[i-1] != -1 && i < 100);
-
- /*Rien n'est changé à ce niveau sauf le message sur le nombre des valeurs saisies*/
- if(i==100) printf("\nvous avez saisie %d valeurs",i);
- else printf("\nvous avez saisie %d valeurs",i-1);
- if (i == 100)
- last = i-1;
- else
- last = i-2;
-
- if (i == 2)
- printf("\n\nLe tableau ne contient que la valeur : %d\n\n", x[i-2]);
- else if (i > 2)
- {
-
- printf("\n\nLe tableau contient les valeurs :\n\n");
- for (i = 0; i <= last; i++)
- {
- printf("%d\t", x[ i ]);
- if (i && (!(i % 8)))
- printf("\n");
- }
-
- /*test de selection de choix*/
- do{ ok=0;
- printf("\n\nTri du tableau ?\n"
- "Ascendant = a Descendant = d Non = n : ");
- reply = getche();
- k=reply;
- if(k!='a'&&k!='d'&&k!='n'){ok=1;printf("\n\nchoix incorrect\n");}
- if(k=='n')printf("\n\nFIN DU PROGRAMME,Merçi :p).");
- }while(ok);
-
- switch (reply)
- {
- case 'a': for (d = last; d != 0; d--)
- for (i = 0; i < d; i++)
- if (x[ i ] > x[i+1])
- { /* on permute */
- temp = x[ i ];
- x[ i ] = x[i+1];
- x[i+1] = temp;
- }
- printf("\n\nLe tableau a été trié en ordre ascendant :\n\n");
- for (i = 0; i <= last; i++)
- {
- printf("%d\t", x[ i ]);
- if (i && (!(i % 8)))
- printf("\n");
- }
- break;
- case 'd': for (d = last; d != 0; d--)
- for (i = 0; i < d; i++)
- if (x[ i ] < x[i+1])
- {
- temp = x[ i ];
- x[ i ] = x[i+1];
- x[i+1] = temp;
- }
- printf("\n\nLe tableau a été trié en ordre descendant :\n\n");
- for (i = 0; i <= last; i++)
- {
- printf("%d\t", x[ i ]);
- if (i && (!(i % 8)))
- printf("\n");
- }
- }
- }
- }
-
#include <stdio.h>
#include <conio.h>
#define LG 128
main()
{
int x[100]; /* tableau d'entiers */
int i = 0; /* variable de controle */
int last; /* Index de la derniere valeur saisie */
int d; /* nombre de passages de tri */
int k,j,z,ok; /*k,z et ok sont des variables de controles,et j un cpteur*/
int temp; /* variable auxiliaire pour permutation */
char reply; /* variable de contr0le */
char ligne[LG+1]; /*tabeau recevant la saisie de l'utilisateur au clavier*/
printf("Le programme saisit jusqu'à 100 entiers positifs compris entre \n"
"0 et 30000 et les trie en ordre croissant ou décroissant (au choix).\n"
"Fin par -1.\n\n");
printf("Entrez les nombres positifs :\n\n");
do
{
/*ici on controle si la valeur saisie est entiere et appatient à l'inteval
voulu,sinon on genère un message d'erreur*/
do{ ok=0;
gets(ligne);
for(j=0;j<strlen(ligne);j++)
/*ceci protège contre la saisie des valeurs réelles*/
if(ligne[j]=='.'){ok=1;printf("Saisie incorrecte!Recommencer SVP:\n");}
k=sscanf(ligne,"%d", &x[ i ]);
/*ceci protège contre une touche inattendue ou une valeur
non compris dans l'interval voulu*/
if(k!=1) {printf("Saisie incorrecte!Recommencer SVP:\n");ok=1;}
else if(!(x[ i ]>=-1&&x[ i ]<=30000)){printf("Saisie incorrecte!Recommencer SVP:\n"); ok=1;}
/*c'est le dernier test contre les données superflues du genre 25ff ou 2f*/
if(ok==0)for (j=0;j<strlen(ligne);j++){z=ligne[j]-'1';
if(!(z>=0&&z<10)&&x[i]!=-1&&ligne[j]!=32&&ligne[j]!='0')
{ok=1;
/*on vide*/
for (j=0;j<strlen(ligne);j++)ligne[j]=' ';
printf("Des données superflues saisies!\n");
printf("Recommencer la précédente saisie\n");}
}
}while(ok);
i++;
} while (x[i-1] != -1 && i < 100);
/*Rien n'est changé à ce niveau sauf le message sur le nombre des valeurs saisies*/
if(i==100) printf("\nvous avez saisie %d valeurs",i);
else printf("\nvous avez saisie %d valeurs",i-1);
if (i == 100)
last = i-1;
else
last = i-2;
if (i == 2)
printf("\n\nLe tableau ne contient que la valeur : %d\n\n", x[i-2]);
else if (i > 2)
{
printf("\n\nLe tableau contient les valeurs :\n\n");
for (i = 0; i <= last; i++)
{
printf("%d\t", x[ i ]);
if (i && (!(i % 8)))
printf("\n");
}
/*test de selection de choix*/
do{ ok=0;
printf("\n\nTri du tableau ?\n"
"Ascendant = a Descendant = d Non = n : ");
reply = getche();
k=reply;
if(k!='a'&&k!='d'&&k!='n'){ok=1;printf("\n\nchoix incorrect\n");}
if(k=='n')printf("\n\nFIN DU PROGRAMME,Merçi :p).");
}while(ok);
switch (reply)
{
case 'a': for (d = last; d != 0; d--)
for (i = 0; i < d; i++)
if (x[ i ] > x[i+1])
{ /* on permute */
temp = x[ i ];
x[ i ] = x[i+1];
x[i+1] = temp;
}
printf("\n\nLe tableau a été trié en ordre ascendant :\n\n");
for (i = 0; i <= last; i++)
{
printf("%d\t", x[ i ]);
if (i && (!(i % 8)))
printf("\n");
}
break;
case 'd': for (d = last; d != 0; d--)
for (i = 0; i < d; i++)
if (x[ i ] < x[i+1])
{
temp = x[ i ];
x[ i ] = x[i+1];
x[i+1] = temp;
}
printf("\n\nLe tableau a été trié en ordre descendant :\n\n");
for (i = 0; i <= last; i++)
{
printf("%d\t", x[ i ]);
if (i && (!(i % 8)))
printf("\n");
}
}
}
}
Conclusion
J'ai pris de soin de protéger le programme contre les saisies éroonées de l'utilisateurs. Veuillez me signifier si vous arriver a planter ce programme,vos remarques sont les bien venues Merçi :p).
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
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
pouvoir lire un entier en tant que tableau (bit à bit) [ par platinum07 ]
Amis codeurs, bonjour !Je suis sur un petit problème depuis quelques heures... la solution est surement sous mon nez mas je ne trouve pas <img src=/im
Tri endroit précis dans Tableau [ par MissSixty ]
Salut ! Une question toute simple pour ceux qui connaissent qsort....Voilà je désire trier un tableau à partir de la ligne i que je lui fournis). La l
exercice tableau 2D pdcg et premier de deux entiers [ par ZeusRoot ]
Melook Media enr.Voici ma question : Je suis un debutant en C et je voudrais savoir comment aborder ce exercice.Enonce1.- Pour un nombre e
Recherche tri d'un tableau d'adresse objet [ par rtnode ]
Bonjour à tous,je soumets un problème qui me semble à priori trés banal mais dont je n'ai pas trouvé de bonne solution.Dans nombre de cas, je dispose
est il possible en C de retourner un tableau d'entier dasn une fcontcion ?? [ par nicola2s ]
j'ai une fonction dans laquelle j'obtient un tableau d'entier int bidul[15]; est if possible de retourner ce tableau d'entier dasn ma fonction ? si ou
Tri de tableau [ par firemax ]
Bonjour Je me demandais juste si il existais en C des fonctions de tri de tableau ou si il fallait la faire nous meme Car si il faut la faire nous
[vc++]réduction de la taille [ par imanedaoudi ]
Bonjour,j'ai un tableau de 6000 entier, je cherche à réduire la taille de ce tableau en préservant le nombre d'entier (je dois agir peu
Tri de tableau [ par dbiare ]
Bonjour Je recherche un algorithme (récursif) de tri (de tableau) car j’ai besoin de trier un tableau PAR MORCEAUX. Si l’un d’entre vous sais ou ce tr
Tri d'un tableau à 2 dimensions [ par vao ]
salut tout le monde,J'ai un problème de taille, enfin pour moi qui débute en C++. Je dois trier un tableau en fonction de la valeur d'u
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|