[vc++ 6][win32] multiplicateur de matrices

Description

certains controles n'ont pas encore de fonctions : les radio

l'aide n'est pas complete.

certains résultats sont absurdes (par exemple, quand on click plusieurs fois sur "calculer !", on obtient des resultats différents que la fois précedente.

Source / Exemple :


/*
Auteur : Xs
Description : permet de multiplier deux matrices entres elles
Version : v1.1
Réalisé avec : VC++ 6
Date : 11/04/2002
Copyright : Domaine publique

commentaire : Les résultats ont l'air plutôt érronés avec des nombres décimaux..... voyez par vous
              meme, vous serez surpris. Sinon, pour les nombres entiers, ca marche a merveille.: 

  • /
/* commentaire v1.1 : merci a jecchi
  • /
#define WIN32_LEAN_AND_MEAN #include <windows.h> #include <stdio.h> #include "resource.h" char buffer[5]; double A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R; double resultA,resultB,resultC,resultD,resultE,resultF,resultG,resultH,resultI; char help[] = "A venir (Je ne sait pas comment on fait les retour-chariot (pour les edit-box))"; LRESULT CALLBACK HelpProc(HWND HelpDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CLOSE: EndDialog(HelpDlg,0); break; case WM_DESTROY: EndDialog(HelpDlg,0); break; case WM_INITDIALOG: SetDlgItemText(HelpDlg,IDC_HELPTEXT,help); break; case WM_COMMAND: switch(HIWORD(wParam)) { case BN_CLICKED: switch(LOWORD(wParam)) { case IDC_GOOUT: EndDialog(HelpDlg,0); break; } } break; default: return FALSE; } return FALSE; } LRESULT CALLBACK DlgProc(HWND DlgProc, UINT msg, WPARAM wParam, LPARAM lParam) { int nCmdShow; switch(msg) { case WM_CLOSE: DestroyWindow(DlgProc); break; case WM_DESTROY: PostQuitMessage(0); break; case WM_COMMAND: switch(HIWORD(wParam)) { case BN_CLICKED: switch(LOWORD(wParam)) { case IDC_KALK: { GetDlgItemText(DlgProc, IDC_A,buffer,5); sscanf(buffer,"%lf",&A); GetDlgItemText(DlgProc, IDC_B,buffer,5); sscanf(buffer,"%lf",&B); GetDlgItemText(DlgProc, IDC_C,buffer,5); sscanf(buffer,"%lf",&C); GetDlgItemText(DlgProc, IDC_D,buffer,5); sscanf(buffer,"%lf",&D); GetDlgItemText(DlgProc, IDC_E,buffer,5); sscanf(buffer,"%lf",&E); GetDlgItemText(DlgProc, IDC_F,buffer,5); sscanf(buffer,"%lf",&F); GetDlgItemText(DlgProc, IDC_G,buffer,5); sscanf(buffer,"%lf",&G); GetDlgItemText(DlgProc, IDC_H,buffer,5); sscanf(buffer,"%lf",&H); GetDlgItemText(DlgProc, IDC_I,buffer,5); sscanf(buffer,"%lf",&I); GetDlgItemText(DlgProc, IDC_J,buffer,5); sscanf(buffer,"%lf",&J); GetDlgItemText(DlgProc, IDC_K,buffer,5); sscanf(buffer,"%lf",&K); GetDlgItemText(DlgProc, IDC_L,buffer,5); sscanf(buffer,"%lf",&L); GetDlgItemText(DlgProc, IDC_M,buffer,5); sscanf(buffer,"%lf",&M); GetDlgItemText(DlgProc, IDC_N,buffer,5); sscanf(buffer,"%lf",&N); GetDlgItemText(DlgProc, IDC_O,buffer,5); sscanf(buffer,"%lf",&O); GetDlgItemText(DlgProc, IDC_P,buffer,5); sscanf(buffer,"%lf",&P); GetDlgItemText(DlgProc, IDC_Q,buffer,5); sscanf(buffer,"%lf",&Q); GetDlgItemText(DlgProc, IDC_R,buffer,5); sscanf(buffer,"%lf",&R); /*----------------------Fin du petit bout empreinté----------------------*/ resultA = A*J+D*K+G*L;// } resultB = B*J+E*K+H*L;// }// } resultC = C*J+F*K+I*L;// }// }// } resultD = A*M+D*N+G*O;// }// }// }// } resultE = B*M+E*N+H*O;// }// }// }// }// } // }// }// }// }// }// }// }// }// }// }// }/*Multiplication des matrices*/ resultF = C*M+F*N+I*O;// }// }// }// }// } resultG = A*P+D*Q+G*R;// }// }// }// } resultH = B*P+E*Q+H*R;// }// }// } resultI = C*P+F*Q+I*R;// }// } /*Si j'ai empreinté ces petits bouts de codes, c'est parce-que je ne savait pas comment convertir un int en float puis float => char*/ sprintf(buffer,"%.4f",resultA); SetDlgItemText(DlgProc,IDC_RESA,buffer); sprintf(buffer,"%.4f",resultB); SetDlgItemText(DlgProc,IDC_RESB,buffer); sprintf(buffer,"%.4f",resultC); SetDlgItemText(DlgProc,IDC_RESC,buffer); sprintf(buffer,"%.4f",resultD); SetDlgItemText(DlgProc,IDC_RESD,buffer); sprintf(buffer,"%.4f",resultE); SetDlgItemText(DlgProc,IDC_RESE,buffer); sprintf(buffer,"%.4f",resultF); SetDlgItemText(DlgProc,IDC_RESF,buffer); sprintf(buffer,"%.4f",resultG); SetDlgItemText(DlgProc,IDC_RESG,buffer); sprintf(buffer,"%.4f",resultH); SetDlgItemText(DlgProc,IDC_RESH,buffer); sprintf(buffer,"%.4f",resultI); SetDlgItemText(DlgProc,IDC_RESI,buffer); } break; case ID_AIDE_APROPOS: MessageBox (NULL, "Auteur : Xs\n\nDescription : permet de multiplier deux matrices\n\tentres elles\n\nLanguage : C++\n\nRéalisé avec : VC++ 6\n\nDate : 11/04/2002\n\nCopyright : Domaine publique" , "Matmul !", 0 + MB_ICONASTERISK); break; case ID_AIDE_ALAIDE: { DlgProc = CreateDialog(NULL,MAKEINTRESOURCE(IDD_DIALOG2), NULL, (DLGPROC) HelpProc); ShowWindow(DlgProc, nCmdShow); UpdateWindow(DlgProc); } break; case IDCANCEL: DestroyWindow(DlgProc); break; } } break; default: return FALSE; } return FALSE; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HWND hDlg; MSG Msg; HMENU menu; hDlg = CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC) DlgProc); menu = LoadMenu(hInstance,MAKEINTRESOURCE(IDR_MENU1)); SetMenu(hDlg,menu); if(hDlg == NULL) { MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); return 0; } ShowWindow(hDlg, nCmdShow); UpdateWindow(hDlg); while(GetMessage(&Msg, NULL, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return Msg.wParam; }

Conclusion :


bonne correction !!!

Codes Sources

A voir également

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.