2017-09-25 7 views
0

配列の新しい要素ごとにリストを作成する必要があります。たとえば、(1,2,3,4,5)を入力し、(6,7,8,9,10)と入力すると、(void view)で表示する必要があります。私は、Nは1がそれらをプリントアウトする前に取ることができ、入力の最大数で、マックスは数あるサイズN *最大の行列を言う、あなたはあなたがバッファ内に以前の入力を格納する必要があります配列要素のリストを作成するには?

#include <stdio.h> 
#define MAX 5 
int a[MAX]; 
int x, s; 

void view() { 
    for(x = 0; x < MAX; x++) { 
     printf("%d. %d" , s, a[x]); 
    } 
} 
int main() { 
    int run=1; 
    while(run) { 
     char choice; 
     scanf(" %c", &choice); 
     if(choice=='e') { 
       for(x=0; x<MAX; x++) { 
        printf("\n"); 
        printf("\tEnter value: "); 
        scanf("%d", &a[x]); 
       } 
     } 
     else if(choice=='v') { 
      view(); 
     }  
    } 
} 
+1

正確に何が問題なのですか? *それを読む方法、またはそれを印刷する方法* –

+0

@EugeneSh。はい、新しい要素を印刷するたびに古いものは消えます。私が言ったように、私は古いプリントを保つために一種のリストが必要です –

+0

それでは、より大きな配列が必要です。受け入れ可能なサイズ(例えば、[65536])に配列を宣言するか、またはmalloc/reallocを使って動的に割り当てられた配列を拡張します。 –

答えて

2

を理解してほしいです入力時間ごとに整数の

`

#define Max 5 
#define N 10 
int a[N][MAX]; 

void view(int counter){ 
    for(int i=0;i<=counter;i++){ 
     for(int j=0;j<MAX;j++){ 
      printf("%d\t",a[i][j]); 
      } 
     printf("\n"); 
     } 
    } 

void main(){ 

while(1){ 
    int counter = 0; 
    char choice; 
    scanf("%d",&choice); 
    if(choice=='e'){ 
     for(int i=0;i<MAX;i++){ 
      printf("Enter A no\n"); 
      scanf("%d",&a[counter][i]); 
     } 
     counter++; 
    } 
    else if(choice =='v') 
     view(counter); 

} 
} 

`

+0

'void main()'本当ですか? – Michi

0

あなたはMAXRUN行と列MAX、のは言わせ、からなる、2次元アレイを作成する必要があります。入力した行数をカウントするためにsを導入したようですので、あなたのコードはすでにこれを準備しているようです。次のコードはあなたのために働くはずです。それが役に立てば幸い:

#define MAX 5 
#define MAXRUN 5 
int a[MAXRUN][MAX]; 
int x, s; 

void view() { 
    for (int r = 0; r < s; r++) { 
     printf("\n%d. run:", r+1); 
     for(x = 0; x < MAX; x++) { 
      printf("%d ", a[r][x]); 
     } 
    } 
} 

int main() { 
    s=0; 
    while(s < MAXRUN) { 
     char choice; 
     printf("\nchoose (e)nter or (v)iew:"); 
     scanf(" %c", &choice); 
     if(choice=='e') { 
      for(x=0; x<MAX; x++) { 
       printf("Enter value: "); 
       scanf("%d", &a[s][x]); 
      } 
      s++; 
     } 
     else if(choice=='v') { 
      view(); 
     } 
    } 
} 
0

必要なものは、2次元配列です。 1次元では、このようなものになります。

arr[5]={1,2,3,4,5}; 

をし、2次元配列は、次のようになります。

arr[5][2]={ {1,2,3,4,5} 
      {6,7,8,9,10} }; 

ちょうどこのコードを使用するにはあなたのinsted:

#include <stdio.h> 
#define ROW 5 
#define COL 5 
int a[ROW][COL]; 

void view() { 
    int i,j; 
    for(i = 0; i < ROW; x++) { 
     for(j = 0; j < COL; j++) { 
      printf("%d" , a[i][j]); 
     } 
    printf("\n"); 
    } 
} 
int main() { 
    int run=1,i,j; 
    while(run) { 
     char choice; 
     scanf(" %c", &choice); 
     if(choice=='e') { 
       for(i=0; i<ROW; i++) { 
        printf("\nList of elements for array %d:",i); 
        for(j=0; j<COL; j++) { 
         printf("\n"); 
         printf("\tEnter value: "); 
         scanf("%d", &a[i][j]); 
        } 
       } 
     } 
     else if(choice=='v') { 
      view(); 
     }  
    } 
} 

この意志1次元配列を5つまで取る。あなたがもっと必要な場合は、COLの値を増やす

関連する問題