1
I’m doing a program that transforms a matrix into a transposed matrix. I am using 3 functions because I want to learn how to pass parameters of arrays.
The function main()
calls the function mValores
that asks the user the number of rows and columns of the matrix and assigns the value of each element of that matrix.
The function mValores
in turn passes the parameters matrix, rows, columns; for the function mTransposta
that receives the locations of these variables in the pointers *A, *m, *n
.
#include <stdio.h>
#include <stdlib.h>
//Tipo de matriz e seus valores
void mValores()
{
//Declaração de variáveis
int i, j; // i: Contador de linhas; j: contador de colunas;
int linhas, colunas;
//Definindo o tipo de matriz
printf("\nDigite a quantidade de linhas: \n");
scanf("%d", &linhas);
printf("Digite a quantidade de Colunas: \n");
scanf("%d", &colunas);
int matriz [linhas] [colunas]; //Declaração do array bidimensional
//Mostrando o tipo de matriz
printf("Matriz do tipo: %dx%d ", linhas, colunas);
if(linhas == colunas){
printf("(Matriz quadrada).");
}
else if(linhas == 1 && colunas > 1){
printf("(Matriz linha).");
}
else if(linhas > 1 && colunas == 1){
printf("(Matriz coluna).");
}
printf("\n");
for(i = 0; i < linhas; i++){
for(j = 0; j < colunas; j++){
printf("a%d%d ", i + 1, j + 1);
}
printf("\n");
}
//Atribuindo os valores da matriz
printf("Digite os valores de: \n");
for(i = 0; i < linhas; i++){
for(j = 0; j < colunas; j++){
printf("a%d%d ", i + 1, j + 1);
scanf("%d", &matriz [i] [j]);
}
}
printf("\n");
//Mostrando os valores da matriz
for(i = 0; i < linhas; i++){
for(j = 0; j < colunas; j++){
printf("%4d",matriz [i] [j]);
}
printf("\n");
}
printf("\n");
mTransposta(matriz , linhas, colunas);
}
void main()
{
//Declaração de variáveis
char end;
printf("\n***CALCULOS DE MATRIZES*** \n");
do{
printf("\nMatriz Transposta\n");
mValores();
printf("\nDigite 1 para sair ou digite qualquer outro numero para Continuar:\n");
scanf("%d", &end);
}while (end != 1);
}
void mTransposta(int *A, int *m, int *n) // A = matriz, m = linhas, n = colunas
{
int i, j;
*matrizTransposta [*m] [*n] = A;//Atribuição do local da variável matriz para variável matrizTransposta
for(i = 0; i < *n; i++){
for(j = 0; j < *m; j++){
printf("%4d",matrizTransposta [j] [i]);
}
printf("\n");
}
}
The problem is in the function mTransposta
. I wanted to assign the values that are in the matrix variable [rows] [columns] that is in the function mValores()
to the variable matrizTransposta [*m] [*n]
function mTransposta()
through the pointer *A
.
vc could explain to me pq put in mTransput the parameter matrix [] [columns]. pq no matrix [rows] [columns] or matrix [rows] []?
– user92392
Could have put the
linhas
also, columns are mandatory for the compiler to be able to account for the element to be accessed, because in fact it is not in memory is not an array is an organized array to look like an array.– Maniero