it-swarm.com.de

Erstellen Sie eine Basismatrix in C (Eingabe durch Benutzer!)

Ich versuche den Benutzer zu bitten, die gewünschte Anzahl von Spalten und Zeilen in eine Matrix einzugeben, und dann die Werte in die Matrix einzugeben ... Ich lasse die Zahlen Zeile für Zeile einfügen.

Wie kann ich eine solche Funktion erstellen?

#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]);

}

Dies funktioniert bei der Eingabe der Zahlen, zeigt sie jedoch alle in einer Zeile an. Das Problem hierbei ist, dass ich nicht weiß, wie viele Spalten oder Zeilen der Benutzer haben möchte. Daher kann ich% d% d% d in a nicht ausdrucken Matrixform ...

Irgendwelche Gedanken?

Vielen Dank :)

6
NLed

Wie wäre es mit dem Folgenden?

Bitten Sie den Benutzer zunächst nach der Anzahl der Zeilen und Spalten, speichern Sie diese in nrows und ncols (d. H. scanf("%d", &nrows);) und ordnen Sie dann Speicher für ein 2D-Array mit der Größe nrows x ncols zu. So können Sie eine Matrix mit einer vom Benutzer angegebenen Größe haben und nicht auf eine bestimmte Größe fixiert sein, die Sie fest codiert haben!

Speichern Sie dann die Elemente mit for(i = 0;i < nrows; ++i) ... und zeigen Sie die Elemente auf dieselbe Weise an, mit der Ausnahme, dass Sie nach jeder Zeile neue Zeilen einfügen, d. H.

for(i = 0; i < nrows; ++i)
{
   for(j = 0; j < ncols ; ++j) 
   {
      printf("%d\t",mat[i][j]);
   }
printf("\n");
}
11
Jacob

Sie müssen Ihre Matrix dynamisch zuordnen. Zum Beispiel:

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

Dadurch entsteht ein lineares Array, das die Matrix aufnehmen kann. An dieser Stelle können Sie entscheiden, ob Sie zuerst auf die Spalte oder Zeile zugreifen möchten. Ich würde vorschlagen, ein schnelles Makro zu erstellen, das den korrekten Versatz in der Matrix berechnet. 

3
Yann Ramin

Das ist meine Antwort

#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");}
}

Ich wähle nur einen ungefähren Wert für die Zeile und die Spalte. Meine ausgewählte Zeile oder Spalte wird den Wert nicht kreuzen. Dann scanne ich das Matrixelement und erstelle dann die Matrixgröße.

1
TonuSree

brauche 

for(i=0;i<2;i++)
{
  for(j=0;j<2;j++)
  {
     printf("%d",mat[i][j]);
  }
  printf("\n");
}
1
Keith Nicholas
#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
jeff
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");
}

}