0
int lineInputs = 0;

cin >> lineInputs;

int whatever = 0;

char* myArray = new char[arrayElements*lineInputs];

int j =0;

for(int i = 0; i < lineInputs; i++)
{
        cin >> whatever;
    for(j; j<total; j+=39)
    {
        for(int nom=0; j<arrayElements; nom++)
        {
            cin >> myArray[j];
        }
    }

}

私のforloopで、私が持っているlineInputs = 4と言うtotal = 156

これを 4 回行うということは、配列に 156 文字を挿入したいということです。しかし、40 文字ごとに配列に入力し続けるようにしたいと考えています。

基本的に、この入力を配列に挿入する必要がありますが、forloops が台無しになっているように感じます。これが入力になります

4 
1 
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 
2 
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT 
3 
HHTTTHHTTTHTHHTHHTTHTTTHHHTHTTHTTHTTTHTH 
4 
HTHTHHHTHHHTHTHHHHTTTHTTTTTHHTTTTHTHHHHT

最初の行 4 は、これらの 40 文字行のうちの 4 つを意味します。そして、文字行の上の数字は、行 1 2 3 4 などを意味します。

どうすればこの権利を試すことができますか?

したがって、配列は基本的に次のようになります。

HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTHHTTTHHTTTHTHHTHHTTHTTTHHHTHTTHTTHTTTHTHHTHTHHHTHHHTHTHHHHTTTHTTTTTHHTTTTHTHHHHT

4

1 に答える 1

1

入力配列を正しく処理できないという、他の質問で犯したのと同じ基本的な間違いを犯しています。の最初の 40 文字を繰り返し読み込んでいmyArrayます。必要なことは、最初の行を最初の 40 文字に、2 行目を 40 から 79 文字に、というように読み取ることです。

さらによいのは、2 次元配列にして、インデックスの計算をいじる必要がないようにすることです。

さらに良いことに、 の配列ではstd::stringなく の配列にしcharます。

于 2012-12-28T11:50:44.607 に答える