Matriz en C++

Iniciado por delirio, 26 Noviembre 2010, 05:49 AM

0 Miembros y 1 Visitante están viendo este tema.

delirio

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 (cpp) [Seleccionar]
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>

using namespace std;

int main()
{
   int A[50][50];
   int i,j,m,n;
   
   cout<<"Ingrese dimensiones de la matriz: ";
   cin>>m;
   cin>>n;
/*-----------FORMAR MATRIZ-------------------------*/
             for(i=0;i<m;i++)
             {
             for(j=0;j<n;j++)
             {
             cout<<"A["<<i+1<<"]"<<"["<<j+1<<"]=";
             cin>>A[i][j];
             }
             }
             
         
/*-------------MOSTRAR MATRIZ--------------------------*/
      cout<<"\n   Matriz A:   \n";
      {
      for(i=0;i<m;i++)
      {
      for(j=0;j<n;j++)
      {
      cout<<"\t"<<A[i][j];
      }
      cout<<"\n";
      }
      cout<<"\n";
      }  
 
/*---------------------------------------------------------*/      
 
               
system("PAUSE>nul");
return 0;
}




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


     

fary

Azte una funcion que no es tan dificil...

salu2!
Un byte a la izquierda.

darkvidhack

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 ;)
live and let die

la duda es la base de todo conocimiento