I'm doing a program that transforms an array into a transposed array. I'm using 3 functions because I want to learn how to pass parameters from arrays .
The main()
function calls the mValores
function that prompts the user for the number of rows and columns in the array and assigns the value of each element of that array.
The function mValores
in turn passes the parameters matrix, rows, columns; for the mTransposta
function that receives the locations of those variables in the *A, *m, *n
pointers.
#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 mTransposta
function. I wanted to assign the values that are in the array variable [rows] [columns] which is in the mValores()
function to the matrizTransposta [*m] [*n]
variable that is in the mTransposta()
function through the *A
pointer.