AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Disque dur SSD CRUCIAL P3 1 To (3D NAND NVMe PCIe M.2)
65.91 €
Voir le deal

 

 tri dans l'ordre croissant

Aller en bas 
2 participants
AuteurMessage
glcraft
Utilisateur confirmé: Rang *****
glcraft


Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

tri dans l'ordre croissant Empty
MessageSujet: tri dans l'ordre croissant   tri dans l'ordre croissant EmptyDim 24 Oct 2010 - 12:07

voici un script que j'ai fait pour le faire en C++ :

Code:
ntruc=0
while(ntruc<argument0)
{
    for(i=0;i<argument0;i+=1)
    {
        if argument1[i]>argument1[i+1]
        {
            vari=argument1[i]
            argument1[i]=argument1[i+1]
            argument1[i+1]=vari
        }
        else
        ntruc+=1
       
    }
    if ntruc
        ntruc=0
    //screen_redraw()
    //sleep(100)
}
return argument1
argument0 : le nombre de valeur dans le tableau
argument1 : le tableau de valeur

voici l'exemple : Download ordre croissantr.gmk

et en C++ (pour ce que ca interresse)
Code:
int *tri_bulle(int num,int* tab)
{
    int step=0;
    int var=0;
    while (step
    {
        for(int i=0;i
        {
            if (tab[i]>tab[i+1])
            {
                var=tab[i];
                tab[i]=tab[i+1];
                tab[i+1]=var;
            }
            else
                step++;
        }
        if (step
        step=0;
    }
    return tab;
}
num : nombre de valeur dans le tableau (int)
tab : le pointeur du tableau de valeur (il faut qu'il soit allouer !) (int *)

tri_bulle parce que cette methode s'appelle le tri en bulle.

En revenche, je rapelle que le script GML que j'ai fait ne sert a rien car les listes sont faites pour ca, voici le proceder avec les listes :

créez la liste dans Create
Code:
list=ds_list_create()
ajouter des valeurs avec
Code:
ds_list_add(list,valeur)
et pour les remettre dans l'ordre :
Code:
ds_list_sort(list,1)//1 : ordre croissant; 0 : ordre décroissant
reprennez les valeurs :
Code:
valeur=ds_list_find_value(list,i)
et enfin detruisez la liste avec
Code:
ds_list_destroy(list)

et si on reprend mon script et qu'on inclus les listes, voila ce que ca donne :
Code:
list=ds_list_create()
for(i=0;i<num;i+=1)
{
ds_list_add(list,tab[i])
}
ds_list_sort(list,1)
for(i=0;i<nwin;i+=1)
{
tabreturn[i]=ds_list_find_value(list,i)
}
ds_list_destroy(list)
return tabreturn;

num=nombre de valeur
tab=tableau de depart
tabreturn=tableau de retour


Dernière édition par gabin49 le Dim 24 Oct 2010 - 23:59, édité 1 fois
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Mass
*Excellent utilisateur*
Mass


Messages : 3351
Localisation : Dans une canonnière wookie.
Projet Actuel : Monter des trucs et des machins

tri dans l'ordre croissant Empty
MessageSujet: Re: tri dans l'ordre croissant   tri dans l'ordre croissant EmptyDim 24 Oct 2010 - 23:02

jveux pas te casser, mais avec une liste ça supprime le besoin d'indiquer le nombre de valeur, et la fonction ds_list_sort fait tout le travail Wink

_________________
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
glcraft
Utilisateur confirmé: Rang *****
glcraft


Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

tri dans l'ordre croissant Empty
MessageSujet: Re: tri dans l'ordre croissant   tri dans l'ordre croissant EmptyDim 24 Oct 2010 - 23:49

mais en C++ ?
De base, li n'y a pas de liste, j'ai fait le script uniquement pour le C++.
En GML, il faut evidement utiliser les listes. Elles sont plus rapide et c'est deja inclus dans GM.
Je vais mettre un script dans le topic pour cela
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Contenu sponsorisé





tri dans l'ordre croissant Empty
MessageSujet: Re: tri dans l'ordre croissant   tri dans l'ordre croissant Empty

Revenir en haut Aller en bas
 
tri dans l'ordre croissant
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» objet visible dans une view et pas dans l'autre
» Créer instance aléatoirement sauf dans un mur ou dans la vue.
» bug dans le sol
» 3D dans du 2D
» Execution dos dans GM

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Scripts GML-
Sauter vers: