verificar si un numero esta repetido en matriz

Iniciado por SojatDotar, 5 Julio 2015, 22:01 PM

0 Miembros y 3 Visitantes están viendo este tema.

SojatDotar

Buenas, intento hacer una función en c++, en donde me diga dada una matriz 9x9 si hay un número repetido en filas o columnas, lo intente hacer así

for (int i=0; i<9; i++){
if ( j !=x) {
}
if ( mt[x][j]==x) {
}
return false;


for (int j=0; j<9; j++) {
if (j != x){
}
if (mat [j][x]==x){
}
return false;
}


pero no me verifica como tal cual numero esta repetido en filas o columnas

DarK_FirefoX

Hola, ¿podrías explicar un poquito mejor que es lo que quieres verificar?

¿Verificar si un número está repetido en una fila/columna especifica?
¿Verificar si el número está repetido en toda la matriz?

Salu2s

SojatDotar

Sí, dada dos coordenadas (x,y) y un valor, ver si ese valor esta repetido en dichas coordenadas

engel lex

CitarSí, dada dos coordenadas (x,y) y un valor, ver si ese valor esta repetido en dichas coordenadas

genial repuesta -.-
te preguntan: "que quieres hacer?"
tu respuesta: "si"

para lo indicado no necesitas un ciclo

si (matriz[x][y] == valor) entonces:
   imprimir "el valor está repetido en esa coordenada"
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

SojatDotar

Así dice el enunciado, dado dos coordenadas y un valor verificar si dicho valor esta repetido en las coordenadas( son coordenadas ingresadas) yo habia pensado hacer como especie de otra matriz
  • [y] y compararla con mi matriz[j]

engel lex

Citardado dos coordenadas y un valor verificar si dicho valor esta repetido en las coordenadas


dada 2 coordenadas: es decir recibido un valor X y uno Y
y un valor: llamemoslo "valor"

verificar si dicho valor esta repetido en las coordenadas


como está ahí se intepreta "si te doy un 'x' y un 'y', revisa si el valor que te doy es igual"

es solo en ese valor según dice, no en toda la matriz... es un solo if y listo

en cambio si te dicen "dado un valor, vea si se repite en la matriz" es otra cosa muy distinta
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

SojatDotar

Así es o es lo que entiendo por lo menos porque dice "Dado un par de coordenadas y un valor esta función debe validar si este valor es único en una fila,columna y retornar un lógico con dicha respuesta"

engel lex

Esa explicación está mejor, estoy seguro que entiendes a tu profesor mejor que yo ;)

lo recomiendo hacer así, no es necesario elaborar mucho, solo un for y un par de if (si es una matriz del mismo ancho que largo)

conseguido = falso;
para(i=0;i<ancho_matriz;i++):
   si matriz[x][i]==valor OR matriz[i][y]==valor:
       conseguido = verdadero
       break // romper ciclo
si conseguido==verdadro:
   imprimir "el valor está repetido"
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

SojatDotar

Si algo así ? int Verificardigito () {
bool validar=true;
int x,y,n;

cout<<"ingrese la coordenada x"<<endl;
cin>>x;
cout<<"ingrese la coordenada y"<<endl;
cin>>y;
cout<<"ingrese el valor"<<endl;
cin>>n;
for (int =0; i<9; i++){
if (mat[x][i]==n or mat[i][y]==n) {
va=true;
break;
if (va==true)
cout<<"valor repetido"<<endl;
return (va);
la matriz es 9x9 y la declare global

DarK_FirefoX

Bueno, al parecer yo sigo sin "entender" al "profesor"  :silbar:

A ver, lo que entendí es que quieres dado una X y Y (coordenadas) dentro de la matriz, ¿verificar si un valor (valor) se repite en esa fila (X) y/o columna (Y)?

Si es así con lo que dice @engel lex tienes.
Cita de: engel lex en  6 Julio 2015, 05:20 AM
Esa explicación está mejor, estoy seguro que entiendes a tu profesor mejor que yo ;)

lo recomiendo hacer así, no es necesario elaborar mucho, solo un for y un par de if (si es una matriz del mismo ancho que largo)

conseguido = falso;
para(i=0;i<ancho_matriz;i++):
    si matriz[x][i]==valor OR matriz[i][y]==valor:
        conseguido = verdadero
        break // romper ciclo
si conseguido==verdadro:
    imprimir "el valor está repetido"

Salu2s


PD:
Cita de: engel lex en  6 Julio 2015, 04:49 AM
genial repuesta -.-
te preguntan: "que quieres hacer?"
tu respuesta: "si"

:D