Alguien sabe hacer la traspuesta de una matriz?
pues eso, el usuario define una matriz (tb define el nº de filas y columnas), y ala, a calcular la traspuesta, alguien sabria hacerlo???
Pero debo ingresar el numero de filas y columnas, luego los datos, transponerla, e imprimirla, ademas debe ser haber sido declarada dinamicamente con el malloc.
[email protected] .....GRACIAS
[email protected] .....GRACIAS
Te envio un programa para la trasposicion de una matriz dinamica.
Observa que la matriz debe ser cuadrada.
El programa esta escrito para C++ con new y delete.
Si quieres usar malloc, deberas usar tambien free y por supuesto cambiar las ordenes cout y cin, por las correspondientes en C.
// program matrix.cpp
// use dinamic matrix.
// este programa traspone una unica matriz.
#include <iomanip.h>
#include <iomanip.h>
#include <stdlib.h>
int GetDim()
{
int dim = -1;
while(dim <= 0)
{
cout << "get matrix dimention : ";
cin >> dim;
}
cout << endl;
return dim;
} // GET DIM
void Show(int *a,int N,char *msg)
{
cout << msg << " : " << endl << endl;
for(int i = 0;i < N;i++)
{
for(int j = 0;j < N;j++)
cout << setw(5) << a[N*i+j];
cout << endl;
}
cout << endl << endl;
} // SHOW
void Transposition(int *a,int N)
{
int holder;
for(int i = 1;i < N;i++)
for(int j = 0;j <= i-1;j++)
{
holder = a[N*i+j];
a[N*i+j] = a[N*j+i];
a[N*j+i] = holder;
}
} // TRANSPOSITION
void main()
{
int dim = GetDim();
int *a = new int[dim*dim];
randomize();
for(int i = 0;i < dim*dim;i++)
a[i] = random(30);
Show(a,dim,"source matrix");
Transposition(a,dim);
Show(a,dim,"transposed matrix");
cout << "end of program - good bye ! ! !" << endl;
delete []a;
} // MAIN
Observa que la matriz debe ser cuadrada.
El programa esta escrito para C++ con new y delete.
Si quieres usar malloc, deberas usar tambien free y por supuesto cambiar las ordenes cout y cin, por las correspondientes en C.
// program matrix.cpp
// use dinamic matrix.
// este programa traspone una unica matriz.
#include <iomanip.h>
#include <iomanip.h>
#include <stdlib.h>
int GetDim()
{
int dim = -1;
while(dim <= 0)
{
cout << "get matrix dimention : ";
cin >> dim;
}
cout << endl;
return dim;
} // GET DIM
void Show(int *a,int N,char *msg)
{
cout << msg << " : " << endl << endl;
for(int i = 0;i < N;i++)
{
for(int j = 0;j < N;j++)
cout << setw(5) << a[N*i+j];
cout << endl;
}
cout << endl << endl;
} // SHOW
void Transposition(int *a,int N)
{
int holder;
for(int i = 1;i < N;i++)
for(int j = 0;j <= i-1;j++)
{
holder = a[N*i+j];
a[N*i+j] = a[N*j+i];
a[N*j+i] = holder;
}
} // TRANSPOSITION
void main()
{
int dim = GetDim();
int *a = new int[dim*dim];
randomize();
for(int i = 0;i < dim*dim;i++)
a[i] = random(30);
Show(a,dim,"source matrix");
Transposition(a,dim);
Show(a,dim,"transposed matrix");
cout << "end of program - good bye ! ! !" << endl;
delete []a;
} // MAIN
ayer escribi dos veces este texto y las dos veces no
consegui enviarte la nota. expero tener mas exito
hoy.
para una matriz dada a[M][N], la transpuesta es otra
matriz b[N][M], tal que las columnas de b sean iguales
a las filas de a, y viceversa.
const int M = 2,N = 5;
int a[M][N] = {0,1,2,3,4,5,6,7,8,9}, b[N][M];
for(int i = 0;i < M;i++)
for(int j = 0;j < N;j++)
b[j][i] = a[i][j];
consegui enviarte la nota. expero tener mas exito
hoy.
para una matriz dada a[M][N], la transpuesta es otra
matriz b[N][M], tal que las columnas de b sean iguales
a las filas de a, y viceversa.
const int M = 2,N = 5;
int a[M][N] = {0,1,2,3,4,5,6,7,8,9}, b[N][M];
for(int i = 0;i < M;i++)
for(int j = 0;j < N;j++)
b[j][i] = a[i][j];
