Especifico mas..Ayuda porfi en programa que intercambie dos filas cualesquiera en matriz

AdRi
03 de Abril del 2004
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

noel solw
03 de Abril del 2004
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

noel solw
03 de Abril del 2004
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];