#include <stdio.h>
/* copiamatrizparavetor
* Recebe a matriz, as dimensoes (m = altura, n = largura)
* e devolve o vetor-alvo, de tamanho m x n.
*/
void copiamatrizparavetor(int** matriz, int m, int n, int* vetornovo)
{
for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j)
vetornovo[i * n + j] = matriz[i][j];
}
int main(int argc, char* argv[])
{
int m, n;
// Entro as dimensoes da matriz e do vetor.
// m e a altura, n e a largura.
fflush(stdin);
scanf("%d %d", &m, &n);
if (m > 0 && n > 0)
{
// Declaro aqui a matriz e o vetor.
int matriz[m][n], vetor[m * n];
// Entro os valores da matriz.
for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j)
scanf("%d", &matriz[i][j]);
// Copio o conteudo da matriz para o vetor.
copiamatrizparavetor(matriz, m, n, vetor);
// Imprimo o vetor.
for (int k = 0; k < m * n; ++k)
{
// Imprimo o espaco, delimitador de coordenadas do vetor.
if (k > 0)
{
printf(" ");
}
// Imprimo a coordenada atual do vetor.
printf("%d", vetor[k]);
if (k % n == 0)
{
// Quebro a linha para formatar o vetor em
// formato de matriz.
printf("\n");
}
}
// Quebro a linha no final do processamento, para
// deixar mais legivel.
printf("\n");
}
}
I understood your code, but when it comes to compiling it is giving error.
– Ramilson Silva
invalid Conversion from 'void*' to 'int*' [-fpermissive]
– Ramilson Silva
To solve this error, it remains to put the cast in front of the
malloc()
:(int*)malloc( n * m * sizeof(int) );
– Marcelo Shiniti Uchimura
@Ramilsonsilva: Corrected!
– Lacobus