Una matriz esta compuesta de filas(reng) y columnas(col), la matriz transpuesta es una matriz que cambia las columnas por las filas.
Implementé mi programa en C, de la siguiente forma:
Primero se incluye la librería <stdio.h> y enseguida defino la variable MAX y el doy un valor de 10, esto es para poder declarar la matriz y que tenga ese número máximo de filas y columnas, y podemos modificar ese valor máximo directamente en el código del programa.
Enseguida declaro mi función principal int main(int argc, char** args), y dentro de ella empiezo a escribir todo el código, se declaran las variables que voy a usar, todas son de tipo enteros tengo la variable matriz[MAX][MAX], reng, col, i=0 y j=0, matriz es el arreglo bidimensional que el usuario va a llenar, reng y col indical el numero de renglones y columnas que el usuario quiera, y la i y j se utilizan como auxiliares para ir leyendo las posiciones del arreglo, después también nos auxiliamos de ellas para imprimir la matriz original, y la matriz transpuesta.
Entonces ahora empiezo a leer los datos del usuario, con dos for uno cumple la función de ir llenando la fila y el otro de saltar al siguiente fila para que sea llenada, es posible que se preste a confusión, la parte de mi código en donde pido al usuario que inserte una valor para cada posición del arreglo ya que tengo "i+1" y "j+1", es simplemente para que se vea "bonito", si no el código empezaría diciendo "Escriba los valores [0][0]", para mi es mejor que se vea [1][1], después de que se cumple el ciclo de llenado, ahora se pasa a la rutina para imprimir los valores de forma de una matriz, para que el usuario pueda comparar la matriz original a la matriz transpuesta, después de la rutina de imprimir la matriz original, viene el "truco", imprimir la matriz transpuesta es muy sencillo solo se intercambia en el for el orden en que se impriman los datos, en vez de imprimir matriz[i][j], se imprime matriz[j][i].
El %6d lo utilicé para dar espacio entre los números.
#include<stdio.h>
#define MAX 10
int main(int argc, char** args)
{
int matriz[MAX][MAX], col, reng, i=0, j=0;
printf("Cuantas columnas quieres ");
scanf("%d", &col);
printf("Cuantos renglones quieres ");
scanf("%d", &reng);
for(i = 0;i < reng;i++)/*RUTINA PARA LEER LOS DATOS*/
{
for(j = 0;j < col;j++){
printf("ESCRIBE LOS VALORES [%d][%d]==>\t", i+1, j+1);
scanf("%d", &matriz[i][j]);
}
}
printf("\n\n\t\tMatriz original");/*RUTINA PARA IMPRIMIR*/
printf("\n\n");
for(i = 0;i < reng;i++){
printf("\n\t\t");
for(j = 0;j < col;j++){
printf(" %6d ", matriz[i][j]);
}
}
printf("\n\n\t\tMatriz transpuesta");/*IMPRIMIR MATRIZ TRANSPUESTA*/
printf("\n\n");
for(i = 0;i < col;i++){
printf("\n\t\t");
for(j = 0;j < reng;j++){
printf(" %6d ", matriz[j][i]);
}
}
printf("\n\n\n");
}
Ejecuciónes:


Código para descargar aquí.
Dos puntos extra.
ResponderEliminarjoder super util no, lo proximo, MUHISIMAS GRACIAS
ResponderEliminarEres la mujer más hermosa que jamás haya visto
ResponderEliminarMUY BUEN EJERCICIO ME SIRVIÓ MUCHO
ResponderEliminargracias! me haz hecho la tarea :B
ResponderEliminarGracias por segunda ocasion no encontraba la forma de hacerlo gracias
ResponderEliminarDisculpa, pero el programa solo me pide que le de valores y cuando termino de poner valores se cierra automaticamente ¿Qué hago?
ResponderEliminarAntes de la ultima llave que cierra el programa ponle un
Eliminargetch();
ya que esto pausa el programa
usa system (¨pause¨);
Eliminarmuy bueno este programa me sirvió de mucho
Eliminarmuy bueno este programa me sirvió de mucho
EliminarHOla muchas gracias muy bueno el codigo, queria hacerte una pregunta, yo necesito generar una matriz con todos los elementos en cero excepto aquellos para los que i+j sea par (para estos elementos generar un valor aleatorio con la función rand).
ResponderEliminaryo lo que hice es
void matrizcero()
{
int mat[3][3];
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
mat[i][j]=0;
if((mat[i+j][i+j]%2)==0)
{
mat[i+j][i+j]=rand();
}
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d",mat[i][j]);
}
printf("\n");
}
}
pero quiero saber si la comparacion esta bien porq realemnte me da la matriz pero solo la primera fila con los numeros aleatorios y las otras dos en cero, no creo que me este haciendo lo correcto, te agradezco la ayuda.
como pones una imagen de fondo cuando ejecutas el .c ?
ResponderEliminarMuchas gracias, buen aporte.
ResponderEliminarSaludos! necesito matriz transpuesta pero con numeros complejos, el introducir numeros complejos ya lo tengo solo necesito hacer transpuestas si me pudieras ayudar! Saludos! :P
ResponderEliminarte pongo el codigo #include
ResponderEliminarusing namespace std;
void main (void)
{
int r,c,matrixA[50][50],matrixA2[50][50],varA1,varA2,auxA1,auxA2;
//PRIMER MATRIZ
cout<<"Ingresa el numero de columnas de la matriz: ";cin>>r;
cout<<"Ingresa el numero de filas de la matriz: ";cin>>c; //INGRESA COLUMNAS Y RENGLONES
for(varA1=0;varA1>matrixA[varA1][varA2];
}
}
for(auxA1=0;auxA1>matrixA2[auxA1][auxA2];
}
}
cout<<endl<<" PRIMER MATRIZ "<<endl; //MUESTRA ACOMODADA LA PRIMER MATRIZ
auxA1=0;
auxA2=0;
for(varA1=0;varA1<r;varA1++)
{
cout<<endl;
for(varA2=0;varA2<c;varA2++)
{
cout<<" "<<matrixA[varA1][varA2]<< " + ";
cout<<" "<<matrixA2[auxA1][auxA2]<< "i";
auxA2++;
}
while(auxA2!=0)
{auxA2--;
}
auxA1++;
}
cout<<endl<<endl;
/*
cout<<"\n"<<"\t"<<"Matriz transpuesta";
cout<<"\n";
for(b=0; b<r; b=b+1)
{
cout<<"\n"<<"\t"<<"\t";
for(a=0; a<c; a=a+1)
{
cout<<x[a][b]<<" ";
}
}
cout<<"\n"; */
system ("pause");
}
gracias!!! ya comprendo un poco mas :)
ResponderEliminarme has salvado la vida mujer! :D gracias muchas xD
ResponderEliminarbuenass !! necesito este ejercicio por favorrr :( Dada una matriz A de n*n, se quiere obtener otra matriz R de n*n tal que: R=A*A(transpuesta)
ResponderEliminarnota: No debe utilizar otra matriz aparte de A y R. Por favor ayudamee
Este comentario ha sido eliminado por el autor.
ResponderEliminarMuchas gracias, me sirvio para hacer mi tarea de c++ XD
ResponderEliminarmuy bueno me sirvio gracias
ResponderEliminarhola, oie no me acepta colocar getch(); ? y se cierra después de visualizar instantáneamente.
ResponderEliminar1000 gracias!! Me ahorraste mucho tiempo de programación =D
ResponderEliminarme ayudo mucho!
ResponderEliminarPregunta
-1 Para sumar una matriz con numeros aleatorios solo me suma la primera fila y columna o las suma todas?
ya q me dices q con numeros aleatorios solo genera la primera columna y rellena lo demas con 0
Y para matlab?
ResponderEliminaralguien lo tiene en c#
ResponderEliminarHaga un procedimiento que reciba una matriz A mxn el valor N y M debe de ser solicitado por el usuario al inicio del sistema y devuelva la matriz transpuesta de A. La matriz transpuesta se obtiene cambiando las filas a columnas..... Alguien con esto en Python por favor
ResponderEliminaryo tengo que hacer este , pero no se el como hacerlo ,Haga un procedimiento que reciba una matriz A nxn y genere una nueva que sea * vertical y la otra *horizontal
ResponderEliminaren python
ResponderEliminarGraciaaaas linda
ResponderEliminargracias
ResponderEliminarme salvaste
ResponderEliminarEn C++ tambien funciona asi, con una 4x3 por ejemplo
ResponderEliminar//Escribir un programa que llene una matriz A de 4x3 de la siguiente manera: En la primera columna aleatorios entre 0 y 15
//En la segunda columna aleatorios pares entre 0 y 20. En la tercera columna la suma de la primera y segunda columna,
// muestre la matriz en pantalla, Llene y muestre una matriz B de 3x4 que será la matriz traspuesta de A
#include
#include
#include
int main()
{
using namespace std;
int A[4][3], B[3][4];
srand(getpid());
for (int i=0; i<4; i++)
{
for (int j=0; j<3; j++)
{
A[i][0]=rand()%16;
A[i][1]=2*rand()%10;
A[i][2]=A[i][1]+A[i][0];
}
cout<<endl;
}
cout<<endl;
cout<<"Matriz A; "<<endl;
for (int i=0; i<4; i++)
{
for (int j=0; j<3; j++)
{
cout<<setw(5)<<A[i][j];
}
cout<<endl;
}
cout<<"Matriz B "<<endl;
for (int i=0; i<3; i++)
{
for (int j=0; j<4; j++)
{
cout<<setw(5)<<A[j][i];
}
cout<<endl;
}
return 0;
}
en el include eran iostream, cstdlib y iomanip, en devc++
EliminarCon el avance de la computación deberían los lenguajes LAN contener librerías para el tratamiento oportuno de estructuras matriciales, así por ejemplo, todo lenguaje distinto a matLab que por su naturaleza es matemático, debería de implementar la función de traspuesta de una matriz.
ResponderEliminarComparto el link del programa en C++
https://tutorias.co/arrays-visual-c-traspuesta-de-una-matriz/
quiero el codigo de matriz transpuesta en html usando el editor de codigo sublime text
ResponderEliminarMuchísimas gracias, me acabas de hacer la vida súper fácil, en serio te agradezco.
ResponderEliminaramigos si alguien Usa hackeEarth aquí está la versión de puras input y output primero tengo las columnas y luego los renglones
ResponderEliminar#include
int main()
{
int tam1;
int tam2;
scanf("%d",&tam1);
scanf("%d",&tam2);
int matriz[tam1][tam2];
for ( int i = 0; i < tam1; i++){
for ( int j = 0; j < tam2; j++){
scanf("%d",&matriz[i][j]);
}
}
for ( int i = 0; i < tam1; i++){
for ( int j = 0; j < tam2; j++){
printf("%d",matriz[i][j]);
}
printf("\n");
}
for(int i = 0;i < tam2;i++){
for( int j = 0;j < tam1;j++){
printf("%d", matriz[j][i]);
}
printf("\n");
}
}
Alguien sabe cómo queda el diagrama en raptor?
ResponderEliminar