0

MIPS のアドレスに保存された 2 次元整数配列 A(長さ m、幅 n) があります。この配列から、配列 A のゼロ以外の値のみを含む別の配列 B を作成したいと思います。疑似コードの観点からそれを実装するにはどうすればよいでしょうか?

私の考えは、配列 A を行ごとに (各行を 1 次元配列として) トラバースすることです。これは、配列 A を n 個の 1 次元配列に分割し、for ループでゼロ以外の要素を除外することを意味します。

このアプローチは信頼できると思いますか?

4

1 に答える 1

0

2 次元配列は実際にはメモリ内の 1 次元配列にすぎないため、特定の順序でループすることを気にしない場合は、メモリ内の配列をループして(m*n)いくつかの命令を保存できます。それ以外の場合は、あなたが言ったように行ごとにトラバースできます。

私が使用する基本的なアイデアは、配列 B にスタックへのプッシュをシミュレートさせることです。これにより、最後にいくつかのゼロが残り、ゼロ以外の「スタック」のサイズが得られます。配列に要素を追加するたびに、「スタック」サイズが増加します。

疑似コード:

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++;
    }
}

ここから、これを MIPS に変換する方法を理解していただければ幸いです。

于 2016-05-24T15:10:55.747 に答える