Especifico mas..Ayuda porfi en programa que intercambie dos filas cualesquiera en matriz
Enviado por AdRi el día 31 de marzo de 2004
el programa debe pedir el tamaño y datos de la matriz, y luego, preguntar que filas desearia intercambiar..
o sea, si la matriz es:
1 2 3
4 5 6
7 8 9
y por ejemplo, si se quiere intercambiar la fila 1 con la 3, quedaria asi
7 8 9
3 4 5
1 2 3
gracias
el programa debe pedir el tamaño y datos de la matriz, y luego, preguntar que filas desearia intercambiar..
o sea, si la matriz es:
1 2 3
4 5 6
7 8 9
y por ejemplo, si se quiere intercambiar la fila 1 con la 3, quedaria asi
7 8 9
3 4 5
1 2 3
gracias
ver tambien la ventana donde me quejo que nadie contesta :
// program matrix.cpp
// visual c++
#include <iostream.h>
#include <iomanip.h>
const int N = 20;
int GetNum(char *msg)
{
int num;
cout << setw(20) << msg;
cin >> num;
return num;
} // GET NUM
void GetData(int &dim,int &first,int &second)
{
dim = first = second = -1;
while(dim < 0 || dim > N)
dim = GetNum("dim = ");
while(first <0 || first >= dim)
first = GetNum("first = ");
while(second <= first || second >= N)
second = GetNum("second = ");
cout << endl;
} // GET DATA
void GetMatrix(int a[][N],int dim)
{
for(int i = 0;i < dim;i++)
{
for(int j = 0;j < dim;j++)
{
cout << "a[" << i << "," << j << "] = ";
cin >> a[i][j];
}
cout << endl;
}
cout << endl;
} // GET MATRIX
void Show(int a[][N],int dim)
{
for(int i = 0;i < dim;i++)
{
for(int j = 0;j < dim;j++)
cout << setw(5) << a[i][j];
cout << endl;
}
cout << endl << endl;
} // SHOW
void Transpose(int a[][N],int dim,int first,int second)
{
int holder;
for(int j = 0;j < dim;j++)
{
holder = a[first][j];
a[first][j] = a[second][j];
a[second][j] = holder;
}
} // TRANSPOSE
void main()
{
int a[N][N],dim,first,second; // si la matriz no es cuadrada
GetData(dim,first,second); // hace falta dim1 y dim2
GetMatrix(a,dim);
Show(a,dim);
Transpose(a,dim,first,second);
Show(a,dim);
} // MAIN
// program matrix.cpp
// visual c++
#include <iostream.h>
#include <iomanip.h>
const int N = 20;
int GetNum(char *msg)
{
int num;
cout << setw(20) << msg;
cin >> num;
return num;
} // GET NUM
void GetData(int &dim,int &first,int &second)
{
dim = first = second = -1;
while(dim < 0 || dim > N)
dim = GetNum("dim = ");
while(first <0 || first >= dim)
first = GetNum("first = ");
while(second <= first || second >= N)
second = GetNum("second = ");
cout << endl;
} // GET DATA
void GetMatrix(int a[][N],int dim)
{
for(int i = 0;i < dim;i++)
{
for(int j = 0;j < dim;j++)
{
cout << "a[" << i << "," << j << "] = ";
cin >> a[i][j];
}
cout << endl;
}
cout << endl;
} // GET MATRIX
void Show(int a[][N],int dim)
{
for(int i = 0;i < dim;i++)
{
for(int j = 0;j < dim;j++)
cout << setw(5) << a[i][j];
cout << endl;
}
cout << endl << endl;
} // SHOW
void Transpose(int a[][N],int dim,int first,int second)
{
int holder;
for(int j = 0;j < dim;j++)
{
holder = a[first][j];
a[first][j] = a[second][j];
a[second][j] = holder;
}
} // TRANSPOSE
void main()
{
int a[N][N],dim,first,second; // si la matriz no es cuadrada
GetData(dim,first,second); // hace falta dim1 y dim2
GetMatrix(a,dim);
Show(a,dim);
Transpose(a,dim,first,second);
Show(a,dim);
} // MAIN
con respecto al programa anterior me olvide de hacer notar que hay una solucion mas elegante, y el de crear una matriz dinamica, es decir en vez de fijar una matriz de dimension maxima y utilizar parte de ella, crear en la memoria lugar para la matriz pedida:
int *a = new int[rows*columns];
int *a = new int[rows*columns];
