Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Misma diagonal matriz bidimensional

Estas en el tema de Misma diagonal matriz bidimensional en el foro de C/C++ en Foros del Web. Mi intención es saber si los parámetros que mete el usuario para 2 reinas están en la misma linea horizontal, vertical o diagonal, pero no ...
  #1 (permalink)  
Antiguo 26/01/2011, 15:24
 
Fecha de Ingreso: enero-2011
Mensajes: 13
Antigüedad: 13 años, 10 meses
Puntos: 0
Misma diagonal matriz bidimensional

Mi intención es saber si los parámetros que mete el usuario para 2 reinas están en la misma linea horizontal, vertical o diagonal, pero no se me ocurre como sacar la diagonal, ¿alguna idea?

Código:
#include <iostream>
#define KFila 1
#define KCol 1

using namespace std;


bool atacan (int reina1[][KCol], int reina2[][KCol], int x1, int x2, int y1, int y2)
{
  bool si=false;

  if (reina1[KFila][KCol]==reina2[KFila][KCol]) // misma fila
    si=true;
  else if (reina1[KFila][KCol+1]==reina2[KFila][KCol+1]) // misma columna
    si=true;
  else if (reina1[KFila+1][KCol+1]==reina2[KFila+1][KCol+1])
    si=true;

  return si;
}

main()
{
  int reina1[KFila][KCol];
  int reina2[KFila][KCol];
  int x1, x2, y1, y2;
  
  cout << "Parametros reina 1; ";
  cin >> reina1[KFila][KCol];
  cin >> reina1[KFila][KCol+1];
  
  cout << "Parametros reina 2; ";
  cin >> reina2[KFila][KCol];
  cin >> reina2[KFila][KCol+1];
  
  if (atacan(reina1, reina2, x1, x2, y1, y2))
    cout << "Se atacan" << endl;
  else
    cout << "No se atacan" << endl;
}
  #2 (permalink)  
Antiguo 26/01/2011, 18:20
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Misma diagonal matriz bidimensional

para ver si estan en diagonal, tienes que restar la fila en la que esta con la columna en la que esta. y lo mismo para la otra posicion, de manera que si el valor resultante es el mismo estan en diagonal. Ejemplo

reina1: fila 2 columna 3
reina2: fila 3 columna 4

2-3=-1
3-4=-1
-1=-1 => estan en diagonal

reina1: fila 1 columna 1
reina2: fila 4 columna 3
1-1=0
4-3=1
NO estan en diagonal

---------------------------------------------------
por cierto, aqui estas declarando una matriz de 1x1
int reina1[KFila][KCol];
int reina2[KFila][KCol];

int reina1[1][1];


y aqui estas accediendo a elementos que estan fuera de la matriz que has declarado

cin >> reina1[KFila][KCol];
cin >> reina1[KFila][KCol+1];

Etiquetas: matriz, bidimensionales
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:28.