elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  pequeña duda sobre matriz simétrica c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: pequeña duda sobre matriz simétrica c++  (Leído 3,668 veces)
indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
pequeña duda sobre matriz simétrica c++
« en: 18 Abril 2013, 18:05 pm »

Hola,

he echo un programa donde dada una matriz devuelva "si" si es simétrica y "no" si no lo es. Pero solo me imprime por pantalla "no" cuando no lo es, y cuando si lo es no me imprime nada. ¿Qué debo rectificar para que me imprima por pantalla "si" cuando si lo es?

Código:
#include<iostream>
#include <cstdlib>
#include<vector>
#include<algorithm>
#include <iomanip>
using namespace std;
 
 
 bool Esdiagonal(vector<vector<int> >M){
  int i=0,j;
  bool p=true;
   while(i<M.size()-1 and p){
       j=i+1;
       while(j<M.size() and p){
                              if(M[i][j]!=M[j][i]){
                                                             p=false;
                                                             }
                             
              }
       
       }
       return p;

}


int main(){
    int m,n;
    cout<<"introduzca el numero de filas"<<endl;
    cin>>m;
    cout<<"introduzca el numero de columnas"<<endl;
    cin>>n;
    vector<vector<int> > matriz ( m, vector<int> ( n ) );
   
    int k = 0;
  for ( int i = 0; i < m; i++ ) {
    for ( int j = 0; j < n; j++ ){
      cout << "["<<i+1<<"]"<< "["<<j+1<<"]= ";/*activa esta y la siguiente para entrar a mano*/
      cin >>matriz[i][j];
      //matriz[i][j] = k++;/*y desactivas esta*/
    }
  }
 


  cout<<'\n';
  for ( int i = 0; i < n; i++ ) {
    for ( int j = 0; j < m; j++ )
      cout<< setw ( 3 ) << matriz[i][j] <<' ';
    cout<<'\n';
  }
  if(Esdiagonal(matriz)){cout<<"si"<<endl;}
  else{cout<<"no"<<endl;}
   // muestra(matriz,n,m);
   // transpon(matriz,n,m);
 
    system("pause");
    return 0;
  }
 

¡Gracias por la ayuda!


En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: pequeña duda sobre matriz simétrica c++
« Respuesta #1 en: 18 Abril 2013, 18:28 pm »

Buenas!!

Te falta incrementar i y j en la función!!!

Y además el bucle interno lo tienes que recorrer según el número de elementos de M[i ] no de M

Código
  1. bool Esdiagonal(vector<vector<int> > M) {
  2.    unsigned i = 0, j;
  3.    bool p = true;
  4.    while(i < M.size() - 1 and p) {
  5.        j = i + 1;
  6.        while(j < M[i].size() and p) {
  7.            if(M[i][j] != M[j][i]) {
  8.                p = false;
  9.            }
  10.            j++;
  11.        }
  12.        i++;
  13.    }
  14.    return p;
  15. }
  16.  

Saludos


En línea

Breakbeat como forma de vida
indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
Re: pequeña duda sobre matriz simétrica c++
« Respuesta #2 en: 18 Abril 2013, 19:13 pm »

¡muchas gracias por corregir el error! ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda acerca de matriz en c++ « 1 2 »
Programación C/C++
laura_55 10 4,905 Último mensaje 20 Mayo 2014, 13:41 pm
por eferion
Criptografia simetrica
Seguridad
andres.perezg 1 2,483 Último mensaje 13 Octubre 2014, 15:21 pm
por engel lex
Pequeña duda con warning en matriz[][]
Programación C/C++
erickgracia 1 1,484 Último mensaje 16 Febrero 2015, 08:47 am
por vangodp
c++ matriz simetrica
Programación C/C++
77mapmap77 2 5,659 Último mensaje 28 Febrero 2016, 01:54 am
por 77mapmap77
Creación clave simétrica OpenSSL
Criptografía
mestebanrg 7 7,202 Último mensaje 11 Diciembre 2016, 23:21 pm
por kub0x
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines