2016-05-22 1 views
0

J'ai un tableau entier bidimensionnel A (longueur m, largeur n) enregistré à une adresse dans MIPS. En dehors de ce tableau, je voudrais créer un autre tableau B, qui ne contient que les valeurs non nulles de notre tableau A. Comment procéder pour implémenter cela du point de vue d'un pseudo-code?Comment procéder pour créer un nouveau tableau contenant les éléments non nuls d'un autre tableau bidimensionnel dans MIPS?

Mon idée est de traverser le tableau A ligne par ligne (avec chaque ligne comme un tableau à 1 dimension). Cela signifie subdiviser le tableau A en n tableaux 1-Dimensionnels et filtrer les éléments non-zéro avec une boucle for.

Cette approche semble-t-elle crédible?

+0

Est-ce que B est unidimensionnel ou bidimensionnel? Notez également qu'un tableau bidimensionnel est simplement un raccourci pour un tableau unidimensionnel de taille m * n. – qwr

+0

B est un tableau à une dimension. –

Répondre

0

Les tableaux bidimensionnels ne sont en réalité que des tableaux unidimensionnels en mémoire, donc si vous ne souhaitez pas boucler dans un ordre particulier, vous pouvez parcourir le tableau en mémoire (m*n) pour enregistrer quelques instructions. Sinon, vous pouvez parcourir rangée par rangée comme vous l'avez dit.

L'idée de base que j'utiliserais est que le tableau B simule une poussée vers une pile. Cela laissera des zéros à la fin et vous aurez la taille de la "pile" non nulle. Chaque fois que vous ajoutez un élément au tableau, vous augmentez la taille de la "pile".

psuedocode:

int b[m*n]; 

int b_size = 0; 
for (int i=0; i<m*n; i++) 
{ 
    if (a[i] != 0) 
    { 
     b[b_size] = a[i]; 
     b_size++; 
    } 
} 

Espérons que vous pouvez comprendre comment traduire cela en MIPS d'ici.