verificar si un numero esta repetido en matriz

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

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

SojatDotar

#20
#include <iostream>
using namespace std;
int mat[9][9];

bool Verificardigito (int n, int x, int y) {
bool validar=true;


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 i =0; i<9; i++){
if (mat[x][i]==n || mat[i][y]==n) {
 validar=true;
 break;
}  
if (validar==true){
 cout<<"valor repetido"<<endl;
}

return (validar);
}
}


void ColocarNumero(int n, int x, int y) {

cout<<"ingrese la coordenada 1"<<endl;
cin>>x;
cout<<"ingrese la coordenada 2"<<endl;
cin>>y;
cout<<"ingrese el valor"<<endl;
cin>>n;
mat[i][j]=n;


}

int main() {

int n,x,y;
bool Va;

for(int i=0;i<9;i++) {
for(int j=0;j<9;j++) {
cin>>mat[i][j];

}
}




Va=Verificardigito;

return 0;
}
es lo que llevo del código, de lo que entendí

engel lex

sinceramente recomiendo importante y encarecidamente que hagas un tutorial de C++, ya que estás bastante perdido en ello
(por cierto, para que tu códigos se vean bien como cuando yo los coloco, usa las etiquetas GeSHi, están ubicadas un poco más a la derecha que la etiqueta de código)

Verificardigito, decídete las variables (n, y ,x) se reciben como parámetros o los ingresa el usuario?
como lo tienes
bool Verificardigito ()

funcionaría perfecto (claro, corrigiendo las variables)

lo mismo con ColocarNumero... solo que quien es i y j? no los veo declarados en la función....

procura no hacer
for(int...

declara las variables afuera del for


por otro lado más...

Código (cpp) [Seleccionar]
Va=Verificardigito;

eso está mal, Verificardigito es una función no es una variable así que debe ser
Código (cpp) [Seleccionar]
Va=Verificardigito();

por ultimo...
ColocarNumero nunca fue usado
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.

DarK_FirefoX

También, ten en cuenta, como buena práctica, el hecho de usar nombres descriptivos para tus variables, por ejemplo:

¿Que significa "Va"?

Salu2s

SojatDotar

Decidí pasarlas por parámetros, como las voy a usar en dos funciones, para no estar declarándolas  cada una de la funciones, "Va" sería un diminutivo de "validar" y sería la variable que este recibiendo a la función

SojatDotar

Cuando te refieres a corregir las variable, que quieres decir?

SojatDotar

#25
Voy a intentar explicar mejor, tengo que hacer una especie de sudoku, en donde me piden hacer cuatros funciones, VerificarTablero,MostrarTablero,verificardigito y colocarNumero, las dos primera las tenia hechas ( o las tengo echas), pero las dos últimas son las que mas se me han complicado
la primera función es validar si un tablero contiene una solución valida ( Qué no haya número repetidos en filas, columna o cuadrante)http://prntscr.com/7pnmrp esos serían los diferente cuadrante, esa función la hice así: bool VerificarTablero() {

bool ver=true;

int cont=0,c=0;

for(int i=cont+1;i<9;i++) {
for(int j=0;j<9;j++) {

if (mat[cont][j]==mat[i][j])
{cout<<"Solucion invalida"<<endl;}

ver=false;}
else
{cout<<"Solucion Valida"<<endl;
ver=true;}
}
}

cont++;








return (ver);
}
Pero ahora cuando lo ejecuto me da solución invalida muchas veces y no una como quisiera, (Ahí no verifique los cuadrante, solo las filas y columna, ya que no sabia como verificar cada cuadrante)
en la otra la hice como acción en donde solo mostre el tablero : void MostrarTablero(){



for(int i=0;i<9;i++) {
for(int j=0;j<9;j++) {
cout<<mat[i][j];

}

cout<<endl;

}
las otras dos fue en la que pedí ayuda, porque no sabia como hacerlas
Funcion VerificarDigitos:bool VerificarDigitos () {
bool validar=false;
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 i =0; i<9; i++){
if (mat[x][i]==n || mat[i][y]==n) {
 validar=true;
 break;
}  
if (validar==true){
 cout<<"valor repetido"<<endl;
}

return (validar);
}
}

quisiera saber si me podrían ayudar en la primera función y en la tercera, ya que no me da como quería ni como pensé que me daría, si no es mucha la molestia