Создать базовую матрицу в C (ввод пользователя!) - PullRequest
6 голосов
/ 06 мая 2010

Я пытаюсь попросить пользователя ввести желаемое количество столбцов и строк в матрице, а затем ввести значения в матрицу ... Я собираюсь позволить им вставлять числа по одной строке за раз .

Как я могу создать такую ​​функцию?

#include<stdio.h>
main(){

int mat[10][10],i,j;

for(i=0;i<2;i++)
  for(j=0;j<2;j++){
  scanf("%d",&mat[i][j]);
  } 
for(i=0;i<2;i++)
  for(j=0;j<2;j++)
  printf("%d",mat[i][j]);

}

Это работает для ввода чисел, но отображает их все в одну строку ... Проблема в том, что я не знаю, сколько столбцов или строк хочет пользователь, поэтому я не могу распечатать% d% d% д в матричной форме ...

Есть мысли?

Спасибо:)

Ответы [ 7 ]

11 голосов
/ 06 мая 2010

Как насчет следующего?

Сначала спросите пользователя о количестве строк и столбцов, сохраните, скажем, nrows и ncols (то есть scanf("%d", &nrows);), а затем выделите память для двумерного массива размера nrows x ncols . Таким образом, вы можете иметь матрицу размера, указанного пользователем, но не фиксированную в некотором измерении, которое вы жестко закодировали!

Затем сохраните элементы с помощью for(i = 0;i < nrows; ++i) ... и отобразите элементы таким же образом, за исключением того, что вы добавляете символы новой строки после каждой строки, т.е.

for(i = 0; i < nrows; ++i)
{
   for(j = 0; j < ncols ; ++j) 
   {
      printf("%d\t",mat[i][j]);
   }
printf("\n");
}
3 голосов
/ 06 мая 2010

Вам нужно динамически распределить вашу матрицу. Например:

int* mat;
int dimx,dimy;
scanf("%d", &dimx);
scanf("%d", &dimy);
mat = malloc(dimx * dimy * sizeof(int));

Это создает линейный массив, который может содержать матрицу. На этом этапе вы можете решить, хотите ли вы получить доступ к этому столбцу или строке в первую очередь. Я бы предложил сделать быстрый макрос, который вычисляет правильное смещение в матрице.

1 голос
/ 05 апреля 2016

Это мой ответ

#include<stdio.h>
int main()
{int mat[100][100];
int row,column,i,j;
printf("enter how many row and colmn you want:\n \n");
scanf("%d",&row);
scanf("%d",&column);
printf("enter the matrix:");

for(i=0;i<row;i++){
    for(j=0;j<column;j++){
        scanf("%d",&mat[i][j]);
    }

printf("\n");
}

for(i=0;i<row;i++){
    for(j=0;j<column;j++){
        printf("%d \t",mat[i][j]);}

printf("\n");}
}

Я просто выбираю приблизительное значение для строки и столбца. Моя выбранная строка или столбец не будут пересекать значение. Затем я сканирую матричный элемент и делаю его в матричном размере.

1 голос
/ 05 марта 2011
#include<stdio.h>
int main(void)
{  
int mat[10][10],i,j;

printf("Enter your matrix\n");  
for(i=0;i<2;i++)
  for(j=0;j<2;j++)
  {  
    scanf("%d",&mat[i][j]);  
  }  
printf("\nHere is your matrix:\n");   
for(i=0;i<2;i++)    
{  
    for(j=0;j<2;j++)  
    {  
      printf("%d ",mat[i][j]);  
    }  
    printf("\n");  
  }  

}
1 голос
/ 06 мая 2010

нужна

for(i=0;i<2;i++)
{
  for(j=0;j<2;j++)
  {
     printf("%d",mat[i][j]);
  }
  printf("\n");
}
0 голосов
/ 17 октября 2017
//R stands for ROW and C stands for COLUMN:

//i stands for ROW and j stands for COLUMN:

#include<stdio.h>

int main(){

    int M[100][100];

    int R,C,i,j;

    printf("Please enter how many rows you want:\n");

    scanf("%d",& R);

    printf("Please enter how column you want:\n");

    scanf("%d",& C);

    printf("Please enter your matrix:\n");

    for(i = 0; i < R; i++){

        for(j = 0; j < C; j++){

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

        }

        printf("\n");

    }
    for(i = 0; i < R; i++){

        for(j = 0; j < C; j++){

            printf("%d\t", M[i][j]);

        }
        printf("\n");

   }

   getch();

   return 0;
}
0 голосов
/ 19 января 2017
int rows, cols , i, j;
printf("Enter number of rows and cols for the matrix: \n");
scanf("%d %d",&rows, &cols);

int mat[rows][cols];

printf("enter the matrix:");

for(i = 0; i < rows ; i++)
    for(j = 0; j < cols; j++)
        scanf("%d", &mat[i][j]);

printf("\nThe Matrix is:\n");
for(i = 0; i < rows ; i++)
{
    for(j = 0; j < cols; j++)
    {
        printf("%d",mat[i][j]);
        printf("\t");
    }
    printf("\n");
}

}

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