Bonjour a tous
Débutant en c j'ai écrit un truc qui sert pas a grand chose sinon classer en
ordre croissant décroissant et pyramidal le contenu d'une variable
voir le code à la suite. n'étant pas spécialement content de mon code je
m'adresse au pro du c++ que vous êtes pour me donner une piste
pour optimiser mon code, notament pour récuperer la taille de TabValue car
quand je fais un ntaille = TabValue.size() ca le fais pas probleme de typage
des variables sans aucun doute mais je vois pas :(
d'avance merci a vous
Michaël
adresse mail : diablofr_arrobase_live.fr.
#include <stdio.h>
#include <stdlib.h>
// DEFINITION DE VRAI ET FAUX
#define TRUE 1
#define FALSE 0
#define s32 signed long
// Déclaration du tableau
// j'ai rajouté deux éléments et j'ai mélangé les entiers sinon c'était
trop facile ;-)
// les deux éléments rajoutés c'est pour la pyramide
// ***********************************************************************/
// * DECLARATION DES VARIABLES
int i; // compteur
int k;
int pyram =0; // pour l'impression pyramidale
int num; // option du menu
int ntaille; // recupera la taille du tableau
int cpt = 1;
// **********************************************************************/
// FONCTION DE TRI PYRAMIDAL
void tri_pyramidal(int *t, int n)
{
int j = 0; // pour la boucle
int tmp = 0; //permet la permuation
int en_ordre; // condition de boucle
while(en_ordre) // boucle
{
en_ordre = FALSE; // en ordre = faux pour boucler
for(j =0 ; j < n-1 ; j++) // si t[j] > t[j+1] si la case tabvalue
en cours est plus grande que la case suivante de TabValue alors
{
if (t[j] < t[j+1]) // si t[j] < t[j+1] si la case TabValue en
cours est plus petite que la case suivante de TabValue alors
{
tmp = t[j+1]; // permutation = Tabvalue +1
t[j+1] = t[j]; // Tabvalue + 1 = TabValue en cours
t[j] = tmp; // TabValue en cours = permutation
en_ordre = TRUE; // en ordre = Vrai Fin de la procédure de
tri
}
}
}
}
// FONCTION DE TRI CROISSANT
void tri_croissant(int *t,int n)
// EXPLICATION
// t = TabValue, n = taille de TabValue
{
int j =0; // pour la boucle
int tmp = 0; // permet la permutation
int en_ordre; // condition de boucle
while(en_ordre) // boucle
{
en_ordre = FALSE; // en ordre = faux pour boucler
for (j = 0 ; j < n-1 ; j++) // si j est plus petit que la taille du
tableau -1 on incrémente
{
if (t[j] > t[j+1]) // si t[j] > t[j+1] si la case tabvalue en
cours est plus grande que la case suivante de TabValue alors
{
tmp = t[j+1]; // temp = t[j+1] soit temp = case suivante de
TabValue
t[j+1] = t[j]; // Case suivante de TabValue = case
précédente de TabValue parce que son contenu est forcément plus petit
t[j] = tmp; // Case en cours de TabValue = à la valeur temp
mise de coté plus haut
en_ordre = TRUE; // en_ordre = Vrai fin de la procédure de
tri
}
}
}
}
// FONCTION DE TRI DECROISSANT
void tri_decroissant(int *t, int n)
{
int j = 0; // pour la boucle
int tmp = 0; //permet la permuation
int en_ordre; // condition de boucle
while(en_ordre) // boucle
{
en_ordre = FALSE; // en ordre = faux pour boucler
for(j =0 ; j < n-1 ; j++) // si t[j] > t[j+1] si la case tabvalue
en cours est plus grande que la case suivante de TabValue alors
{
if (t[j] < t[j+1]) // si t[j] < t[j+1] si la case TabValue en
cours est plus petite que la case suivante de TabValue alors
{
tmp = t[j+1]; // permutation = Tabvalue +1
t[j+1] = t[j]; // Tabvalue + 1 = TabValue en cours
t[j] = tmp; // TabValue en cours = permutation
en_ordre = TRUE; // en ordre = Vrai Fin de la procédure de
tri
}
}
}
}
// fonction principal
int main(void)
{
// présentation
printf("Programme : Algorithmes De Tri / %c Version 01 Le
23/11/2011\n",184);
printf("R%calis%c par: MICHAEL AMZEL \n", 130, 130);
printf("Encadr%c par: CHRISTOPHE NAZARET \n\n",130);
// rappel du contenu de TabValue
printf ("\n\nVoici le contenu de la variable TabValue.\n\n");
for (i = 0 ; i < 15 ; i++)
{
printf("%d ", TabValue[i]);
ntaille = ntaille++;
}
printf("\n\n");
// liste des algorithmes de tri
printf("\n1. Le tri par ordre Croissant\n");
printf("2. Le tri par ordre D%ccroissant\n",130);
printf("3. Le tri pyramidale\n");
// choisir l'algorithme à appliquer
// boucle pour tester l'entrée clavier saisie par l'utilisateur
do {
printf("\nVeuillez saisir le num%cro de l'algorithme de tri %c appliquer
: ",130,133); // affichage du message : Veuillez saisie le numéro de
l'algorithme de tri a appliquer
scanf("%d",&num); // recupere la saisie clavier
if ((num>6)||(num<1)) printf("\n(!) Ce num%cro ne figure pas dans la
liste !\n",130);} // message d'erreur comme quoi le numéro n'est pas dans le
choix des options possible
while((num>3)||(num<1)); // verifie que l'option entrée fais partie de
la liste
// appliquer l'algorithme choisi
//on passe en argument : TabValue, la Taille de TabValue et le numéro de
l'option comme ca y a qu'une fonction de tri au lieu d'en avoir trois
if (num==1) tri_croissant(TabValue, ntaille);
if (num==2) tri_decroissant(TabValue, ntaille);
if (num==3) pyram =1; tri_pyramidal(TabValue, ntaille);
// si pyram = 0 alors on affiche le resultat normalement pour le tri
croissant et décroissant
if(pyram == 0)
{
// résultat pour tri croissant et décroissant
printf("\nTRI%cS! : ",144); // AFFICHE LE MESSAGE SUIVANT : TRIES
MAIS AVEC UN ACCENT
for (i=0 ; i<ntaille ;i++) // BOUCLE SUR LA LECTURE DE TabValue
printf("%d ",TabValue[i]); printf("\n\n"); // affiche la case
mémoire TabValue en cours et passe à la ligne suivante
}
else
// Si pyram = 1 alors on affiche le tri pyramidal
// EDITION TRI PYRAMIDAL
{
int ligne = 0;// pour la boucle
int valeur = (ntaille /2) -1;
int caselue = 0; // lecture de la case memoire en cours
for (i = 0 ; i < valeur ; i++) // boucle pour la lecture du
tableau tant que i< ntaille alors on ajoute 1 à i
{
for(ligne = 0 ; ligne < i ; ligne++) // boucle pour la
pyramide si ligne < i alors on ajoute 1 à ligne
{
printf("%d ",TabValue[caselue]); // affichage de la
valeur TabValue en cours
if (caselue < ntaille ) // si caselue < ntaille
alors
{
caselue++; // on increment caselue
}
}
printf("\n"); // on passe a la ligne suivante
}
}
system("PAUSE"); // on fait une pause après l'affichage du résultat
return 0; //on renvoie 0 et on termine le programme
}// fin du programme
Alors pourquoi poser une question sur fr.comp.lang.c++ au lieu de fr.comp.lang.c ? C et C++ sont deux langages différents.
j'ai écrit un truc qui sert pas a grand chose sinon classer en ordre croissant décroissant et pyramidal le contenu d'une variable voir le code à la suite. n'étant pas spécialement content de mon code je m'adresse au pro du c++ que vous êtes pour me donner une piste pour optimiser mon code, notament pour récuperer la taille de TabValue car quand je fais un ntaille = TabValue.size() ca le fais pas probleme de typage des variables sans aucun doute mais je vois pas :(
Il y a trop de commentaires inutiles.
Il y a trop de variables globales.
#define s32 signed long Utiliser typedef pour définir un type! typedef signed long s32;
int en_ordre; // condition de boucle while(en_ordre) // boucle
Comportement indéfini: on ne sait pas si en_ordre sera initialisé à vrai ou faux.
printf("R%calis%c par: MICHAEL AMZEL n", 130, 130);
Ceci assume un encodage pour les caractères accentué. Ça ne marchera pas, par exemple, si l'utilisateur a $ env|grep LC LC_CTYPE=en_US.UTF-8
Utiliser une bibliothèque de localisation et éviter tout caractère non-ASCII dans les sources.
#include <libintl.h>
printf("%sn",gettext("Realized by MICHAEL AMZEL."));
Lire "The Art of Unix Programming" http://catb.org/~esr/writings/taoup/html/ En particulier le chapitre 11.
Il serait plus pratique d'implémenter le programme comme un filtre:
system("PAUSE"); // on fait une pause après l'affichage du résultat
Ne pas utiliser system(3), c'est une fonction dangereuse en terme de sécurité. Ne pas implémenter de pause dans le programme lui-même! Si une pause est nécessaire, on appelle le programme en envoyant la sortie dans more:
void version(const char* pname){ // add gettext and the localization file if wanted. printf("%s Program: Sort algorithms / Version 01 on 2011-11-23n",pname); printf("Realized by MICHAEL AMZELn"); printf("Directed by CHRISTOPHE NAZARETnn"); }
-- __Pascal Bourguignon__ http://www.informatimago.com/ A bad day in () is better than a good day in {}.
"MOST" <most.depot@wanadoo.fr> writes:
Bonjour a tous
Débutant en c
Alors pourquoi poser une question sur fr.comp.lang.c++ au lieu de
fr.comp.lang.c ? C et C++ sont deux langages différents.
j'ai écrit un truc qui sert pas a grand chose sinon classer en
ordre croissant décroissant et pyramidal le contenu d'une variable
voir le code à la suite. n'étant pas spécialement content de mon code je
m'adresse au pro du c++ que vous êtes pour me donner une piste
pour optimiser mon code, notament pour récuperer la taille de TabValue car
quand je fais un ntaille = TabValue.size() ca le fais pas probleme de typage
des variables sans aucun doute mais je vois pas :(
Il y a trop de commentaires inutiles.
Il y a trop de variables globales.
#define s32 signed long
Utiliser typedef pour définir un type!
typedef signed long s32;
int en_ordre; // condition de boucle
while(en_ordre) // boucle
Comportement indéfini: on ne sait pas si en_ordre sera initialisé à vrai
ou faux.
printf("R%calis%c par: MICHAEL AMZEL n", 130, 130);
Ceci assume un encodage pour les caractères accentué. Ça ne marchera
pas, par exemple, si l'utilisateur a
$ env|grep LC
LC_CTYPE=en_US.UTF-8
Utiliser une bibliothèque de localisation et éviter tout caractère
non-ASCII dans les sources.
#include <libintl.h>
printf("%sn",gettext("Realized by MICHAEL AMZEL."));
Lire "The Art of Unix Programming"
http://catb.org/~esr/writings/taoup/html/
En particulier le chapitre 11.
Il serait plus pratique d'implémenter le programme comme un filtre:
system("PAUSE"); // on fait une pause après l'affichage du résultat
Ne pas utiliser system(3), c'est une fonction dangereuse en terme de
sécurité. Ne pas implémenter de pause dans le programme lui-même! Si
une pause est nécessaire, on appelle le programme en envoyant la sortie
dans more:
void version(const char* pname){
// add gettext and the localization file if wanted.
printf("%s Program: Sort algorithms / Version 01 on 2011-11-23n",pname);
printf("Realized by MICHAEL AMZELn");
printf("Directed by CHRISTOPHE NAZARETnn");
}
Alors pourquoi poser une question sur fr.comp.lang.c++ au lieu de fr.comp.lang.c ? C et C++ sont deux langages différents.
j'ai écrit un truc qui sert pas a grand chose sinon classer en ordre croissant décroissant et pyramidal le contenu d'une variable voir le code à la suite. n'étant pas spécialement content de mon code je m'adresse au pro du c++ que vous êtes pour me donner une piste pour optimiser mon code, notament pour récuperer la taille de TabValue car quand je fais un ntaille = TabValue.size() ca le fais pas probleme de typage des variables sans aucun doute mais je vois pas :(
Il y a trop de commentaires inutiles.
Il y a trop de variables globales.
#define s32 signed long Utiliser typedef pour définir un type! typedef signed long s32;
int en_ordre; // condition de boucle while(en_ordre) // boucle
Comportement indéfini: on ne sait pas si en_ordre sera initialisé à vrai ou faux.
printf("R%calis%c par: MICHAEL AMZEL n", 130, 130);
Ceci assume un encodage pour les caractères accentué. Ça ne marchera pas, par exemple, si l'utilisateur a $ env|grep LC LC_CTYPE=en_US.UTF-8
Utiliser une bibliothèque de localisation et éviter tout caractère non-ASCII dans les sources.
#include <libintl.h>
printf("%sn",gettext("Realized by MICHAEL AMZEL."));
Lire "The Art of Unix Programming" http://catb.org/~esr/writings/taoup/html/ En particulier le chapitre 11.
Il serait plus pratique d'implémenter le programme comme un filtre:
system("PAUSE"); // on fait une pause après l'affichage du résultat
Ne pas utiliser system(3), c'est une fonction dangereuse en terme de sécurité. Ne pas implémenter de pause dans le programme lui-même! Si une pause est nécessaire, on appelle le programme en envoyant la sortie dans more:
void version(const char* pname){ // add gettext and the localization file if wanted. printf("%s Program: Sort algorithms / Version 01 on 2011-11-23n",pname); printf("Realized by MICHAEL AMZELn"); printf("Directed by CHRISTOPHE NAZARETnn"); }
-- __Pascal Bourguignon__ http://www.informatimago.com/ A bad day in () is better than a good day in {}.
MOST
Merci d'avoir pris le temps de corriger mes erreurs de débutant je teste ta solution Amicalement Michaël
"Pascal J. Bourguignon" a écrit dans le message de news:
"MOST" writes:
Bonjour a tous Débutant en c
Alors pourquoi poser une question sur fr.comp.lang.c++ au lieu de fr.comp.lang.c ? C et C++ sont deux langages différents.
j'ai écrit un truc qui sert pas a grand chose sinon classer en ordre croissant décroissant et pyramidal le contenu d'une variable voir le code à la suite. n'étant pas spécialement content de mon code je m'adresse au pro du c++ que vous êtes pour me donner une piste pour optimiser mon code, notament pour récuperer la taille de TabValue car quand je fais un ntaille = TabValue.size() ca le fais pas probleme de typage des variables sans aucun doute mais je vois pas :(
Il y a trop de commentaires inutiles.
Il y a trop de variables globales.
#define s32 signed long Utiliser typedef pour définir un type! typedef signed long s32;
int en_ordre; // condition de boucle while(en_ordre) // boucle
Comportement indéfini: on ne sait pas si en_ordre sera initialisé à vrai ou faux.
printf("R%calis%c par: MICHAEL AMZEL n", 130, 130);
Ceci assume un encodage pour les caractères accentué. Ça ne marchera pas, par exemple, si l'utilisateur a $ env|grep LC LC_CTYPE=en_US.UTF-8
Utiliser une bibliothèque de localisation et éviter tout caractère non-ASCII dans les sources.
#include <libintl.h>
printf("%sn",gettext("Realized by MICHAEL AMZEL."));
Lire "The Art of Unix Programming" http://catb.org/~esr/writings/taoup/html/ En particulier le chapitre 11.
Il serait plus pratique d'implémenter le programme comme un filtre:
system("PAUSE"); // on fait une pause après l'affichage du résultat
Ne pas utiliser system(3), c'est une fonction dangereuse en terme de sécurité. Ne pas implémenter de pause dans le programme lui-même! Si une pause est nécessaire, on appelle le programme en envoyant la sortie dans more:
void version(const char* pname){ // add gettext and the localization file if wanted. printf("%s Program: Sort algorithms / Version 01 on 2011-11-23n",pname); printf("Realized by MICHAEL AMZELn"); printf("Directed by CHRISTOPHE NAZARETnn"); }
-- __Pascal Bourguignon__ http://www.informatimago.com/ A bad day in () is better than a good day in {}.
Merci d'avoir pris le temps de corriger mes erreurs de débutant
je teste ta solution
Amicalement
Michaël
"Pascal J. Bourguignon" <pjb@informatimago.com> a écrit dans le message de
news: 871usq26i7.fsf@kuiper.lan.informatimago.com...
"MOST" <most.depot@wanadoo.fr> writes:
Bonjour a tous
Débutant en c
Alors pourquoi poser une question sur fr.comp.lang.c++ au lieu de
fr.comp.lang.c ? C et C++ sont deux langages différents.
j'ai écrit un truc qui sert pas a grand chose sinon classer en
ordre croissant décroissant et pyramidal le contenu d'une variable
voir le code à la suite. n'étant pas spécialement content de mon code je
m'adresse au pro du c++ que vous êtes pour me donner une piste
pour optimiser mon code, notament pour récuperer la taille de TabValue
car
quand je fais un ntaille = TabValue.size() ca le fais pas probleme de
typage
des variables sans aucun doute mais je vois pas :(
Il y a trop de commentaires inutiles.
Il y a trop de variables globales.
#define s32 signed long
Utiliser typedef pour définir un type!
typedef signed long s32;
int en_ordre; // condition de boucle
while(en_ordre) // boucle
Comportement indéfini: on ne sait pas si en_ordre sera initialisé à vrai
ou faux.
printf("R%calis%c par: MICHAEL AMZEL n", 130, 130);
Ceci assume un encodage pour les caractères accentué. Ça ne marchera
pas, par exemple, si l'utilisateur a
$ env|grep LC
LC_CTYPE=en_US.UTF-8
Utiliser une bibliothèque de localisation et éviter tout caractère
non-ASCII dans les sources.
#include <libintl.h>
printf("%sn",gettext("Realized by MICHAEL AMZEL."));
Lire "The Art of Unix Programming"
http://catb.org/~esr/writings/taoup/html/
En particulier le chapitre 11.
Il serait plus pratique d'implémenter le programme comme un filtre:
system("PAUSE"); // on fait une pause après l'affichage du résultat
Ne pas utiliser system(3), c'est une fonction dangereuse en terme de
sécurité. Ne pas implémenter de pause dans le programme lui-même! Si
une pause est nécessaire, on appelle le programme en envoyant la sortie
dans more:
void version(const char* pname){
// add gettext and the localization file if wanted.
printf("%s Program: Sort algorithms / Version 01 on
2011-11-23n",pname);
printf("Realized by MICHAEL AMZELn");
printf("Directed by CHRISTOPHE NAZARETnn");
}
Merci d'avoir pris le temps de corriger mes erreurs de débutant je teste ta solution Amicalement Michaël
"Pascal J. Bourguignon" a écrit dans le message de news:
"MOST" writes:
Bonjour a tous Débutant en c
Alors pourquoi poser une question sur fr.comp.lang.c++ au lieu de fr.comp.lang.c ? C et C++ sont deux langages différents.
j'ai écrit un truc qui sert pas a grand chose sinon classer en ordre croissant décroissant et pyramidal le contenu d'une variable voir le code à la suite. n'étant pas spécialement content de mon code je m'adresse au pro du c++ que vous êtes pour me donner une piste pour optimiser mon code, notament pour récuperer la taille de TabValue car quand je fais un ntaille = TabValue.size() ca le fais pas probleme de typage des variables sans aucun doute mais je vois pas :(
Il y a trop de commentaires inutiles.
Il y a trop de variables globales.
#define s32 signed long Utiliser typedef pour définir un type! typedef signed long s32;
int en_ordre; // condition de boucle while(en_ordre) // boucle
Comportement indéfini: on ne sait pas si en_ordre sera initialisé à vrai ou faux.
printf("R%calis%c par: MICHAEL AMZEL n", 130, 130);
Ceci assume un encodage pour les caractères accentué. Ça ne marchera pas, par exemple, si l'utilisateur a $ env|grep LC LC_CTYPE=en_US.UTF-8
Utiliser une bibliothèque de localisation et éviter tout caractère non-ASCII dans les sources.
#include <libintl.h>
printf("%sn",gettext("Realized by MICHAEL AMZEL."));
Lire "The Art of Unix Programming" http://catb.org/~esr/writings/taoup/html/ En particulier le chapitre 11.
Il serait plus pratique d'implémenter le programme comme un filtre:
system("PAUSE"); // on fait une pause après l'affichage du résultat
Ne pas utiliser system(3), c'est une fonction dangereuse en terme de sécurité. Ne pas implémenter de pause dans le programme lui-même! Si une pause est nécessaire, on appelle le programme en envoyant la sortie dans more:
void version(const char* pname){ // add gettext and the localization file if wanted. printf("%s Program: Sort algorithms / Version 01 on 2011-11-23n",pname); printf("Realized by MICHAEL AMZELn"); printf("Directed by CHRISTOPHE NAZARETnn"); }
-- __Pascal Bourguignon__ http://www.informatimago.com/ A bad day in () is better than a good day in {}.
MOST
Désolé j'ai oublié de préciser que pour cet exercice je n'avais pas le droit d'utiliser la commande qsort ordre du prof :(
"Pascal J. Bourguignon" a écrit dans le message de news:
"MOST" writes:
Bonjour a tous Débutant en c
Alors pourquoi poser une question sur fr.comp.lang.c++ au lieu de fr.comp.lang.c ? C et C++ sont deux langages différents.
j'ai écrit un truc qui sert pas a grand chose sinon classer en ordre croissant décroissant et pyramidal le contenu d'une variable voir le code à la suite. n'étant pas spécialement content de mon code je m'adresse au pro du c++ que vous êtes pour me donner une piste pour optimiser mon code, notament pour récuperer la taille de TabValue car quand je fais un ntaille = TabValue.size() ca le fais pas probleme de typage des variables sans aucun doute mais je vois pas :(
Il y a trop de commentaires inutiles.
Il y a trop de variables globales.
#define s32 signed long Utiliser typedef pour définir un type! typedef signed long s32;
int en_ordre; // condition de boucle while(en_ordre) // boucle
Comportement indéfini: on ne sait pas si en_ordre sera initialisé à vrai ou faux.
printf("R%calis%c par: MICHAEL AMZEL n", 130, 130);
Ceci assume un encodage pour les caractères accentué. Ça ne marchera pas, par exemple, si l'utilisateur a $ env|grep LC LC_CTYPE=en_US.UTF-8
Utiliser une bibliothèque de localisation et éviter tout caractère non-ASCII dans les sources.
#include <libintl.h>
printf("%sn",gettext("Realized by MICHAEL AMZEL."));
Lire "The Art of Unix Programming" http://catb.org/~esr/writings/taoup/html/ En particulier le chapitre 11.
Il serait plus pratique d'implémenter le programme comme un filtre:
system("PAUSE"); // on fait une pause après l'affichage du résultat
Ne pas utiliser system(3), c'est une fonction dangereuse en terme de sécurité. Ne pas implémenter de pause dans le programme lui-même! Si une pause est nécessaire, on appelle le programme en envoyant la sortie dans more:
void version(const char* pname){ // add gettext and the localization file if wanted. printf("%s Program: Sort algorithms / Version 01 on 2011-11-23n",pname); printf("Realized by MICHAEL AMZELn"); printf("Directed by CHRISTOPHE NAZARETnn"); }
-- __Pascal Bourguignon__ http://www.informatimago.com/ A bad day in () is better than a good day in {}.
Désolé j'ai oublié de préciser que pour cet exercice je n'avais pas le droit
d'utiliser la commande qsort
ordre du prof :(
"Pascal J. Bourguignon" <pjb@informatimago.com> a écrit dans le message de
news: 871usq26i7.fsf@kuiper.lan.informatimago.com...
"MOST" <most.depot@wanadoo.fr> writes:
Bonjour a tous
Débutant en c
Alors pourquoi poser une question sur fr.comp.lang.c++ au lieu de
fr.comp.lang.c ? C et C++ sont deux langages différents.
j'ai écrit un truc qui sert pas a grand chose sinon classer en
ordre croissant décroissant et pyramidal le contenu d'une variable
voir le code à la suite. n'étant pas spécialement content de mon code je
m'adresse au pro du c++ que vous êtes pour me donner une piste
pour optimiser mon code, notament pour récuperer la taille de TabValue
car
quand je fais un ntaille = TabValue.size() ca le fais pas probleme de
typage
des variables sans aucun doute mais je vois pas :(
Il y a trop de commentaires inutiles.
Il y a trop de variables globales.
#define s32 signed long
Utiliser typedef pour définir un type!
typedef signed long s32;
int en_ordre; // condition de boucle
while(en_ordre) // boucle
Comportement indéfini: on ne sait pas si en_ordre sera initialisé à vrai
ou faux.
printf("R%calis%c par: MICHAEL AMZEL n", 130, 130);
Ceci assume un encodage pour les caractères accentué. Ça ne marchera
pas, par exemple, si l'utilisateur a
$ env|grep LC
LC_CTYPE=en_US.UTF-8
Utiliser une bibliothèque de localisation et éviter tout caractère
non-ASCII dans les sources.
#include <libintl.h>
printf("%sn",gettext("Realized by MICHAEL AMZEL."));
Lire "The Art of Unix Programming"
http://catb.org/~esr/writings/taoup/html/
En particulier le chapitre 11.
Il serait plus pratique d'implémenter le programme comme un filtre:
system("PAUSE"); // on fait une pause après l'affichage du résultat
Ne pas utiliser system(3), c'est une fonction dangereuse en terme de
sécurité. Ne pas implémenter de pause dans le programme lui-même! Si
une pause est nécessaire, on appelle le programme en envoyant la sortie
dans more:
void version(const char* pname){
// add gettext and the localization file if wanted.
printf("%s Program: Sort algorithms / Version 01 on
2011-11-23n",pname);
printf("Realized by MICHAEL AMZELn");
printf("Directed by CHRISTOPHE NAZARETnn");
}
Désolé j'ai oublié de préciser que pour cet exercice je n'avais pas le droit d'utiliser la commande qsort ordre du prof :(
"Pascal J. Bourguignon" a écrit dans le message de news:
"MOST" writes:
Bonjour a tous Débutant en c
Alors pourquoi poser une question sur fr.comp.lang.c++ au lieu de fr.comp.lang.c ? C et C++ sont deux langages différents.
j'ai écrit un truc qui sert pas a grand chose sinon classer en ordre croissant décroissant et pyramidal le contenu d'une variable voir le code à la suite. n'étant pas spécialement content de mon code je m'adresse au pro du c++ que vous êtes pour me donner une piste pour optimiser mon code, notament pour récuperer la taille de TabValue car quand je fais un ntaille = TabValue.size() ca le fais pas probleme de typage des variables sans aucun doute mais je vois pas :(
Il y a trop de commentaires inutiles.
Il y a trop de variables globales.
#define s32 signed long Utiliser typedef pour définir un type! typedef signed long s32;
int en_ordre; // condition de boucle while(en_ordre) // boucle
Comportement indéfini: on ne sait pas si en_ordre sera initialisé à vrai ou faux.
printf("R%calis%c par: MICHAEL AMZEL n", 130, 130);
Ceci assume un encodage pour les caractères accentué. Ça ne marchera pas, par exemple, si l'utilisateur a $ env|grep LC LC_CTYPE=en_US.UTF-8
Utiliser une bibliothèque de localisation et éviter tout caractère non-ASCII dans les sources.
#include <libintl.h>
printf("%sn",gettext("Realized by MICHAEL AMZEL."));
Lire "The Art of Unix Programming" http://catb.org/~esr/writings/taoup/html/ En particulier le chapitre 11.
Il serait plus pratique d'implémenter le programme comme un filtre:
system("PAUSE"); // on fait une pause après l'affichage du résultat
Ne pas utiliser system(3), c'est une fonction dangereuse en terme de sécurité. Ne pas implémenter de pause dans le programme lui-même! Si une pause est nécessaire, on appelle le programme en envoyant la sortie dans more:
void version(const char* pname){ // add gettext and the localization file if wanted. printf("%s Program: Sort algorithms / Version 01 on 2011-11-23n",pname); printf("Realized by MICHAEL AMZELn"); printf("Directed by CHRISTOPHE NAZARETnn"); }
-- __Pascal Bourguignon__ http://www.informatimago.com/ A bad day in () is better than a good day in {}.
Pascal J. Bourguignon
"MOST" writes:
Désolé j'ai oublié de préciser que pour cet exercice je n'avais pas le droit d'utiliser la commande qsort ordre du prof :(
Ce n'est pas grave. Le principe important, c'est que trier par ordre croissant ou décroissant doit se faire avec la même routine de tri, en passant une fonction de comparaison différente.
Donc il suffit que tu implémente une routine de tri unique similaire à qsort, pour la remplacer.
-- __Pascal Bourguignon__ http://www.informatimago.com/ A bad day in () is better than a good day in {}.
"MOST" <most.depot@wanadoo.fr> writes:
Désolé j'ai oublié de préciser que pour cet exercice je n'avais pas le droit
d'utiliser la commande qsort
ordre du prof :(
Ce n'est pas grave. Le principe important, c'est que trier par ordre
croissant ou décroissant doit se faire avec la même routine de tri, en
passant une fonction de comparaison différente.
Donc il suffit que tu implémente une routine de tri unique similaire à
qsort, pour la remplacer.
--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.
Désolé j'ai oublié de préciser que pour cet exercice je n'avais pas le droit d'utiliser la commande qsort ordre du prof :(
Ce n'est pas grave. Le principe important, c'est que trier par ordre croissant ou décroissant doit se faire avec la même routine de tri, en passant une fonction de comparaison différente.
Donc il suffit que tu implémente une routine de tri unique similaire à qsort, pour la remplacer.
-- __Pascal Bourguignon__ http://www.informatimago.com/ A bad day in () is better than a good day in {}.
Wykaaa
MOST a écrit :
// DEFINITION DE VRAI ET FAUX #define TRUE 1 #define FALSE 0
Juste une remarque.
Plutôt : enum boolean {FALSE=0, TRUE=1};
MOST a écrit :
// DEFINITION DE VRAI ET FAUX
#define TRUE 1
#define FALSE 0