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ú

Mensajes - miguel0542

#1
Desde que tenia 13 (creo) no toco este foro xD. Hoy vengo a que me salve de nuevo. Estoy haciendo un buscaminas den c++ con funciones. El problema es que e la parte donde debo destapar todas las casillas adyacentes del cero utilizo una funcion recursiva. el programa crashea lo he hecho de mil y un maneras diferentes pero no me sale. Espero que alguien pueda ayudarme o almenos explicarme por que es que esto sucede. Saludos! :D


#include <iostream>
#include <cstdlib>
#include <ctime>
#include <stdio.h>

using namespace std;
//Variables publicas
int opc, num_mina, i, j, game_over, num1, num2, fil, col;
bool error;
string dificultad;
//Num 1 y Num 2 son variables random necesarias para evitar que se ponga una mina en el mismo lugar.
//Error va a definir cuando un usuario introduce un valor invalido.
//--------------------------------------------------------------------------------------------------
//Matrices
int matriz_log[10][10];
char matriz_user[10][10];
bool matriz_clop[10][10];
//-------------------------
//Funciones a utilizar
void menu();
void iniciar_arays();
void imprimir();
void inp_col();
void inp_fil();
void abrir_casilla();
void perdiste();
void despejar_casillas(int filI, int colJ);
//-----------------------
//Funciones Void desarrolladas
void menu(){
   do{
       system("cls");
       cout << endl << "       elige la dificultad:" << endl;
       cout << "-----------------------------------" << endl;
       cout << " 1-Facil." << endl << " 2-Intermedio" << endl << " 3-Dificil" << endl;
       cout << "-----------------------------------" << endl;
       cout << "                  ";
       cin >> opc;
       switch(opc){
           case 1:
               num_mina=10;
               error=false;
               dificultad="Facil";
               break;
           case 2:
               num_mina=20;
               error=false;
               dificultad="Intermedio";
               break;
           case 3:
               num_mina=50;
               error=false;
               dificultad="Dificil";
               break;
           default:
               error=true;
               break;
       }
   }while(error==true);
}
void iniciar_arrays(){
   //Se inician los valores de las matrices por defecto,
   for(i=0;i<10;i++){
       for(j=0;j<10;j++){
           matriz_clop[i][j]=false;
           matriz_log[i][j]=0;
           matriz_user[i][j]=' ';
       }
   }
   //Se pone las minas al azar y se evita que se repita la casilla.
   srand((unsigned)time(0));
   for(i=0;i<num_mina;i++){
       num1=rand()%9;
       num2=rand()%9;
       if(matriz_log[num1][num2]==9){
           i--;
       }else{
           matriz_log[num1][num2]=9;
       }
   }
   //Las minas pondran un +1 al rededor de ellos.
   for(i=0;i<10;i++){
       for(j=0;j<10;j++){
           if(matriz_log[i][j]==9){
               if(i-1>=0 && matriz_log[i-1][j]!=9){
                   matriz_log[i-1][j]++;
               }
               if(i-1>=0 && j-1>=0 && matriz_log[i-1][j-1]!=9){
                   matriz_log[i-1][j-1]++;
               }
               if(i-1>=0 && j+1<=9 && matriz_log[i-1][j+1]!=9){
                   matriz_log[i-1][j+1]++;
               }
               if(j-1>=0 && matriz_log[i][j-1]!=9){
                   matriz_log[i][j-1]++;
               }
               if(j+1<=9 && matriz_log[i][j+1]!=9){
                   matriz_log[i][j+1]++;
               }
               if(i+1<=9 && matriz_log[i+1][j]!=9){
                   matriz_log[i+1][j]++;
               }
               if(i+1<=9 && j-1>=0 && matriz_log[i+1][j-1]!=9){
                   matriz_log[i+1][j-1]++;
               }
               if(i+1<=9 && j+1<=9 && matriz_log[i+1][j+1]!=9){
                   matriz_log[i+1][j+1]++;
               }
           }
       }
   }
}
void imprimir(){
   //Se imprime la matriz del usuario
   cout << " ";
   for(i=0;i<10;i++){
       cout << "("  << i << ")";
   }
   cout << "                   ";
   for(i=0;i<10;i++){
       cout << "("  << i << ")";
   }
   cout << "                   ";
   for(i=0;i<10;i++){
       cout << "("  << i << ")";
   }
   cout << endl;
   for(i=0;i<10;i++){
       cout << " ";
       for(j=0; j<10;j++){
           cout << "[" << matriz_user[i][j] << "]";
       }
       cout << "(" << i << ")                ";
       for(int y=0; y<10;y++){
           cout << "[" << matriz_log[i][y] << "]";
       }
       cout << "(" << i << ")                ";
       for(int z=0; z<10; z++){
           cout << "[" << matriz_clop[i][z] << "]";
       }
       cout << "(" << i << ")" << endl;
   }

}
void inp_fil(){
   do{
       system("cls");
       cout << endl << "   Buscaminas " << dificultad << ". Minas: " << num_mina << endl;
       cout << "-----------------------------------" << endl;
       imprimir();
       cout << " Fila: ";
       cin>> fil;
       if(fil>9 || fil<0){
           error=0;
       }else{
           error=1;
       }
   }while(error==0);
}
void inp_col(){
   do{
       system("cls");
       cout << endl << "   Buscaminas " << dificultad << ". Minas: " << num_mina << endl;
       cout << "-----------------------------------" << endl;
       imprimir();
       cout << " Fila: " << fil << endl << " Columna: ";
       cin>> col;
       if(col>9 || col<0){
           error=0;
       }else{
           error=1;
       }
   }while(error==0);
}
void abrir_casilla(){
   if(matriz_log[fil][col]==9){
       for(i=0;i<10;i++){
           for(j=0;j<10;j++){
               if(matriz_log[i][j]==9){
                   matriz_user[i][j]='*';
               }
               matriz_user[fil][col]='X';
           }
       }
       game_over=1;
   }else{
       matriz_user[fil][col]='0'+matriz_log[fil][col];
       matriz_clop[fil][col]=true;
       if(matriz_log[fil][col]==0){
           despejar_casillas(fil,col);
       }
   }
}
void perdiste(){
   system("color 4F");
   system("cls");
   cout << endl << "   Buscaminas " << dificultad << ". Minas: " << num_mina << endl;
   cout << "-----------------------------------" << endl;
   imprimir();
   cout << "Fila: " << fil << endl << "Columna: " << col << endl;;
   cout << "-----------------------------------" << endl;
   cout << "               Perdiste." << endl;
   cout << "-----------------------------------" << endl;
}
void despejar_casillas(int filI, int colJ){
   //destapar
   if(filI-1>=0 && matriz_clop[filI-1][colJ]==false){
       matriz_user[filI-1][colJ]='0'+matriz_log[filI-1][colJ];
       matriz_clop[filI-1][colJ]=true;
   }
   if(filI-1>=0 && colJ-1>=0 && matriz_clop[fil-1][colJ-1]==false){
       matriz_user[filI-1][colJ-1]='0'+matriz_log[filI-1][colJ-1];
       matriz_clop[filI-1][colJ-1]=true;
   }
   if(filI-1>=0 && colJ+1<=9 && matriz_clop[fil-1][colJ+1]==false){
       matriz_user[filI-1][colJ+1]='0'+matriz_log[filI-1][colJ+1];
       matriz_clop[filI-1][colJ+1]=true;
   }
   if(colJ-1>=0 && matriz_clop[fil][colJ-1]==false){
       matriz_user[filI][colJ-1]='0'+matriz_log[filI][colJ-1];
       matriz_clop[filI][colJ-1]=true;
   }
   if(colJ+1<=9 && matriz_clop[fil][colJ+1]==false){
       matriz_user[filI][colJ+1]='0'+matriz_log[filI][colJ+1];
       matriz_clop[filI][colJ+1]=true;
   }
   if(filI+1<=9 && matriz_clop[fil+1][colJ]==false){
       matriz_user[filI+1][colJ]='0'+matriz_log[filI+1][colJ];
       matriz_clop[filI+1][colJ]=true;
   }
   if(filI+1<=9 && colJ-1>=0 && matriz_clop[fil+1][colJ-1]==false){
       matriz_user[filI+1][colJ-1]='0'+matriz_log[filI+1][colJ-1];
       matriz_clop[filI+1][colJ-1]=true;
   }
   if(filI+1<=9 && colJ+1<=9 && matriz_clop[fil+1][colJ+1]==false){
       matriz_user[filI+1][colJ+1]='0'+matriz_log[filI+1][colJ+1];
       matriz_clop[filI+1][colJ+1]=true;
   }
   //Recursividad
   if(matriz_log[filI-1][colJ]==0 && filI-1>=0){
       despejar_casillas(filI-1, colJ);
   }
   if(matriz_log[filI+1][colJ]==0 && filI+1<=9){
       despejar_casillas(filI+1, colJ);
   }

}
//-----------------------------------------------
int main()
{
   system("color F0");
   menu();
   iniciar_arrays();
   game_over=0;
   do{
       inp_fil();
       inp_col();
       abrir_casilla();
   }while(game_over==0);
   switch(game_over){
       case 1:
           perdiste();
   }
   return 0;
}

#2
Hola amigos de este gran foro, del que me inicio en programacio :3. vengo depsues de 6 meses sin dar pregunta o aporte (solo leer y leer).
Resuta que administro una pagina en facebook. Y un chistosito se la tumbo, quito a todos los admins y puso nuevos, quitandome a mi y al creador de la pagina :fuuuuuu: pero lo que mas me llamo la atención es como lo hizo? si el creador era el unico administrador todos los demas solo aportabamos contenido. De saber como lo hizo, podria recuperarla. En dado caso de que alguien pueda ayudar les dejo la pagina. http://www.facebook.com/pages/Religiosos-ofendidos-en-3-2-1/320540431299727?ref=ts&fref=ts  Es pero que no em ataquen los religiosos del foro. pero ese no es el punto. De antemano gracias.

PD: No sabia donde poner el post!
#3
Hola, hoy vengo con este problema. Resulta que descargue un tema de alienware hace ya un rato y no puedo quitar los iconos. Los cambien por los "tokens" pack de iconos. pero no eran bonitos >_<

Ya intente usando los sig. comandos en el cmd
CitarSFC/scanfile=c:\windows\system32\imageres.dll
CitarSFC/scanfile=c:\windows\system32\shell32.dll
CitarSFC/scanfile=c:\windows\system32\imagesp1.ll

reiniciaba después de cada comando y despues use el programa Rebuild Icon Cache. Pero no se restauraron todos :l
Ademas quiero el explorer.exe original, me seria de ayuda. de ante mano gracias y les dejo unas imágenes.
Tengo windows 7 ultimate 64 bits... por si las moscas :P
de antemano gracias :D





#4
Hola, soy yo, jodiendo de nuevo. Ahora quiero cambiar el nombre de un archivo de el siguiente code (oviamente hay un codigo antes)

Citar:crear
echo Ingrese nombre de la factura ejemplo.xls/nombre.xls (no olvide poner .xls al final del nombre)
set /p "factura=>"
copy facturabase.xls %ano%\%fecha%\
ren %ano%\%fecha%\*facturabase.xls *%factura%
pause
goto menu

el es que si yo la cambiar el nombre pongo: "xD.xls" cuando esta ahí se cambia a "facturabasexD.xls" FUUUUUUUUUUUUUUUUUUUUUUUUUU gracias de antemano y perdon por chingar tanto :P

Editado:
ya lo arregle:
Citarren %ano%\%fecha%\facturabase.xls %factura%.xls
#5
Cuadno lo hcie se me desparramaron carpetas por lso epsacios que traia, entonces lo que hice fue cambiar aparte de loq ue me dijistes la ruta algo ams facil y quedo así:
Código (dos) [Seleccionar]

:mes
cls
echo Inserte el numero del mes
set /p mes=
if %mes%==1 set fecha=enero
if %mes%==2 set fecha=febrero
if %mes%==3 set fecha=marzo
if %mes%==4 set fecha=abril
if %mes%==5 set fecha=mayo
if %mes%==6 set fecha=junio
if %mes%==7 set fecha=julio
if %mes%==8 set fecha=agosto
if %mes%==9 set fecha=septiembre
if %mes%==10 set fecha=octubre
if %mes%==11 set fecha=noviembre
if %mes%==12 set fecha=diciembre
pause
if exist "%ano%\%fecha%" goto menu
if not exist "%ano%\%fecha%" goto crearmes


:crearmes
mkdir %ano%\%fecha%
cls
goto menu
pause


eres un groso!!!!! voy a testear a ver si no se me borran datos al hacer este proceso pero gracias :DDDDDD




(escribo de la ***** lol)




Nota dle mod: No hacer doble comentario porfavor.
#6
Hola, me cree una cuenta aquí por que veoq ue responden rapido y certero. EL objetivo de mi programa es 1- revisar la existencia o no de las carpetas cuyos nombres ingresados son del año y dentro de este sub directorios con los meses. Dentro de los meses copiar una factura en xls (exel), y cambiar su nombre. de ahí abrirla (es solo para ajilisarle las cosas a mi papá) es un asistente para organizar todo. de ahi se guarda y tatata... en fin no voy a explicar mas puestoq ue mi error recide en  la creacion del directorio de meses les dejo el codigo actual:

Código (dos) [Seleccionar]
@echo off

title Asistente de Facturacion v1

echo Bienvenido.
pause
goto ano


:ano
cls
echo Porfavor ingrese el ano (ejemplo 2012), por favor no cometa errores.
set /p ano=
if EXIST %ano% goto mes
if NOT EXIST %ano% goto crearano
pause


:crearano
MD %ano%
goto mes


:mes
cls
echo Inserte el numero del mes
set /p mes=
if %mes%==1 set fecha= enero
if %mes%==2 set fecha= febrero
if %mes%==3 set fecha= marzo
if %mes%==4 set fecha= abril
if %mes%==5 set fecha= mayo
if %mes%==6 set fecha= junio
if %mes%==7 set fecha= julio
if %mes%==8 set fecha= agosto
if %mes%==9 set fecha= septiembre
if %mes%==10 set fecha= octubre
if %mes%==11 set fecha= noviembre
if %mes%==12 set fecha= diciembre
pause
if "C:\Documents and Settings\parra\My Documents\facturacion\%ano%\%fecha%" exist goto menu
if "C:\Documents and Settings\parra\My Documents\facturacion\%ano%\%fecha%" not exist goto crearmes


:crearmes
mkdir C:\Documents and Settings\parra\My Documents\facturacion\%ano%\%fecha%
cls
goto menu
pause


El problema es a la hora de crear directorios y comprobarlos. Alguien sabe como hacer?
y de igual forma en esos mismos directorios que voy a crear como podria copiar algo? de ante mano gracias :D

PD: No les dejo el resto del code, por que ahi no radica el problema :l
#7
Hola, me cree una cuenta aquí por que veoq ue responden rapido y certero. EL objetivo de mi programa es 1- revisar la existencia o no de las carpetas cuyos nombres ingresados son del año y dentro de este sub directorios con los meses. Dentro de los meses copiar una factura en xls (exel), y cambiar su nombre. de ahí abrirla (es solo para ajilisarle las cosas a mi papá) es un asistente para organizar todo. de ahi se guarda y tatata... en fin no voy a explicar mas puestoq ue mi error recide en:  la creacion del directorio de meses les dejo el codigo actual:

Citar@echo off

title Asistente de Facturacion v1

echo Bienvenido.
pause
goto ano   


:ano
cls
echo Porfavor ingrese el ano (ejemplo 2012), por favor no cometa errores.
set /p ano=
if EXIST %ano% goto mes
if NOT EXIST %ano% goto crearano
pause


:crearano
MD %ano%
goto mes

:mes
cls
echo Inserte el numero del mes
set /p mes=
if %mes%==1 set /a fecha== enero
if %mes%==2 set /a fecha== febrero
if %mes%==3 set /a fecha== marzo
if %mes%==4 set /a fecha== abril
if %mes%==5 set /a fecha== mayo
if %mes%==6 set /a fecha== junio
if %mes%==7 set /a fecha== julio
if %mes%==8 set /a fecha== agosto
if %mes%==9 set /a fecha== septiembre
if %mes%==10 set /a fecha== octubre
if %mes%==11 set /a fecha== noviembre
if %mes%==12 set /a fecha== diciembre
pause
if "C:\Documents and Settings\parra\My Documents\facturacion\%ano%\%fecha%" exist goto menu
if "C:\Documents and Settings\parra\My Documents\facturacion\%ano%\%fecha%" not exist goto crearmes


:crearmes
mkdir C:\Documents and Settings\parra\My Documents\facturacion\%ano%\%fecha%
cls
goto menu
pause


:menu
cls
echo Digite el numaro de opcion correspondiente.
echo º1-CREAR Nueva FACTURA
echo º2-Convertir Factura
echo º3-Instrucciones
echo º4-Salir
set /p "menu=>"
if %menu%==1 goto crear
if %menu%==2 goto convertir
if %menu%==3 goto instrucciones
if %menu%==4 goto salir
echo Digito(s) invalidos
pause
goto menu


:crear
cls
echo Ingresa el nombre de tu carpeta
set /p "name1=>"
echo su carpeta se llamara %name%, es eso correcto (S/N)
set /p "nameson=>"
if %nameson%==N goto crear
if %nameson%==n goto crear
if %nameson%==S goto copyopen
if %nameson%==s goto copyopen


:copyopen
cls
copy C:\Documents and Settings\parra\My Documents\facturacion\facturabase.xls C:\Documents and Settings\parra\My Documents\facturacion\%ano%\%fecha%
rename C:\Documents and Settings\parra\My Documents\facturacion\facturabase.xls C:\Documents and Settings\parra\My Documents\facturacion\%name1%.xls
pause

mi problema debe ser:

Citar
:crearmes
mkdir C:\Documents and Settings\parra\My Documents\facturacion\%ano%\%fecha%
cls
goto menu
pause

No se que mas decir, y no estoy seguro de como hacerle.

si ese es el error seguramente estos tambien esten mal:

Citarif "C:\Documents and Settings\parra\My Documents\facturacion\%ano%\%fecha%" exist goto menu
if "C:\Documents and Settings\parra\My Documents\facturacion\%ano%\%fecha%" not exist goto crearmes

Citar:copyopen
cls
copy C:\Documents and Settings\parra\My Documents\facturacion\facturabase.xls C:\Documents and Settings\parra\My Documents\facturacion\%ano%\%fecha%
rename C:\Documents and Settings\parra\My Documents\facturacion\facturabase.xls C:\Documents and Settings\parra\My Documents\facturacion\%name1%.xls
pause

de antemano gracias (perdón por las faltas ortograficas no tengo corrector en este momento.

Editado:
ya lo arregle:
Citar@echo off

title Asistente de Facturacion v1

echo Bienvenido.
pause
goto ano   


:ano
cls
echo Porfavor ingrese el ano (ejemplo 2012), por favor no cometa errores.
set /p ano=
if EXIST %ano% goto mes
if NOT EXIST %ano% goto crearano
pause


:crearano
MD %ano%
goto mes


:mes
cls
echo Inserte el numero del mes
set /p mes=
if %mes%==1 set fecha=enero
if %mes%==2 set fecha=febrero
if %mes%==3 set fecha=marzo
if %mes%==4 set fecha=abril
if %mes%==5 set fecha=mayo
if %mes%==6 set fecha=junio
if %mes%==7 set fecha=julio
if %mes%==8 set fecha=agosto
if %mes%==9 set fecha=septiembre
if %mes%==10 set fecha=octubre
if %mes%==11 set fecha=noviembre
if %mes%==12 set fecha=diciembre
pause
if exist "%ano%\%fecha%" goto menu
if not exist "%ano%\%fecha%" goto crearmes


:crearmes
mkdir %ano%\%fecha%
cls
goto menu
pause



:menu
cls
echo Digite el numero de opcion correspondiente y precione enter.
echo º1-CREAR Nueva FACTURA
echo º2-Convertir Factura
echo º3-Instrucciones
echo º4-Salir
set /p "menu=>"
if %menu%==1 goto crear
if %menu%==2 goto convertir
if %menu%==3 goto instrucciones
if %menu%==4 goto salir
echo Digito(s) invalidos
pause
goto menu

:crear
echo Ingrese nombre de la factura.
set /p "factura=>"
copy facturabase.xls %ano%\%fecha%\
ren %ano%\%fecha%\facturabase.xls %factura%.xls
pause
goto menu