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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 2 [3] 4
21  Programación / Programación C/C++ / Re: Recorrido de matriz diagonal secundaria c++ en: 19 Octubre 2015, 22:28 pm
no comprendo bien
22  Programación / Programación C/C++ / Recorrido de matriz diagonal secundaria c++ en: 19 Octubre 2015, 21:47 pm
Buenas, me podrían ayudar en hacer el recorrido de una matriz de la diagonal secundaria, una matriz de entero de modo que tenga se vea así http://prntscr.com/8ssapl lo he pensando de varias forma, pero no logro que se vea así, el código que tengo es
Código:
#include <iostream>
using namespace std;

int main () {

int mat[4][4];
int cont=1;
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){

mat[j][i]=cont++;

}
}
int k=0,r=0;
for(int i=0; i<7; i++){
r=(i/4);

for(int j=k; j>=0; j--){

cout << mat[r][j]<<" ";
r++;
}
cout << endl;
k++;
k-=k/4;
}

cin.get();
return 0;
}
23  Programación / Programación C/C++ / Ayuda en funciones,acciones y duda en: 11 Octubre 2015, 00:30 am
Buenas, tenia que hacer un sudoku por partes, en la primera era validar el tablero numérico, recibiendo un número entero de 16 digitos, Cada valor representará una posición dentro del tablero numérico 4x4, dividido por cuadrantes en la que no pueda haber número repetidos, en filas, columnas o cuadrantes http://prntscr.com/8pzd7b así estaban divididos los cuadrantes, en el tablero, una cadena válida de 16 dígitos, era una que estuviera comprendida con números entero entre  1 y 4, solo se podía hacer utilizando estructura condicionales ( If, if else, switch) esa parte la logre hacer
Código:
#include <iostream>
using namespace std;

int main () {


int a,b,c,d,e,f,a11,a12,a13,a14,b11,b12,b13,b14,c11,c12,c13,c14,d11,d12,d13,d14;
unsigned long long int x;
bool t=true;

cout<<"introduzca la cadena"<<endl;
cin>>x;



    a=x/100000000;
b=x%100000000;
c=a/10000;
d=a%10000;
e=b/10000;
f=b%10000;
a11=c/1000;
c=c%1000;
a12=c/100;
c=c%100;
a13=c/10;
a14=c%10;
b11=d/1000;
d=d%1000;
b12=d/100;
d=d%100;
b13=d/10;
b14=d%10;
c11=e/1000;
e=e%1000;
c12=e/100;
e=e%100;
c13=e/10;
c14=e%10;
d11=f/1000;
f=f%1000;
d12=f/100;
f=f%100;
d13=f/10;
d14=f%10;

//condicional que evalua que el contenga 16 digitos
if ((x>99999999999999999 && x<10000000000000000)){
cout<<"Entrada incorrecta la cadena  debe contener 16 digitos"<<endl;
t=false;
}
else { if (((a11!=1) and (a11!=2)  and (a11!=3)  and (a11!=4))  or // condicional que evalua que la cadena introducida contenga numeros entre 1 y 4
((a12!=1) and (a12!=2)  and (a12!=3)  and (a12!=4))  or
((a13!=1) and  (a13!=2) and (a13!=3)  and (a13!=4))  or 
((a14!=1) and  (a14!=2) and  (a14!=3) and (a14!=4))  or
((b11!=1) and  (b11!=2) and  (b11!=3) and (b11!=4))  or 
((b12!=1) and  (b12!=2) and  (b12!=3) and (b12!=4))  or 
((b13!=1) and ( b13!=2) and  (b13!=3) and (b13!=4))  or 
((b14!=1) and  (b14!=2) and  (b14!=3) and (b14!=4))  or 
((c11!=1) and  (c11!=2) and  (c11!=3) and (c11!=4))  or 
((c12!=1) and  (c12!=2) and  (c12!=3) and (c12!=4))  or 
((c13!=1) and  (c13!=2) and  (c13!=3) and (c13!=4))  or 
((c14!=1) and  (c14!=2) and (c14!=3)  and (c14!=4))  or
((d11!=1) and  (d11!=2) and  (d11!=3) and (d11!=4))  or
((d12!=1) and (d12!=2)  and (d12!=3)  and (d12!=4))  or 
((d13!=1) and  (d13!=2) and (d13!=3)  and (d13!=4))  or 
((d14!=1) and  (d14!=2) and  (d14!=3) and (d14!=4))){
        cout<<"Entrada incorrecta, la cadena solo debe poseer digitos entre 1 y 4 "<<endl;
t=false;}
else {



//condicionales que evaluan cuadrante, filas y columnas que no haya numeros repetidos


if ((a11==a12))  {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C1"<<endl;
cout<<"Digitos repetidos "<<endl;
cout<<"C1 :"<<
cout<<"Columna 1:"<< a11<<","<<a12<<endl;
t=false;}

if ((a11==b11)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C1"<<endl;
cout<<"Fila 1"<<endl;
cout<<"digitos repetidos:"<<endl;
cout<<"C1:"<<a11<<endl;
cout<<"Fila 1:"<<a11<<","<<b11<<endl;
t=false;}

if ((a11==b12)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C1"<<endl;
cout<<"Digitos repetidos "<<endl;
cout<<"C1:"<<a11<<endl;
t=false;}

if ((a12==b11)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C1"<<endl;
cout<<"Digitos repetidos "<<endl;
cout<<"C1:"<<a12<<endl;
t=false;}

if ((a12==b12)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C1"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C1:"<<a12<<endl;
t=false;}

if((b11==b12)) {
cout<<"Repeticion de digitos en :"<<endl;
cout<<"C1"<<endl;
cout<<"Columna 2"<<endl;
cout<<"Digitos repetidos en"<<endl;
cout<<"Columna 2:"<<b11<<","<<b12<<endl;
t=false;}

if ((a13==a14)) {
cout<<"Repeticion de digitos en"<<endl;
cout<<"C2"<<endl;
cout<<"Fila 1"<<endl;
cout<<"Digitos repetidos en "<<endl;
cout<<"Fila 1 :"<<a13<<","<<a14<<endl;
t=false;}

if ((a13==b13)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C2"<<endl;
cout<<"Columna 1"<<endl;
cout<<"Digitos repetidos en"<<endl;
cout<<"Columna 1:"<<a13<<","<<b13<<endl;
t=false;}

if((a13==b14)) {
cout<<"Repeticion de digito en:"<<endl;
cout<<"C2"<<endl;
cout<<"Digitos repetidos "<<endl;
cout<<"C2:"<<a13<<endl;
t=false;}


if ((a14==b13)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C2"<<endl;
cout<<"Digitos repetidos en"<<endl;
cout<<"C2:"<<a14<<endl;
t=false;}

if ((a14==b14)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C2"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C2:"<<endl;
t=false;}

if ((b13==b14)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C2"<<endl;
cout<<"Columna 2"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C2:"<<b13<<endl;
cout<<"Columna 2:"<<b13<<","<<b14<<endl;
t=false;}


if ((c11==c12)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C3"<<endl;
cout<<"Fila 3"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C3:"<<c11<<endl;
cout<<"Fila 3"<<c11<<","<<c12<<endl;
t=false;}

if ((c11==d11)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C3"<<endl;
cout<<"Columna 1"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C3:"<<c11<<endl;
cout<<"Columna 1:"<<c11<<","<<d11<<endl;
t=false;}

if((c11==d12)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C3"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C3:"<<c11<<endl;
t=false;}

if ((c12==d11)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C3"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C13:"<<c12<<endl;
t=false;}

if ((c12==d12)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C3"<<endl;
cout<<"Fila 2"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C3:"<<c12<<endl;
cout<<"Fila 2:"<<c12<<","<<d12<<endl;
t=false;}

if((d11==d12)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C3"<<endl;
cout<<"Columna 4"<<endl;
cout<<"Digitos repetidos "<<endl;
cout<<"C3:"<<d11<<endl;
cout<<"Columna 4:"<<d11<<","<<d12<<endl;
t=false;}

if ((c13==c14)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C4"<<endl;
cout<<"Columna 3"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C4:"<<c13<<endl;
cout<<"Columna 3:"<<c13<<","<<c14<<endl;
t=false;}

if ((c13==d13)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C4"<<endl;
cout<<"Fila 3"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C4:"<<c13<<endl;
cout<<"Fila 3:"<<c13<<","<<d13<<endl;
t=false;}

if ((c13==d14)) {
cout<<"Repeticion de digitos en :"<<endl;
cout<<"C4"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C4:"<<c13<<endl;
t=false;}

if((c14==d13)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C4"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C4:"<<c14<<endl;
t=false;}

if ((c14==d14)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C4"<<endl;
cout<<"Fila 4"<<endl;
cout<<"Digitos repetidos "<<endl;
cout<<"Fila 4:"<<c14<<","<<d14<<endl;
t=false;}

if ((d13==d14)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C4"<<endl;
cout<<"Columna 4"<<endl;
cout<<"Digitos repetidos "<<endl;
cout<<"C4:"<<d13<<endl;
cout<<"Columna 4:"<<d13<<","<<d14<<endl;
t=false;}






}

if ((t==true)) {
cout<<"solucion valida"<<endl;}
else
{cout<<"Solucion invalida"<<endl;
}

}
}
Pero ahora en la segunda, me piden hacer http://prntscr.com/8pznkkhttp://prntscr.com/8pznxqhttp://prntscr.com/8pzoa8http://prntscr.com/8pzokypudiendo utilizar, acciones, funciones, ciclos, arreglos, matrices, registro, hice este código ( Aclaro que esta mal, ya que no hace lo que me piden que haga)
Código:
#include <iostream>
using namespace std;

int mat[9][9];


bool ValidarTablero() {//función que valida que el tablero tenga una solucion valida

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])
{if (c>1){{cout<<"Solucion invalida"<<endl;}

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

cont++;

return (ver);
}
}


void MostrarTablero(){//función que muestra el tablero actual




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

cout  <<  mat[i][j];

}
cout<<""<<endl;
}

}




bool ValidarInsercion () {
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 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);
}
}



//accion principal

int main () {

int op,op1;

//llena la matriz con puros 0
for (int i=0; i<9; i++){
for (int j=0; j<9; j++){
mat[i][j]=0;
mat[0][3]=1;
mat[1][2]=5;
mat[2][7]=2;
mat[3][1]=7;
mat[4][4]=3;
mat[5][1]=5;
mat[6][5]=4;
mat[7][6]=3;
mat[8][8]=1;
}
}







//menu de opciones para la diferente modalidades del juego

cout<<"******MENU******"<<endl;
cout<<"Eliga la opcion que desea utilizar"<<endl;
cout<<"1: Cargar Tablero"<<endl;
cout<<"2: Jugar"<<endl;
cout<<"3: Salir"<<endl;
cin>>op;


switch(op) {

case 1:
break;

case 2:
cout<<"1: Jugada"<<endl;
cout<<"2: Mostrar Tablero"<<endl;
cout<<"3: Validar"<<endl;
cout<<"4: Regresar"<<endl;
break;
cout<<"Jugar"<<endl;
cout<<"Mostrar tablero"<<endl;
cout<<"Validar"<<endl;
cout<<"Regresar"<<endl;
cin>>op1;
switch (op1){
case 1:ValidarInsercion();
break;

case 2:
MostrarTablero();
break;

case 3:
ValidarTablero();
break;

}





}





return 0;
}
Quisiera saber si pudieran examinar esas acciones y funciones que hice y pudieran aclararme en que falle, y la duda es referente me dijeron que hay una formula de saber si un número esta repetido en un cuadrante o fila con una formula matemática ¿Es cierto? como puedo aplicar eso en mi código, espero me puedan ayudar, gracias
24  Programación / Programación C/C++ / Re: verificar si un numero esta repetido en matriz en: 7 Julio 2015, 00:35 am
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í:
Código:
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 :
Código:
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:
Código:
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
25  Programación / Programación C/C++ / Re: verificar si un numero esta repetido en matriz en: 6 Julio 2015, 23:47 pm
Cuando te refieres a corregir las variable, que quieres decir?
26  Programación / Programación C/C++ / Re: verificar si un numero esta repetido en matriz en: 6 Julio 2015, 15:17 pm
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
27  Programación / Programación C/C++ / Re: verificar si un numero esta repetido en matriz en: 6 Julio 2015, 06:39 am
Código:
#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í
28  Programación / Programación C/C++ / Re: verificar si un numero esta repetido en matriz en: 6 Julio 2015, 06:17 am
Sí, si entiendo lo que dicen, pero así dice el enunciado, lo copiare tal cual como es; Función VerificarDigito: Dado un par de coordenadas y un valor esta función debe validar si este valor es único en una fila,columna o cuadrante y retornar un valor lógico
Función ColocarNumero: dado un par de coordenadas y un valor colocar el mismo en la posición indicada dentro de la matriz, es necesario notificar si en el momento de colocar un valor éste se encuentra en la misma fila,columna (en ningún momento se debe impedir colocar el valor)
29  Programación / Programación C/C++ / Re: verificar si un numero esta repetido en matriz en: 6 Julio 2015, 06:01 am
Voy a intentar explicar mejor tengo mi matriz 9x9, trato de hacer una Función en donde dado dos coordenadas y un valor me diga si ese valor es único en una fila o columna de mi matriz, y otra Función en donde dados dos coordenadas y un valor, colocar ese mismo valor en las coordenadas introducidas
30  Programación / Programación C/C++ / Re: verificar si un numero esta repetido en matriz en: 6 Julio 2015, 05:50 am
Sí, me percate de los errores, pero fue un error al tipearlo aquí, es más o menos así, dado un par de coordenadas y un valor colocar el mismo en la posición dentro del tablero (matriz) es necesario notificar si en el momento de colocar un valor éste se encuentra en la misma fila, columna , en ningún momento se debe impedir colocar dicho valor
Páginas: 1 2 [3] 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines