0

したがって、このプログラムは、入力したものを入力し、それらをマトリックス形式で出力することになっています。これまでのコードは次のとおりです。

#include <iostream>
#include <string>

using namespace std;

#define N 6


//
// fill:
//
void fill(string s, int M[][N], int ROWS, int COLS)
{
int i, r, c;

for (i=0, r=0; r < ROWS; r++)
{
    for (c=0; c < COLS; c++)
    {
  M[r][c] = s[i];  // store ith character into matrix:

  i++;  // next character:
  if (i == s.length())  // start-over if that was last char:
    i = 0;
    }
}
 }

void print(int M[][N], int ROWS, int COLS)
{

string s;
getline(cin,s);
    int r, c;
for(r=0; r< ROWS; r++)
{
for(c=0; c < COLS; c++)
{


cout<<(char)M[r][c];


}

 cout <<endl; 
}
}
//
// main:
//
int main()
{
string s;
int  M[N][N];
int  M2[N][N];
int  row, col, ROWS, COLS;


ROWS = sizeof(M) / sizeof(M[0]);
COLS = sizeof(M[0]) / sizeof(M[0][0]);

fill(s, M, 1, 1);
print(M, ROWS, COLS);

return 0;
}

入力した文字の代わりにランダムな文字を出力する理由は何ですか?

4

3 に答える 3

0

これを試して、

#include <iostream>
#include <string>

    using namespace std;

    #define N 6

    void fill(string s, char (&arr)[N][N])
    {
        int char_index =0;
        for (int i=0; i < N; i++)
        {
            for (int j=0; j < N; j++)
            {
                arr[i][j] = s.at(char_index);           
                if (char_index+1 == s.size()){
                    char_index =0;
                }else{
                    char_index++;
                }               
            }
        }   
    }

    void print(char arr[][N])
    {
        cout << "--------------" << endl;
        int char_index =0;
        for (int i=0; i < N; i++)
        {
            for (int j=0; j < N; j++)
            {
                cout << arr[i][j] << " ";
            }
            cout << endl;
        }
        cout << "--------------" << endl;

    }

    int main()
    {
        string s ="";
        cout << "Enter your string:";
        getline(cin,s); 
        char M[N][N];
        fill(s,M);
        print(M);
        system("pause");
        return 0;
    }
于 2013-03-22T06:46:36.773 に答える
0

ここでは、入力を整数配列に格納し、文字値を表示しようとしています。

ステートメント cout<<(char)M[r][c] は、M[r][c] の整数値に対応する ASCII 値を提供します。

それはあなたが見ているランダムな文字かもしれません. 代わりに文字配列を直接使用して、直接呼び出して出力を試すことができます:cout<< M[r][c]

于 2013-03-22T04:00:55.413 に答える
0

まず、文字列を fill 関数に渡す前に初期化していません。次に、文字列を int に挿入しようとしています。C++ では、これを直接行うことはできません。

「123456」などの文字列を [1,2,3,4,5,6; に分割しようとしていますか? 1,2,3,4,5,6;...]など?これはあなたのプログラムでやりたいことですか?

于 2013-03-22T03:36:14.677 に答える