Duda c y c++

Iniciado por shibu, 16 Junio 2012, 16:55 PM

0 Miembros y 1 Visitante están viendo este tema.

shibu

Hola amigos, tengo un codigo fuente de un sudoku, compila y funciona, pero quisiera que me expliquen la siguiente parte que esta en c, y si pudieran, traducirlo a c++

cabe aclarar que en este sistema los niveles de dificultad son del 1 al 8, siendo el 1 el mas dificil y el 8 el mas facil, pero necesito saber como funciona el sistema de dificultad como tal que necesito explicarlo, por ejemplo lo de %c%c%c que me confunde, expliquenme por favor

cout<<"Seleccione el nivel de dificultad desde 1 hasta 8\n\n                  -->   ";
       int Seguir=0,Faltan=1,Nivel,Aciertos=0,Coorde_Verti=0,Coorde_Hori=0,N_Ingresado=0,Sol_Aleatoria=(rand()%5),C[5][9][9]={{8,4,6,1,5,7,3,2,9,7,2,3,4,8,9,1,6,5,1,9,5,2,6,3,7,8,4,5,3,1,7,9,2,6,4,8,4,6,2,3,1,8,9,5,7,9,7,8,6,4,5,2,3,1,6,8,9,5,3,1,4,7,2,3,1,7,8,2,4,5,9,6,2,5,4,9,7,6,8,1,3},{1,6,7,5,3,8,9,4,2,2,5,8,7,9,4,6,3,1,9,3,4,1,6,2,5,8,7,7,1,6,3,4,5,2,9,8,3,4,2,6,8,9,1,7,5,5,8,9,2,1,7,4,6,3,4,9,3,8,5,1,7,2,6,6,7,1,9,2,3,8,5,4,8,2,5,4,7,6,3,1,9},{1,4,9,3,8,6,5,2,7,3,7,2,1,5,4,6,8,9,6,5,8,9,2,7,4,3,1,7,6,4,2,1,5,8,9,3,2,3,5,6,9,8,7,1,4,9,8,1,4,7,3,2,5,6,8,9,6,5,4,1,3,7,2,5,1,3,7,6,2,9,4,8,4,2,7,8,3,9,1,6,5},{6,9,4,3,2,5,7,8,1,8,2,5,9,1,7,3,4,6,7,3,1,6,4,8,2,9,5,1,7,8,2,5,4,9,6,3,9,5,6,1,8,3,4,2,7,3,4,2,7,6,9,1,5,8,2,6,9,5,7,1,8,3,4,4,1,3,8,9,6,5,7,2,5,8,7,4,3,2,6,1,9},{2,4,6,1,3,5,8,7,9,1,3,5,8,7,9,2,4,6,8,7,9,2,4,6,1,3,5,5,6,3,4,1,2,7,9,8,4,1,2,7,9,8,5,6,3,7,9,8,5,6,3,4,1,2,6,5,4,3,2,1,9,8,7,3,2,1,9,8,7,6,5,4,9,8,7,6,5,4,3,2,1}};
       while(1!=Nivel && 2!=Nivel && 3!=Nivel && 4!=Nivel && 5!=Nivel && 6!=Nivel && 7!=Nivel && 8!=Nivel)
       cin>>Nivel;
       time (&start);
       for(int z=0;z<Nivel;z++)
       for(int i=0,f=0;i<3;i++,f++)
       for(int h=0,g=0,x=Casillero()+f*3,y=Casillero()+g*3;h<3;h++,g++)
       {
             while(Numero[x][y]!=0)
             x=Casillero()+f*3, y=Casillero()+g*3;
             Numero[x][y]=C[Sol_Aleatoria][x][y];
       }
       while(Aciertos!=81)
       {
             printf("\n           1   2   3   4   5   6   7   8   9\n\n         %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n      1  ",201,205,205,205,203,205,205,205,203,205,205,205,203,205,205,205,203,205,205,205,203,205,205,205,203,205,205,205,203,205,205,205,203,205,205,205,187);
             for(int i=0;i<9;i++)
             for(int j=0;j<9;j++)
             {
                   if(Numero[i][j]==0)
                   printf("º   ");
                   if(Numero[i][j]!=0)
                   printf("º %d ",Numero[i][j]);
                   if(i!=8&&j==8)
                   printf("º\n         %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n      %d  ",204,205,205,205,206,205,205,205,206,205,205,205,206,205,205,205,206,205,205,205,206,205,205,205,206,205,205,205,206,205,205,205,206,205,205,205,185,i+2);   
             }
             printf("º\n         %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n\n           Solo Numeros En El Rango De 1 A 9 Permitidos\n\n\n              Elija la columna : ",200,205,205,205,202,205,205,205,202,205,205,205,202,205,205,205,202,205,205,205,202,205,205,205,202,205,205,205,202,205,205,205,202,205,205,205,188);
             while(1!=Coorde_Hori && 2!=Coorde_Hori && 3!=Coorde_Hori && 4!=Coorde_Hori && 5!=Coorde_Hori && 6!=Coorde_Hori && 7!=Coorde_Hori && 8!=Coorde_Hori && 9!=Coorde_Hori)
             cin>>Coorde_Hori;
             cout<<"\n\n              Elija la fila : ";
             while(1!=Coorde_Verti && 2!=Coorde_Verti && 3!=Coorde_Verti && 4!=Coorde_Verti && 5!=Coorde_Verti && 6!=Coorde_Verti && 7!=Coorde_Verti && 8!=Coorde_Verti && 9!=Coorde_Verti)
             cin>>Coorde_Verti;
             cout<<"\n\n               Ingrese Numero : ";
             while(1!=N_Ingresado && 2!=N_Ingresado && 3!=N_Ingresado && 4!=N_Ingresado && 5!=N_Ingresado && 6!=N_Ingresado && 7!=N_Ingresado && 8!=N_Ingresado && 9!=N_Ingresado)
             cin>>N_Ingresado;
             Numero[Coorde_Verti-1][Coorde_Hori-1]=N_Ingresado,Aciertos=0,Faltan=0;
             for(int i=0;i<9;i++)
             for(int j=0;j<9;j++)
             {
             if(Numero[i][j]==C[Sol_Aleatoria][i][j])
             Aciertos++,N_Ingresado=0,Coorde_Hori=0,Coorde_Verti=0,Seguir=0;
             if(Numero[i][j]==0)
             Faltan++;
             }
             if(Faltan==0 && Aciertos!=81)
             {
             cout<<"\n\nPerdiste, quieres volver a emprezar?\n1) SI \n\n2) NO\n\n";
             while(1!=Seguir && 2!=Seguir)
             cin>>Seguir;
             if(Seguir==2)
             return 0;
             }
             system("cls");
       }
       cout<<"\n\n\n                      Felicidades!!!\n\n          Has terminado el Sudoku\n\n\n\n             ";
     time (&end);
dif = difftime (end,start);
cout<<"te tomo "<< dif<<"  segundos en resolverlo";
}
else
if (opcion==2)
{
for (fi=0; fi<9; fi=fi+1)
        for (co= 0; co<9; co++)
            juego[fi][co]=95; 
    llenado_matriz();
}
getch();
return 0;

david_BS

alto quilombo XD
si está en c se tiene que poder pasar a c++,
me imagino que lo que estás queriendo hacer es pasar todos los printf y scanf a cout y cin, el %c significa un char, osea en lugar de ese %c va un char. volá todos los printf y reemplasalos con cout y listo

elkiy

Hola pues mira yo estudio c++, como dijiste tenes que pasar printf a cout.

y eso de c% c%c%c%c%c% No se que sea, pero si miras bien el codigo te das cuenta que pasa cuando se utiliza printf.

Saludos!

STANHMAL

Hola que tal,

Bien, como ya te dijeron lo que tenes que hacer es reemplazar todo los printf por cout y los scanf por cin

todos esos %c que salen en el printf quiere decir que va un carácter en dicha posición, es muy común para el uso de las tildes.

ejemplo :


printf("%c", 65);


imprime en pantalla

A


el 65 es el código decimal al que corresponde la A en la tabla ASCII, es decir, es lo mismo que colocar el printf de la siguiente manera :


printf("A");


imprime en pantalla

A


también se le pueden imprimir varios caracteres de la siguiente forma :


printf("%c%c%c%c%c%c%c%c", 83, 84, 65,78,72,77,65,76);


imprime en pantalla

STANHMAL


en C++ sería se la siguiente forma :

Código (cpp) [Seleccionar]

cout << (char)83 << (char)84 << (char)65 << (char)78 << (char)72 << (char)77 << (char)65 << (char)76 << endl;


imprime en pantalla

STANHMAL


claro esta que también de puede hacer de otras formas.

$4!u2
Power Metal vs Reggaeton



Que es mi ordenador mi tesoro que todo el mundo ha de temer. Mi ley, el ratón y el módem. Mi única patria, la red