Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - jorgerolli

#1
Programación C/C++ / [problema]Sudoki
25 Marzo 2012, 03:48 AM
Hola buenas a ver si alguien puede ayudarme con un problema de mi sudoku tengo creado el codigo para quue sea capaz de introducir numeros en el sudoku de 0 a 9 pero el problema es que no se me ocurre nada para la restriccion de añadir numeros que esten ya incluidos en la fila en la columna o en la submatriz, se lo agradeceria mucho!!


Código (cpp) [Seleccionar]
#include <iostream>
#include<fstream>
using namespace std;
typedef char tab[9][9];
bool inicializarSudoku(tab Tablero);
void mostrarSudoku(tab Tablero);
void RellenarSudoku(tab Tablero);

int main()
{
   
int a=0;
tab Tablero;
    inicializarSudoku(Tablero);
mostrarSudoku(Tablero);
while(a==0){
RellenarSudoku(Tablero);
mostrarSudoku(Tablero);
}
return 0;
}

void RellenarSudoku(tab Tablero)
{

int x, y;
char valor;


cout<<"introduce fila";
cin>>x;

cout<<"introduce columna";
cin>>y;

cout<<"introduce valor";
cin>>valor;
if((x>=9)&&(y>=9)&&(valor>9))
{cout <<"error de numero"<<endl;}
else Tablero[x][y]=valor;
}
bool inicializarSudoku(tab Tablero)
{

     int a, b;
     for (a=0;a<9;a++)
     {
         for (b=0;b<9;b++)
         {
             Tablero[a][b]=' ';
         }
     }

int i, j;
char c;

ifstream archivo;

archivo.open("sudoku.txt");


do
{
archivo >> j>>i>>c;
Tablero[i][j] = c;
}
while(!archivo.eof());

archivo.close();
}


void mostrarSudoku(tab Tablero)
{cout<<"  - - -   - - -   - - -  "<<endl<<"|"<<" ";
    for(int i=0;i<3;i++)
for(int j=0;j<1;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=3;i<6;i++)
for(int j=0;j<1;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=6;i<9;i++)
for(int j=0;j<1;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" "<<endl<<"|"<<" ";





for(int i=0;i<3;i++)
for(int j=1;j<2;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=3;i<6;i++)
for(int j=1;j<2;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=6;i<9;i++)
for(int j=1;j<2;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" "<<endl<<"|"<<" ";



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

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=3;i<6;i++)
for(int j=2;j<3;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=6;i<9;i++)
for(int j=2;j<3;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" "<<endl;

cout<<"  - - -   - - -   - - -  "<<endl<<"|"<<" ";

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

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=3;i<6;i++)
for(int j=3;j<4;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=6;i<9;i++)
for(int j=3;j<4;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" "<<endl<<"|"<<" ";



for(int i=0;i<3;i++)
for(int j=4;j<5;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=3;i<6;i++)
for(int j=4;j<5;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=6;i<9;i++)
for(int j=4;j<5;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" "<<endl<<"|"<<" ";



for(int i=0;i<3;i++)
for(int j=5;j<6;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=3;i<6;i++)
for(int j=5;j<6;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=6;i<9;i++)
for(int j=5;j<6;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" "<<endl;

cout<<"  - - -   - - -   - - -  "<<endl<<"|"<<" ";

for(int i=0;i<3;i++)
for(int j=6;j<7;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=3;i<6;i++)
for(int j=6;j<7;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=6;i<9;i++)
for(int j=6;j<7;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" "<<endl<<"|"<<" ";



for(int i=0;i<3;i++)
for(int j=7;j<8;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=3;i<6;i++)
for(int j=7;j<8;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=6;i<9;i++)
for(int j=7;j<8;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" "<<endl<<"|"<<" ";

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

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=3;i<6;i++)
for(int j=8;j<9;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" ";
for(int i=6;i<9;i++)
for(int j=8;j<9;j++){

cout<<Tablero[i][j]<<" ";}
cout<<"|"<<" "<<endl;
cout<<"  - - - - - - - - - - -  "<<endl<<" ";
}
#2
Programación C/C++ / PROBLEMA calculadora
3 Diciembre 2011, 03:12 AM
hola buenas  quisiera que alguien me pudiera ayudar a terminar lo ultimo paso de mi calculadora, el problema esta en que te da tres opciones de las cuales la primera es acceder a la calculadora la segunda modificar las teclas de los operadores y la tercera salir. pues bien tengo el problema en la segunda opcion no soy capaz de modificar las teclas en los cases; me ha dicho que deberia poner un if del tipo if(tecla==) antes del switch, pero ni ide a ver si alguno me puede ayudar

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
double argumento1,factorial, b,argumento2,resultado;
char operador;
char opsuma = '+';
char opresta = '-';
char opmultiplicacion = '*';
char opdivision = '/';
char opraices = 'r';
char oppotencias = '^';
char opfactorial = '!';
bool error=false;
int eleccion;
   cout<<"CALCULADORA"<<endl;
   cout<< "1.- Calculadora" <<endl;
   cout<< "2.- Configuracion" <<endl;
   cout<< "3.- Terminar" <<endl;
   cin>> eleccion;
   
   if (eleccion==1)
   {   
      cout << " Introduce la expresion a evaluar: ";
      cin >> argumento1;

      while (argumento1!=0)
      {
         cin.get(operador);

         while (operador!='\n')
         {
            switch (operador)
            {
            case '+': cin>> argumento2; resultado=argumento1+argumento2; break;
            case '-': cin>> argumento2; resultado=argumento1-argumento2; break;
            case '*': cin>> argumento2; resultado=argumento1*argumento2; break;
            case '/': cin>> argumento2; if(argumento2==0){error=true;} else ;resultado=argumento1/argumento2; break;
            case '^': cin>> argumento2; resultado=pow(argumento1,argumento2); break;
            case 'r': if(argumento1<0) {error=true;} else resultado=sqrt(argumento1); break;
            case '!': if(argumento1<0) {error=true;} else factorial=1;for (b=1 ; b<=argumento1 ; b++) factorial=b*factorial; resultado=factorial; break;
            default: cout << "operador invalido" ; break;
            }
         
         argumento1=resultado;
         cin.get(operador);
         }

         if (!error)cout << "  -Resultado: " << resultado <<endl;
         else cout << "imposible" <<endl;
         error=false;
         cin >> argumento1;
      }   
   }
   else if (eleccion==2)
   {
      cout << "Configuracion de simbolos: " << endl;
      cout << "Suma: "; cin >> opsuma; if (opsuma=='\n') (opsuma='+'); 
      cout << "Resta: "; cin >> opresta; if (opresta=='\n') (opresta='-');
      cout << "Multiplicacion: " ; cin >> opmultiplicacion; if (opmultiplicacion=='\n') (opmultiplicacion='*');
      cout << "Division: " ; cin >> opdivision; if (opdivision=='\n') (opdivision='/');
      cout << "Raices: " ; cin >> opraices; if (opraices=='\n') (opraices='r');
      cout << "Potencias: " ; cin >> oppotencias; if (oppotencias=='\n') (oppotencias='^');
      cout << "Factorial: " ; cin >> opfactorial; if (opfactorial=='\n') (opfactorial='!');
   }
   else if (eleccion==3)
   {
      cout << "Programa finalizado." << endl;
   }

return 0;
}