если оператор вложенный в оператор не будет работать - PullRequest
0 голосов
/ 04 февраля 2011

Я искал по всему интернету, но нигде не могу найти ответ на свою проблему. Я пытаюсь написать программу, которая найдет обратную матрицу 3х3, и пытаюсь настроить матрицу несовершеннолетних.

Код (это не весь код, а только часть, которая не работает):

for (int d = 0; d < rows; d++)  /** d is the row of the matrix of minors **/
{
    for (int m = 0; m < cols; m++) /** m is the column of matrix of minors **/
    {
        for (int i = 0; i < rows; i++) /** i is the row of the main martix **/
        {
            for (int j = 0; j < cols; j++) /** j is the column of the main matrix**/
            (d == i || m == j)? dothis = false : dothis = true;
                    /** This is to determin if the number at postion (i,j) is part
                      of the determent for the matrix of minors.  For postion (d,m)
                      of the matrix of minors, row d and colum m of the main matrix
                      are crossed out.**/

                if (dothis == 'true')
                {

                    /** postions for the determent matrix **/

                    detmin.set(mrtx.access(i,j), I, J);
                    /** this will set the determent matrix with the numbers
                      remaining from the cross-out prosecess. **/

                    I++;
                    J++;
                }

            }
        }

        detmin.display(3, 3); /** This makes sure the program did the 
                                if statement **/
        minor.set(detmin.twodert(), d, m);
        /** takes the determent of the determent matrix and puts it
          into the matrix of minors at posstion (d,m) **/

        cout << endl << endl;
    }
}

Программа соответствует требованиям, но когда я запускаю ее, программа отображает матрицу нулей 3x3. Я думаю, что внутреннее большинство утверждений if не распознается программой, и я понятия не имею, почему. Кто-нибудь знает, как я могу это исправить?

Редактировать Код теперь выглядит так же, как и выше, и все циклы работают. Это все еще не делает то, что я хочу, но я добился прогресса. Благодаря.

Ответы [ 5 ]

4 голосов
/ 04 февраля 2011

четвертый вложенный цикл

for (int j = 0; j < 0; j++)

никогда не выполняется. Посмотри на состояние ...

1 голос
/ 04 февраля 2011
  1. dothis == 'true'. Компилируется в C ++, но всегда имеет значение FALSE (true равно целочисленной константе 0x74727565, а логическое значение равно 0 (false) или 1 (true)).
  2. Вы никогда не устанавливаете dothis = true.
  3. Как уже упоминалось, самый внутренний цикл никогда не выполняется.
1 голос
/ 04 февраля 2011

'true' неверно.

Блок for (int j = 0; j <0; j ++) не будет выполняться, поскольку j равен нулю. Кроме того, почему вы увеличиваете блок IF? </p>

I++;
J++;

Эти значения сбрасываются в 0 при следующем достижении блока.

1 голос
/ 04 февраля 2011

Э-э, ты не имеешь в виду if (dothis)?

0 голосов
/ 05 февраля 2011

В самом внутреннем цикле отсутствуют фигурные скобки, поэтому в цикле выполняется только назначение dothis. Однако это назначение не является необходимым, поскольку его значение используется только один раз (и неправильно - его следует сравнивать с true, а не "true").

Вот лучший способ написать это:

            for (int j = 0; j < cols; j++) /** j is the column of the main matrix**/
            {
                    /** This is to determin if the number at postion (i,j) is part
                      of the determent for the matrix of minors.  For postion (d,m)
                      of the matrix of minors, row d and colum m of the main matrix
                      are crossed out.**/

                if (d == i || m == j)
                {

                    /** postions for the determent matrix **/

                    detmin.set(mrtx.access(i,j), I, J);
                    /** this will set the determent matrix with the numbers
                      remaining from the cross-out prosecess. **/

                    I++;
                    J++;
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...