Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: delirio en 26 Noviembre 2010, 05:49 am



Título: Matriz en C++
Publicado por: delirio en 26 Noviembre 2010, 05:49 am
Como hago para que en una matriz cuadrada sume el triangulo superior al triangulo inferior, es decir ....por ejemplo ingreso una matriz de 3x3 asi .....
|2    3   1|
|4    5   6|  
|3    4   1|

y sumar:  (fila1 y columna2) con (fila2 y columna1)=3+4=7
               (fila1 y columna3) con (fila3 y columna1)=1+3=4
               (fila2 y columna3) con (fila3 y columna2)=6+4=10
 entonces que me muestra la nueva matriz que sera:
| 2    3     1 |
| 7    5     6 |
| 4    10    1|

OJALA ME ENTIENDAN, Y ESPERO QUE ME AYUDEN .........
es que yo solo implemente el código para ingresar una matriz    :-\.....pero quisiera que el programa hiciera lo que le dije anteriormente PARA MATRICES DE nxn.
Estoy trabajando en DEV C++.... :rolleyes:


Código
  1. #include<iostream.h>
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.    int A[50][50];
  10.    int i,j,m,n;
  11.  
  12.    cout<<"Ingrese dimensiones de la matriz: ";
  13.    cin>>m;
  14.    cin>>n;
  15. /*-----------FORMAR MATRIZ-------------------------*/
  16.              for(i=0;i<m;i++)
  17.              {
  18.              for(j=0;j<n;j++)
  19.              {
  20.              cout<<"A["<<i+1<<"]"<<"["<<j+1<<"]=";
  21.              cin>>A[i][j];
  22.              }
  23.              }
  24.  
  25.  
  26. /*-------------MOSTRAR MATRIZ--------------------------*/
  27.       cout<<"\n   Matriz A:   \n";
  28.       {
  29.       for(i=0;i<m;i++)
  30.       {
  31.       for(j=0;j<n;j++)
  32.       {
  33.       cout<<"\t"<<A[i][j];
  34.       }
  35.       cout<<"\n";
  36.       }
  37.       cout<<"\n";
  38.       }  
  39.  
  40. /*---------------------------------------------------------*/      
  41.  
  42.  
  43. system("PAUSE>nul");
  44. return 0;
  45. }



HEEEEEEELLP!!!!!!!!........


      


Título: Re: Matriz en C++
Publicado por: fary en 26 Noviembre 2010, 19:32 pm
Azte una funcion que no es tan dificil...

salu2!


Título: Re: Matriz en C++
Publicado por: darkvidhack en 27 Noviembre 2010, 22:48 pm
ey!! una vez que tengas la matriz formada puedes hacer lo siguiente:


int a=1;
int b=0;
int c=0;                  //Declaracion de variables, a y b =fila y columna del primer elemento a sumar; c y d=fila y columna del segundo
int d=1;                  //elemento a sumar
int counter=0;        //Esta variable será el contador que nos servirá para saber cuando parar se sumar


if(numero_filas==numero_columnas || numero_filas<numero_columnas) {          //esto no tiene nada que explicar

for(a,b,c,d;a<numero_filas;a++,d++;) {            //el bucle se repetirá el numero de filas-1, imagina una matriz 3x3, cuando llegamos a la
                                                                         //tercera fila, ya solo nos queda sumar dos elementos, el 2-1 y el 1-2 (el 0-0 es el 1º num)

matriz[a]=matriz[a]+matriz[c][d];           //realizamos la suma e incrementamos la variable counter en 1
counter++;

if(counter+1==numero_filas) {                   //volvamos al ejemplo de la matriz 3x3, el contador estará a 2, como sumamos 1, se pone a 3
                                                                  //y como 3=3(nº filas) pues hace la ultima suma

matriz[a][b-1]=matriz[a][b-1]+matriz[a-1][d]];

}
}


}

if (numero_columnas>numero_filas) {                   //bueno esto es igual que antes pero con una matriz con nºcolumnas>nºfilas

matriz[a]=matriz[a]+matriz[c][d];
counter++;
if(counter+1==numero_columnas){matriz[a][b-1]=matriz[a][b-1]+matriz[a-1][d];}
}


Espero haberte ayudado, prueba el código, no lo he probado, lo acabo de inventar, no se si estará bien o mal, es para numero de filas y columnas >1 ;), si quieres generalizar ya tienes una idea de como hacerlo ;), espero que esté bien jeje

un saludo, si tienes algun problema avisa ;)