Du pseudo aleatoire et tri a bulles.
Commentaires dans source.
Tout dans zip pour recompiler.
Source / Exemple :
#include <windows.h>
#include "resource.h"
#include "FncAsm.h"
HINSTANCE hinst;
HWND hcmb, hres;
DWORD nbrs[10];
char szbuff[52];
void Tirage()
{
long count, i, pos = 0;
DWORD num;
char *c;
srand(GetTickCount());
count = SendMessage(hcmb, CB_GETCURSEL, 0, 0) + 6;
// REMPLISSAGE TABLEAU
while(pos < count) {
num = ((DWORD)rand() % 49) + 1;
i = pos; // TEST D'UNICITE
while(--i >= 0) if(nbrs[i] == num) break;
if(i < 0) nbrs[pos++] = num; // SI ABSENT, ON INSERE
}
// TRI ORDRE CROISSANT
i = count - 1;
while(i--) {
pos = -1;
while(pos++ < i) {
if(nbrs[pos] < nbrs[pos+1]) {
num = nbrs[pos]; nbrs[pos] = nbrs[pos+1]; nbrs[pos+1] = num;
}
}
}
// RESULTATS DANS szbuff
i = count; c = szbuff-3;
while(--i >= 0) {
num = nbrs[i];
__asm mov ecx, c
__asm mov eax, num
__asm add ecx, 3
c = bnultoa();
- c = 32; *(c+1) = '-'; *(c+2) = 32;
}
- c = 0; SetWindowText(hres, szbuff); // AFFICHAGE
}
void InitCmb()
{
DWORD i = 6;
while(i < 11) {
__asm mov ecx, offset szbuff
__asm mov eax, i
bnultoa();
i++;
SendMessage(hcmb, CB_ADDSTRING, 0, (long) szbuff);
}
SendMessage(hcmb, CB_SETCURSEL, 0, 0);
}
BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{
switch(mssg) {
case WM_INITDIALOG:
SetClassLong(hdlg, GCL_HICON,
(long)LoadIcon(hinst, MAKEINTRESOURCE(IDI_APP)));
hcmb = GetDlgItem(hdlg, IDCMB_NBR);
hres = GetDlgItem(hdlg, IDST_RES);
InitCmb();
return 1;
case WM_COMMAND:
switch(wParam) {
case IDBT_TIR:
Tirage();
return 0;
case IDCANCEL: EndDialog(hdlg, 0);
}
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
hinst = hInstance;
DialogBox(hInstance, MAKEINTRESOURCE(IDD_APP), NULL, AppDlgProc);
return 0;
}
Conclusion :
bnultoa() est dans FncAsm.cpp
Ne pas regarder si ASM herisse les poils.
ciao...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.