0

私は、理論的には scelta1=1 の場合に、最初に初期化された配列を再割り当てする特定の関数を開く必要があるプログラムを持っています。問題は、プログラムが switch ケースに入ると、scelta1=1 が表示されますが、再割り当てされず、「配列の要素 [1][1] を挿入」「配列の要素 [1][2] を挿入」と表示されるだけです。それらを挿入させてもらいましたが、最初はそうでしたので、問題は機能にないと仮定します。

要約すると、ケース内でループせず、関数が正しいときに配列に新しい番号を挿入する理由を知りたいです。ありがとうございました

これはプログラムです:

#include <stdio.h>
#include <stdlib.h>
#include "matrici.h"
#define N 3

void leggi_matr(int MAT[N][N], int nRighe, int nColonne)  // The function 
{
    int i;
    int j;
    for (i=0 ; i<nRighe ; i ++)
        for (j=0 ; j<nColonne ; j ++)
        {
            printf("\nInserisci l'elemento [%d][%d] da inserire nella matrice :  ", i+1,j+1);

            scanf("%d", & MAT[i][j]);
        }
}

 int A[N][N];
 int B[N][N];
 int C[N][N];

int main (){

    int nRighe = 3;
    int  nColonne = 3;
    int scelta = 1;
    char scelta1 = 0; 

    printf ("Inserimento matrice A\n\n");
    leggi_matr(A, nRighe, nColonne);

    printf ("\n\nInserimento matrice B\n\n");
    leggi_matr(B, nRighe, nColonne);



      switch (scelta) /* I know in this case it doesn't need a switch, i need it for                           
    {                  another thing */
           case 1:
                printf ("\n\nDo you want to insert array A or B?  "); 
                scanf ("%c", &scelta1);
                if (scelta1 == 'A')
                {
                    leggi_matr(A, nRighe, nColonne);
                }    
                else 
                {
                    leggi_matr(B, nRighe, nColonne);
                }

                break;

    }




printf("\n\n\n");
system("PAUSE");
return 0;
}
4

3 に答える 3

0

Net-beans のような優れた IDE を使用します。この種の問題のほとんどを示しています。このコード スニペットの変更を使用します。

scanf("%c", &scelta1);
if(scelta1 == 'A')
{

}

いいえ

  if (scelta1 == A)  
  {  //code 

  } 

配列ポインタと整数を比較しています。

于 2013-10-21T15:30:42.190 に答える