Bonjour,
Je suis entrain de plancher sur un problème de multiplication matricielle en language assembleur, où l'on initialises 2 matrices (compatibles pour la multiplication) et stocke le résultat dans une troisième.
Chaque élément (entier) est codé sur 1 byte (requis dans mes spécifications), et je me suis mis en tête de créer une interface C++ (2 fonctions séparées) permettant:
1.) d'initialiser les matrices via le prompt utilisateur
2.) de les afficher sur le terminal
Je me heurte à deux problèmes, dont 1 que je n'arrives pas à résoudre.
Avec C++ (en tout cas pour mon architecture) je ne sais pas utiliser de type entier codé sur 8bits... pour l'initialisation, je "trompes" donc le compilateur en lui annoncant que je travailles sur un tableau de char (1byte) en 2 dimension, une fois la valeur d'une case initialisée, j'en soustrait la valeur 48 afin de recupérer un motif binaire correspondant à l'entier rentré...c'est pas joli mais ca marches, pour l'affichage, je fait un cast (int) devant le caractère. Je ne suis pas sur s'il existe une solution plus élégante?
Mon vrai problème c'est que je dois toujours préciser la taille de la deuxième dimension de ma matrice de char (par exemple: char v[][DIM]) et donc je dois créer autant de fonctions d'affichage et d'initialisation que j'ai de matrice de taille differentes.. Y aurait-il un moyen de ne pas devoir préciser la taille de la 2ème dimension (et de la passer en parametre)?
Merci d'avance,
Sedrik
Pour info, voici le code des fonctions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include <iostream> using namespace std; extern "C" void initMat(char v[][3], int ligne, int colonne) { cout << "Enter lines: " << endl; for (int i= 0; i< ligne; ++i) for (int j= 0; j< colonne; ++j) { cin >> v[i][j]; v[i][j]-=48; } } extern "C" void affMat(char v[][3], int ligne, int colonne) { for (int i= 0; i< ligne; ++i) { for (int j= 0; j< colonne; ++j) cout << (int) v[i][j] << " "; cout << endl; } }
Partager