Ce forum est maintenant fermé, seule cette archive statique reste consultable.
 Page :   1  2
Page Suivante
Auteur Sujet :

[C] Tri de nombres dans l'ordre croissant dans un tableau

n°2728
Fabrice971
Profil : Membre
Posté le 03-01-2003 à 15:54:41  
 

Reprise du message précédent :
J'ai dit quoi de si risible mon grand ? j'applique la logique ... et si on n'a besoin que d'un nombre inférieur à 128 , on utilise le type char .... c'est pas naturel pour toi ?
 
Bon évidemment, pour une question de vitesse et d'optimisation, on peut le déclarer en __register unsigned long et appliquer l'alignement sur 4 octets pour les variables.. mais le but c'était quoi ? de transcrire de la manière la plus simple possible un algo en C , pas de faire un programme au millimètre et optimisé à mort ... l'adressage indirect avec une opérande de 8 bits existe en assembleur , donc pourquoi n'aurait-on pas le droit d'utiliser ce type en C ou quelque langage que ce soit ?
Si tu évitais de te contenter de dire qu'un truc est "crade" et expliquais pourquoi tu trouves ça incorrect, je comprendrais.. mais là tu manques franchement d'arguments .... et à part recopier mon texte en ajoutant lol tu fais quoi ? rien... me semble-t-il ... c'est pas constructif et ça fait pas avancer notre ami ...
 
Et , non , Wall , ça ne me dit rien .... mais je te répète , au lieu de balancer un mot comme ça , dans le vide ... explique toi... c un peu facile là ...

mood
Pub
Posté le 03-01-2003 à 15:54:41  
 

n°2729
Chobaron
Profil : Membre
Posté le 03-01-2003 à 17:06:09  
 

Moi ca me parait logique enfin bon je vais tacher de t'expliquer ce que j'en pense.
 
Pourquoi ne pas prendre le type char ?
1- Question de lisibilité du code. On est ici dans le cas d'une incrémentation, il semble plus logique d'utiliser un entier
2- Pour la reprise du code. Une bonne pédagogie quand on écrit du code est de le rendre le plus possible générique et ne pas faire des fonctions trop spécifique. J'imagine que dans son école on va commencer à faire des choses simple puis de plus en plus complexe et surement en réimbriquant les différentes  fonctions déjà faite. De plus en tant que prof, je serais tenté de tester le prog en condition limite.
 
En ce qui concerne -Wall, c'est une option de compilation qui permet de mettre l'accent sur certain Warning que l'on a coutume de corriger. En ce qui concerne le "void main(void)", chez moi ca ne compile pas de ce fait.
Alors oui sans option de compilation ca passe sans pb et ca ne pose pas de pb mais pour moi ce n'est pas propre.
Il est bon de savoir que cette option permet de corriger pas mal de bug en montrant du doigt des choses suspectes.

n°2807
Fabrice971
Profil : Membre
Posté le 12-01-2003 à 07:34:27  
 

Je ne comprends pas cette insistance pour ne pas utiliser le type char ..... long est un entier sur 32 bits , short est un entier sur 16 bits , et char un entier sur 8 bits ... char est un entier , et donc il utilise un entier .......  
 
à propos de void main(void) {}
Je veux bien te croire à propos de l'option -Wall et d'un warning concernant ceci ... mais si tu me sites un seul exemple où , déclarer le main en void lorsqu'on n'a pas besoin de son code de retour , pose problème , je n'utiliserai plus jamais cette déclaration, dans aucun programme , et plus jamais de ma vie .....

n°2883
bugsan
Profil : Jeune recrue
Posté le 20-01-2003 à 03:19:18  
 

un truc clean ca aurait été
 
typedef unsigned char byte;
byte i,j;
 
(ahlala... mais ou sont les rigueurs d'ADA...)
 
voila le code de la fonction quicksort (récursive). la complexité en temps de l'algorithme est n(log n) ...  
(c'est du c++ avec généricité)
 

Code :
  1. #include<stdio.h>
  2. template <class GenericType>
  3. void echange(GenericType *tab,int i,int j) {
  4.    GenericType tampon;
  5.    tampon=tab[i];
  6.    tab[i]=tab[j];
  7.    tab[j]=tampon;
  8. }
  9. template <class GenericType>
  10. void trirapide(GenericType *tab, int G, int D) {
  11.    int g,d;
  12.    GenericType val;
  13.    
  14.    if(D<=G) {return;}
  15.    
  16.    val=tab[D];
  17.    g=G-1;
  18.    d=D;
  19.    
  20.    do {
  21.       while(tab[++g]<val);
  22.       while(tab[--d]>val &&(d>G));
  23.   if(g<d) echange(tab,g,d);
  24.    } while(g<d);
  25.    
  26.    echange(tab,g,D);
  27.    
  28.    trirapide(tab,G,g-1);
  29.    trirapide(tab,g+1,D);
  30. }
  31. void main() {
  32. int tableau[10] = {5,4,3,2,6,9,10,5,2,0};
  33. trirapide(tableau,0,9);
  34. for(int i=0;i<10;i++) printf("%d; ",tableau[i]);
  35. }


n°2884
Fabrice971
Profil : Membre
Posté le 20-01-2003 à 04:18:53  
 

Ton tri est sans doute écrit de façon très clean .... mais totalement hors sujet : 1/ l'énoncé du sujet était tri bulle 2/ le programme devait être écrit en C , pas en C++
 
Bref , encore un qui veut se faire mousser ... zap

n°2889
bugsan
Profil : Jeune recrue
Posté le 20-01-2003 à 14:02:56  
 

roh la mauvais foi :)
le seul code c++ du programme c'est les template, c'est remplaçable :)
et puis c'est le meilleur tri question vitesse que je connaisse, je pensais aider, mais bon...
 
ah oui je tenais à signaler pour le void main() qui compile : test la compilation sous gnu/gcc pour linux :)
(merde moi aussi j'ai mis un void main()... je suis fait :p)
 
le C est vraiment un programme trop laxiste, c'est pour ca qu'il y a tant de bug dans les programmes : on peut compiler des anneries :)
si il y a bien qqchose que l'on apprend avec l'experience, c'est que compiler sans warning/error ça ne rime pas avec un programme qui marche...


Message édité par bugsan le 20-01-2003 à 14:11:53
n°2904
rantanplan
Fuoco dell'Etna
Profil : Fossile
Posté le 21-01-2003 à 20:07:18  
 

je rappelle que j'ai fait ce prog alors que j'avais a peine un mois de C derriere moi :sarcastic:


---------------
[:rantanplan]
n°3112
neantissim​e
Profil : Jeune recrue
Posté le 06-02-2003 à 09:31:58  
 

à propos des structures en c

n°3113
neantissim​e
Profil : Jeune recrue
Posté le 06-02-2003 à 09:36:53  
 


do
{
for(i=1;i<=(nb-1);i++)
{
if(tab[i]>tab[i+1])
{
echo=1
ech=tab[i]
tab[i]=tab[i+1]
tab[i+1]=ech
}
}
}while(ech==1);

n°20271
bazvindous
Profil : Jeune recrue
Posté le 17-02-2013 à 13:18:11  
 

Rantanplan, aide moi svp. Merci pour ton programme il marche tres bien. je veux trier un tableau, mais le probleme c'est que je ne sais comment programmer pour que le programme demande  l'utilisateur entrer les valeurs du tableau,apres de les trier. Merci pour votre aide.

n°20272
rantanplan
Fuoco dell'Etna
Profil : Fossile
Posté le 17-02-2013 à 15:53:50  
 

Un ptit 'up de 11 ans waaah !
 
Désolé je ne peux pas t'aider, ca doit bien faire 9 ans que je n'ai pas touché au C :D
 
(par contre j'prends un coup de vieux là !!!)


Message édité par rantanplan le 17-02-2013 à 15:54:52

---------------
[:rantanplan]
n°20273
sthv
Sagesse en cours....
Profil : No Life
Posté le 17-02-2013 à 16:49:16  
 

:rofl:  
 
Au moins il y a une certaine stabilité dans les interlocuteurs ;)


---------------
Modo slovaque
n°20274
bazvindous
Profil : Jeune recrue
Posté le 17-02-2013 à 17:56:57  
 

Personne d'autre peux m'aider svp????

 Page :   1  2
Page Suivante
© 2000-2024 Forum.rue-montgallet.com - Tous droits réservés