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 - 8789poli

#1
Programación C/C++ / [?] Fallo de segmentación - C
14 Diciembre 2010, 17:26 PM
Buenas!  :)

Estoy recién empezando a realizar un juego en C y lo puedo compilar y funciona todo bien hasta que llega a la función actualizarPiezas, al intentar designarle valores a un arreglo 2x2 específicamente. Me tira un error de segmentación ("Fallo de segmentacion"). Si pongo como comentario la designación del arreglo 2x2 me compila y funciona todo perfectamente.
(Lo compilé desde ubuntu con gcc 4.4.3)

Función donde me tira el error


void actualizacionPiezas(int *piezas[8][8], int *equipoBlanco, int *equipoNegro){

int i,j;   

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

*piezas[i][j] = 7;         //<============================= ERROR

}
}

}


Codigo completo (hasta ahora  :P)


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define limpiarPantalla system("clear");

char menu();
void jugar();
void ingresarNombreJugador();
void informacion();
void ingresarEquipoJugador();
void actualizacionPiezas();
void tomarPieza();

////////////////////////////////////////////////////////////////////////////////////////_____________________________________
int main(){ ///////////////////////////////////////////////////////////////////////////|| MAIN

switch(menu()){
case '1': jugar(); break;
case '2': informacion(); break;
case '3': return 0; break;
}
}
////////////////////////////////////////////////////////////////////////////////////////_____________________________________
char menu(){ //////////////////////////////////////////////////////////////////////////|| MENÚ

char opcion;

limpiarPantalla

printf(" 1. Jugar \n 2. Informacion \n 3. Salir \n\n Seleccione una opcion y presione ENTER\n\n >:");

        do{opcion = getchar();} while(opcion != '1' && opcion != '2' && opcion != '3');

limpiarPantalla

return opcion;
}
////////////////////////////////////////////////////////////////////////////////////////_____________________________________
void jugar(){ /////////////////////////////////////////////////////////////////////////|| JUGAR

char jugadorBlanco[30], jugadorNegro[30];
int equipoBlanco, equipoNegro, tomarPiezaX, tomarPiezaY, piezas[8][8];

ingresarNombreJugador(&jugadorBlanco, &jugadorNegro);

limpiarPantalla

ingresarEquipoJugador(&equipoBlanco, &equipoNegro);

limpiarPantalla

actualizacionPiezas(&piezas, &equipoBlanco, &equipoNegro);

limpiarPantalla

tomarPieza(&tomarPiezaX, &tomarPiezaY);

}
////////////////////////////////////////////////////////////////////////////////////////_____________________________________
void ingresarNombreJugador(char *jugadorBlanco, char *jugadorNegro){ /////////////////|| INGRESAR NOMBRE JUGADOR

printf("Ingrese el nombre del jugador blanco\n\n >: ");
scanf("%s", &*jugadorBlanco);

printf("\nIngrese el nombre del jugador negro\n\n >: ");
scanf("%s", &*jugadorNegro);

}
////////////////////////////////////////////////////////////////////////////////////////_____________________________________
void ingresarEquipoJugador(int *equipoBlanco, int *equipoNegro){ //////////////////////|| INGRESAR EQUIPO JUGADOR

printf("Clasico: 1\nJapones: 2\nMayas: 3\n\n");
printf("Ingrese el equipo del jugador blanco\n\n >: ");
scanf("%d", &*equipoBlanco);

printf("\nIngrese el equipo del jugador negro\n\n >: ");
scanf("%d", &*equipoNegro);

switch(*equipoBlanco){
case 1: *equipoBlanco = 0; break;
case 2: *equipoBlanco = 2; break;
case 3: *equipoBlanco = 4; break;
}

switch(*equipoNegro){
case 1: *equipoNegro = 1; break;
case 2: *equipoNegro = 3; break;
case 3: *equipoNegro = 5; break;
}

}
////////////////////////////////////////////////////////////////////////////////////////_____________________________________
void informacion(){ ///////////////////////////////////////////////////////////////////|| INFORMACIÓN

printf("\ninformacion\n");

}
////////////////////////////////////////////////////////////////////////////////////////_____________________________________
void actualizacionPiezas(int *piezas[8][8], int *equipoBlanco, int *equipoNegro){ ////|| ACTUALIZACIÓN PIEZAS

int i,j;      // IGUALAMOS EL TABLERO ENTERO A 7 (VACÍO)

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

*piezas[i][j] = 7;         //<============================= ERROR

}
}

}
////////////////////////////////////////////////////////////////////////////////////////_____________________________________
void tomarPieza(int *tomarPiezaX, int *tomarPiezaY){ /////////////////////////////////////|| TOMAR PIEZA
char aux1;

printf("Ingrese las coordenadas 'x' e 'y' (Ejemplo: b5)\n\n >: ");
scanf("%c%d", &aux1, &*tomarPiezaY);

switch(aux1){
case 'a': *tomarPiezaX = 0; break;
case 'b': *tomarPiezaX = 1; break;
case 'c': *tomarPiezaX = 2; break;
case 'd': *tomarPiezaX = 3; break;
case 'e': *tomarPiezaX = 4; break;
case 'f': *tomarPiezaX = 5; break;
case 'g': *tomarPiezaX = 6; break;
case 'h': *tomarPiezaX = 7; break;
}

switch(*tomarPiezaY){
case 1: *tomarPiezaY = 0; break;
case 2: *tomarPiezaY = 1; break;
case 3: *tomarPiezaY = 2; break;
case 4: *tomarPiezaY = 3; break;
case 5: *tomarPiezaY = 4; break;
case 6: *tomarPiezaY = 5; break;
case 7: *tomarPiezaY = 6; break;
case 8: *tomarPiezaY = 7; break;
}

}


No se me ocurre cual puede ser el error  :-\ 
Por favor si alguien puede ayudarme a descubrir el error le estaré muy agradecido  ;D

Saludos!
#2
Buenas
Mi duda es la siguiente ... Si yo tengo una variable, por ejemplo "A=hola", y pongo %A:~0,2% me tendria que salir "ho", pero ¿es posible usar esa misma forma pero de atras para adelante?... que en vez de "ho" saliera "la"   :huh:

#3
Scripting / El poder del ocio :D
23 Noviembre 2008, 22:44 PM
Hace poco que he estado leyendo en le foro sobre los archivos .bat, pero  explican tan claramente y bien que he aprendido muchisimo en poco tiempo  :D
Por lo que les dejo mi primera gran "creacion" XD (no sirve de mucho, pero se ve bonito  :))

Relojito
@echo off
mode con cols=67
mode con lines=20
title .                               ..:: Reloj ocioso by MxPower ::..                             
color 0a
goto HORA1

REM ---------------------------------------------------------------------------

:HORA1
cls
set H1=%TIME:~0,1%
if %H1%==0 (goto UHOR-0)
if %H1%==1 (goto UHOR-1)
if %H1%==2 (goto UHOR-2)

:UHOR-0
set "UNOHRU= _ "
set "DOSHRU=³ ³"
set "TREHRU=³_³"
goto HORA2

:UHOR-1
set "UNOHRU=   "
set "DOSHRU= ³ "
set "TREHRU= ³ "
goto HORA2

:UHOR-2
set "UNOHRU= _ "
set "DOSHRU= _³"
set "TREHRU=³_ "
goto HORA2

REM ---------------------------------------------------------------------------

:HORA2
set H2=%TIME:~1,1%
if %H2%==0 (goto DHOR-0)
if %H2%==1 (goto DHOR-1)
if %H2%==2 (goto DHOR-2)
if %H2%==3 (goto DHOR-3)
if %H2%==4 (goto DHOR-4)
if %H2%==5 (goto DHOR-5)
if %H2%==6 (goto DHOR-6)
if %H2%==7 (goto DHOR-7)
if %H2%==8 (goto DHOR-8)
if %H2%==9 (goto DHOR-9)

:DHOR-0
set "UNOHRD= _ "
set "DOSHRD=³ ³"
set "TREHRD=³_³"
goto MINU1

:DHOR-1
set "UNOHRD=   "
set "DOSHRD= ³ "
set "TREHRD= ³ "
goto MINU1

:DHOR-2
set "UNOHRD= _ "
set "DOSHRD= _³"
set "TREHRD=³_ "
goto MINU1

:DHOR-3
set "UNOHRD= _ "
set "DOSHRD= _³"
set "TREHRD= _³"
goto MINU1

:DHOR-4
set "UNOHRD=   "
set "DOSHRD=³_³"
set "TREHRD=  ³"
goto MINU1

:DHOR-5
set "UNOHRD= _ "
set "DOSHRD=³_ "
set "TREHRD= _³"
goto MINU1

:DHOR-6
set "UNOHRD= _ "
set "DOSHRD=³_ "
set "TREHRD=³_³"
goto MINU1

:DHOR-7
set "UNOHRD= _ "
set "DOSHRD=  ³"
set "TREHRD=  ³"
goto MINU1

:DHOR-8
set "UNOHRD= _ "
set "DOSHRD=³_³"
set "TREHRD=³_³"
goto MINU1

:DHOR-9
set "UNOHRD= _ "
set "DOSHRD=³_³"
set "TREHRD= _³"
goto MINU1

REM ---------------------------------------------------------------------------

:MINU1
set M1=%TIME:~3,1%
if %M1%==0 (goto UMIN-0)
if %M1%==1 (goto UMIN-1)
if %M1%==2 (goto UMIN-2)
if %M1%==3 (goto UMIN-3)
if %M1%==4 (goto UMIN-4)
if %M1%==5 (goto UMIN-5)

:UMIN-0
set "UNOMIU= _ "
set "DOSMIU=³ ³"
set "TREMIU=³_³"
goto MINU2

:UMIN-1
set "UNOMIU=   "
set "DOSMIU= ³ "
set "TREMIU= ³ "
goto MINU2

:UMIN-2
set "UNOMIU= _ "
set "DOSMIU= _³"
set "TREMIU=³_ "
goto MINU2

:UMIN-3
set "UNOMIU= _ "
set "DOSMIU= _³"
set "TREMIU= _³"
goto MINU2

:UMIN-4
set "UNOMIU=   "
set "DOSMIU=³_³"
set "TREMIU=  ³"
goto MINU2

:UMIN-5
set "UNOMIU= _ "
set "DOSMIU=³_ "
set "TREMIU= _³"
goto MINU2

REM ---------------------------------------------------------------------------

:MINU2
set M2=%TIME:~4,1%
if %M2%==0 (goto DMIN-0)
if %M2%==1 (goto DMIN-1)
if %M2%==2 (goto DMIN-2)
if %M2%==3 (goto DMIN-3)
if %M2%==4 (goto DMIN-4)
if %M2%==5 (goto DMIN-5)
if %M2%==6 (goto DMIN-6)
if %M2%==7 (goto DMIN-7)
if %M2%==8 (goto DMIN-8)
if %M2%==9 (goto DMIN-9)

:DMIN-0
set "UNOMID= _ "
set "DOSMID=³ ³"
set "TREMID=³_³"
goto FECHA

:DMIN-1
set "UNOMID=   "
set "DOSMID= ³ "
set "TREMID= ³ "
goto FECHA

:DMIN-2
set "UNOMID= _ "
set "DOSMID= _³"
set "TREMID=³_ "
goto FECHA

:DMIN-3
set "UNOMID= _ "
set "DOSMID= _³"
set "TREMID= _³"
goto FECHA

:DMIN-4
set "UNOMID=   "
set "DOSMID=³_³"
set "TREMID=  ³"
goto FECHA

:DMIN-5
set "UNOMID= _ "
set "DOSMID=³_ "
set "TREMID= _³"
goto FECHA

:DMIN-6
set "UNOMID= _ "
set "DOSMID=³_ "
set "TREMID=³_³"
goto FECHA

:DMIN-7
set "UNOMID= _ "
set "DOSMID=  ³"
set "TREMID=  ³"
goto FECHA

:DMIN-8
set "UNOMID= _ "
set "DOSMID=³_³"
set "TREMID=³_³"
goto FECHA

:DMIN-9
set "UNOMID= _ "
set "DOSMID=³_³"
set "TREMID= _³"
goto FECHA

REM ---------------------------------------------------------------------------

:FECHA
set DIA=%DATE:~0,2%
set MES=%DATE:~3,2%
set ANO=%DATE:~6,4%
goto DEFMES

:DEFMES
if %MES%==1 (set "MFP=   Enero  ")
if %MES%==2 (set "MFP=  Febrero ")
if %MES%==3 (set "MFP=   Marzo  ")
if %MES%==4 (set "MFP=   Abril  ")
if %MES%==5 (set "MFP=   Mayo   ")
if %MES%==6 (set "MFP=   Junio  ")
if %MES%==7 (set "MFP=   Julio  ")
if %MES%==8 (set "MFP=  Agosto  ")
if %MES%==9 (set "MFP=Septiembre")
if %MES%==10 (set "MFP= Octubre  ")
if %MES%==11 (set "MFP=Noviembre ")
if %MES%==12 (set "MFP=Diciembre ")


:RELOJ
echo.
echo.
echo          ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo          º²²²²²²²²²²±ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿±²²²²²²²²²²±º
echo          º²MxPower²²±³ %UNOHRU% %UNOHRD%   %UNOMIU% %UNOMID%  ³±²²²²²²²²²²±º
echo          º²²²²²²²²²²±³ %DOSHRU% %DOSHRD% . %DOSMIU% %DOSMID%  ³±²²²²²²²²²²±º
echo          º²²²²²²²²²²±³ %TREHRU% %TREHRD% . %TREMIU% %TREMID%  ³±²²²²²²²²²²±º
echo          º²²²²²²²²²²±³                    ³±²²²²²²²²²²±º
echo          º²²²²²²²²²²±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±²²²²²²²²²²±º
echo          º²²²²²²²²²²±±±±±±±±±±±±±±±±±±±±±±±±²²²²²²²²²²±º
echo          º²²²²²²²²°ÚÄÄ¿±°ÚÄÄÄÄÄÄÄÄÄÄ¿±°ÚÄÄÄÄ¿±²²²²²²²²±º
echo          º²²²²²²²²°³%DIA%³±°³%MFP%³±°³%ANO%³±²²²²²²²²±º
echo          º²²²²²²²²°ÀÄÄÙ±°ÀÄÄÄÄÄÄÄÄÄÄÙ±°ÀÄÄÄÄÙ±²²²²²²²²±º
echo          º±±±±±±±²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²±±±±±±±±º
echo          ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo             ÀÄÄÄÄÄÙ                           ÀÄÄÄÄÄÙ
echo.
echo.
echo.
echo (para actualizar el reloj precione una tecla..)
pause>nul
goto HORA1


Ya se que el codigo es muy largo, pero no supe hacerlo de otra manera X____X

...

Espero que les guste  ;D

bye
#4
Hola, bueno primero que nada yo no tengo ni la mas reprostituta idea de como hacer un crack XD, por lo que les pido ayuda con este programa que definitivamente no tiene crack (ya he buscado en todos los sitios y nada)

Aqui les dejo el link del programa.(es de la pagina oficial asique nos procupeis ;))

Linguata estonio:
http://www.linguata.eu/linguataeu/Aprender_Estonio/EsLinguataEstonio.exe

NOTA: El programa se llama "linguata estonio", no "linguata estonian" (que esta en ingles)

Asique si alguien quiere practicar haciendo cracks, que lo haga con este programa plz  :(


De antemano muchisimas gracias  ;D
#5
Scripting / Duda sobre comando extraer
14 Noviembre 2008, 15:58 PM
Buenas, mi duda es que si existe algun comando que te permita extraer el contenido de algun archivo .rar o .zip (como la funcion "extraer aqui..." del winrar); y de existir, podría descomprimirce un archivo que está "acoplado" a un archivo .bat?
(con acoplado me refiero al comando COPY /B *.bat + *.rar **.rar)
:huh:

ayuda plz