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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Cuando le pides a ChatGPT que te explique lo que hace un codigo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cuando le pides a ChatGPT que te explique lo que hace un codigo  (Leído 2,290 veces)
crazykenny


Desconectado Desconectado

Mensajes: 4.225



Ver Perfil WWW
Cuando le pides a ChatGPT que te explique lo que hace un codigo
« en: 29 Abril 2023, 21:18 pm »

Hola, vereis, quisiera abrir aquí este tema para comentar lo que me acaba de pasar con la IA de ChatGPT.

Antes que nada, y, para poneros un poco mas en contexto y para explicar el porque he abierto aqui el tema: el caso es que le he pedido al chat de openai que me describa parte de un código que he estado haciendo esta tarde sobre bases de datos (y, por cierto, no me matéis si veis algun error: aun no he revisado que este libre de errores),.

Entonces, quisiera compartir las respuestas que he obtenido, ya que, entre otras cosas, "parece" que empieza a "desvariar" en la 3a respuesta.

Y, bueno, yendo al grano:

Yo:

¿Podrias decirme que hace este codigo?.
Graphics 800,600,32,2
carpeta_prog$=CurrentDir()+"contabilidad_gral\"
If FileType(carpeta_prog$)=1 Or FileType(carpeta_prog$)=0
   CreateDir carpeta_prog$
EndIf
.crear_base_datos_programa
Cls
Locate 0,0
Print "Inserte el nombre de la base de datos que desea usar:"
dat$=Input()
dat_b$=Replace$(dat$," ","")
If dat_b$=""
   .salida_crear_BD
   Cls
   Locate 0,0
   Print "No ha insertado ningun nombre."
   Print "¿Desea salir del programa? (S/N).
   dat$=Input()
   If dat$="S" Or dat$="s"
      End
   EndIf
   If dat$="N" Or dat$="n"
      Goto crear_base_datos_programa
   EndIf
   Goto salida_crear_BD
EndIf
archivo_BD$=carpeta_prog$+dat$
If FileType(archivo_BD$)=0
   .creacion_BD
   Cls
   Locate 0,0
   Print "No existe una la base de datos con el nombre indicado."
   Print "¿Que desea hacer?."
   Print "1) Crear una base de datos con el nombre indicado."
   Print "2) Volver al menu anterior.
   opcion#=Input()
   If opcion#=1
      Cls
      Locate 0,0
      Print "Pulse una tecla para ir al menu inicial y crear
      Print "una base de datos con el nombre indicado."
      opcion#=0
      WaitKey()
      Goto inicio
   EndIf
   If opcion#=2
      Goto crear_base_datos_programa
   EndIf
   Goto creacion_BD
EndIf
If FileType(archivo_BD$)=1
   Print "Ya existe una base de datos con el nombre indicado."
   fileout=ReadFile(archivo_BD$)
   cantidad_monedas#=ReadFloat(fileout)
   cantidad_usuarios#=ReadFloat(fileout)
   cantidad_cuentas#=ReadFloat(fileout)
   cantidad_movimientos#=ReadFloat(fileout)
   If cantidad_monedas#=0
      Goto salto_monedas_00
   EndIf
   cantidad_monedas#=cantidad_monedas#-1
   Dim lista_monedas$(cantidad_monedas#)
   Dim tasa_cambio_monedas#(cantidad_monedas#,cantidad_monedas#)
   For tr#=0 To cantidad_monedas#
      lista_monedas$(tr#)=ReadString(fileout)
      For trr#=0 To cantidad_monedas#
         tasa_cambio_monedas#(tr#,trr#)=ReadFloat(fileout)
      Next
   Next
   .salto_monedas_00
   cantidad_monedas#=cantidad_monedas#+1
   If cantidad_usuarios#=0
      Goto salto_usuarios_00
   EndIf
   cantidad_usuarios#=cantidad_usuarios#-1
   Dim lista_usuarios$(cantidad_usuarios#)
   For tr#=0 To cantidad_usuarios#
      lista_usuarios$(tr#)=ReadString(fileout)
   Next
   cantidad_usuarios#=cantidad_usuarios#+1
   .salto_usuarios_00
   If cantidad_cuentas#=0
      Goto salto_cuentas_00
   EndIf
   cantidad_cuentas#=cantidad_cuentas#-1
   Dim lista_cuentas$(cantidad_cuentas#)
   Dim datos_cuentas#(cantidad_cuentas#,2)
   For tr#=0 To cantidad_cuentas#
      lista_cuentas$(tr#)=ReadString(fileout)
      For trr#=0 To 2
         datos_cuentas#(tr#,trr#)=ReadFloat(fileout)
      Next
   Next
   cantidad_cuentas#=cantidad_cuentas#+1
   .salto_cuentas_00
   If cantidad_movimientos#=0
      Goto salto_movimientos_00
   EndIf
   cantidad_movimientos#=cantidad_movimientos#-1
   Dim lista_movimientos$(cantidad_movimientos#,2)
   Dim datos_movimientos#(cantidad_movimientos#,2)
   For tr#=0 To cantidad_movimientos#
      For trr#=0 To 2
         lista_movimientos$(tr#,trr#)=ReadString(fileout)
         datos_movimientos#(tr#,trr#)=ReadString(fileout)
      Next
   Next
   cantidad_movimientos#=cantidad_movimientos#+1
   .salto_movimientos_00
   CloseFile(fileout)
   Cls
   Locate 0,0
   Print "Se han guardado todos los datos."
   Print "Pulse una tecla para seguir."
   WaitKey()
   Goto inicio
EndIf
.inicio
Cls
Locate 0,0
Print "¿Que desea hacer?."
Print "-2) Salir del programa guardando los datos."
Print "-1) Salir del programa sin guardar los datos."
Print "1) Crear/añadir una moneda."
Print "2) Modificar el nombre de una moneda."
Print "3) Modificar la tasa de cambio entre 2 monedas."
Print "4) Crear un usuario."
Print "5) Modificar el nombre de un usuario."
Print "6) Añadir y asociar una cuenta a un usuario."
Print "7) Añadir un movimiento a una cuenta de un usuario."
Print "8) Ver una lista de todas las monedas disponibles."
Print "9) Ver una lista de todos los usuarios."
Print "10) Ver el dinero de todas las cuentas de un usuario."
Print "11) Ver todos los movimientos de todas cuenta de un usuario."
opcion#=Input()
If opcion#=-1
   .salida_sin_guardar
   Cls
   Locate 0,0
   Print "¿Realmente desea salir del programa descartando los cambios?. (S/N)"
   dat$=Input()
   If dat$="S" Or dat$="s"
      End
   EndIf
   If dat="N" Or dat$="n"
      Goto inicio
   EndIf
   Goto salida_sin_guardar
EndIf
If opcion#=-1
   .salida_guardando
   Cls
   Locate 0,0
   Print "¿Realmente desea salir del programa guardando los cambios?. (S/N)"
   dat$=Input()
   If dat$="S" Or dat$="s"
      If FileType(archivo_BD$)=1
         DeleteFile archivo_BD$
      EndIf
      fileout=WriteFile(archivo_BD$)
      WriteFloat(fileout,cantidad_monedas#)
      WriteFloat(fileout,cantidad_usuarios#)
      WriteFloat(fileout,cantidad_cuentas#)
      WriteFloat(fileout,cantidad_movimientos#)
      If cantidad_monedas#=0
         Goto salto_monedas
      EndIf
      cantidad_monedas#=cantidad_monedas#-1
      For tr#=0 To cantidad_monedas#
         WriteString(fileout,lista_monedas$(tr#))
         For trr#=0 To cantidad_monedas#
            WriteFloat(fileout,tasa_cambio_monedas#(tr#,trr#))
         Next
      Next
      .salto_monedas
      cantidad_monedas#=cantidad_monedas#+1
      If cantidad_usuarios#=0
         Goto salto_usuarios
      EndIf
      cantidad_usuarios#=cantidad_usuarios#-1
      For tr#=0 To cantidad_usuarios#
         WriteString(fileout,lista_usuarios$(tr#))
      Next
      cantidad_usuarios#=cantidad_usuarios#+1
      .salto_usuarios
      If cantidad_cuentas#=0
         Goto salto_cuentas
      EndIf
      cantidad_cuentas#=cantidad_cuentas#-1
      For tr#=0 To cantidad_cuentas#
         WriteString(fileout,lista_cuentas$(tr#))
         For trr#=0 To 2
            WriteFloat(fileout,datos_cuentas#(tr#,trr#))
         Next
      Next
      cantidad_cuentas#=cantidad_cuentas#+1
      .salto_cuentas
      If cantidad_movimientos#=0
         Goto salto_movimientos
      EndIf
      cantidad_movimientos#=cantidad_movimientos#-1
      For tr#=0 To cantidad_movimientos#
         For trr#=0 To 2
            WriteString(fileout,lista_movimientos$(tr#,trr#))
            WriteString(fileout,datos_movimientos#(tr#,trr#))
         Next
      Next
      cantidad_movimientos#=cantidad_movimientos#+1
      .salto_movimientos
      CloseFile(fileout)
      Cls
      Locate 0,0
      Print "Se han guardado todos los datos."
      Print "Pulse una tecla para salir del programa."
      WaitKey()
      End
   EndIf
   If dat$="N" Or dat$="n"
      Goto inicio
   EndIf
   Goto salida_guardando
EndIf
If opcion#=1
   Cls
   Locate 0,0
   Print "Inserte el nombre de la moneda en cuestion:"
   dat$=Input()
   dat_c$=Replace$(dat$," ","")
   Cls
   Locate 0,0
   If dat_c$=""
      Print "No ha insertado ningun nombre o bien ha insertado
      Print "un nombre añadiendo solo espacios."
      Print "Puse una tecla para volver al menu anterior."
      WaitKey()
      Goto inicio
   EndIf
   Cls
   Locate 0,0
   If cantidad_monedas#=0
      Dim lista_monedas$(cantidad_monedas#)
      Dim tasa_cambio_monedas#(cantidad_monedas#,cantidad_monedas#)
      lista_monedas$(cantidad_monedas#)=dat$
      cantidad_monedas#=cantidad_monedas#+1
      Print "Se ha creado/añadido la nueva moneda."
      Print "Pulse una tecla para volver al menu anterior."
      WaitKey()
      Goto inicio
   EndIf
   If cantidad_monedas#>0
      cantidad_monedas#=cantidad_monedas#-1
      Dim lista_monedas_b$(cantidad_monedas#)
      Dim tasa_cambio_monedas_b#(cantidad_monedas#,cantidad_monedas#)
      For tr#=0 To cantidad_monedas#
         If dat$=lista_monedas$(tr#)
            Print "Ya existe una moneda con el nombre indicado."
            Print "Pulse una tecla para volver al menu anterior."
            cantidad_monedas#=cantidad_monedas#+1
            WaitKey()
            Goto inicio
         EndIf
         dat_b$=lista_monedas$(tr#)
         lista_monedas_b$(tr#)=dat_b$
         For trr#=0 To cantidad_monedas#
            opciones#=tasa_cambio_monedas#(tr#,trr#)
            tasa_cambio_monedas_b#(tr#,trr#)=opciones#
         Next
      Next
      cantidad_monedas#=cantidad_monedas#+1
      Dim lista_monedas$(cantidad_monedas#)
      Dim tasa_cambio_monedas#(cantidad_monedas#,cantidad_monedas#)
      cantidad_monedas#=cantidad_monedas#-1
      For tr#=0 To cantidad_monedas#
         dat_b$=lista_monedas_b$(tr#)
         lista_monedas$(tr#)=dat_b$
         For trr#=0 To cantidad_monedas#
            opciones#=tasa_cambio_monedas_b#(tr#,trr#)
            tasa_cambio_monedas#(tr#,trr#)=opciones#
         Next
      Next
      cantidad_monedas#=cantidad_monedas#+1
      lista_monedas$(cantidad_monedas#)=dat$
      cantidad_monedas#=cantidad_monedas#+1
      Cls
      Locate 0,0
      Print "Se ha creado/añadido la nueva moneda."
      Print "Pulse una tecla para volver al menu anterior."
      WaitKey()
      Goto inicio
   EndIf
EndIf
If opcion#=2
   Cls
   Locate 0,0
   If cantidad_monedas#=0
      Print "No se ha creado ninguna moneda."
      Print "Debe crear almenos una antes de acceder a esta opcion."
      Print "Pulse una tecla para volver al menu anterior."
      WaitKey()
      Goto inicio
   EndIf
   Print "Inserte el nombre de la moneda para modificarle el nombre:"
   dat$=Input()
   Cls
   Locate 0,0
   cantidad_monedas#=cantidad_monedas#-1
   For tr#=0 To cantidad_monedas#
      If dat$=lista_monedas$(tr#)
         Print "Se ha encontrado la moneda en cuestion."
         Print "Inserte el nuevo nombre de la moneda:"
         dat_b$=Input()
         Cls
         Locate 0,0
         For trr#=0 To cantidad_monedas#
            If dat_b$=lista_monedas$(trr#)
               cantidad_monedas#=cantidad_monedas#+1
               Print "Nombre no modificado:"
               Print "El nuevo nombre ya esta en uso."
               Print "Pulse una tecla para volver al menu anterior."
               WaitKey()
               Goto inicio
            EndIf
         Next
         lista_monedas$(tr#)=dat_b$
         cantidad_monedas#=cantidad_monedas#+1
         Print "Se ha modificado el nombre de la moneda."
         Print "Pulse una tecla para volver al menu anterior.
      EndIf
   Next
   cantidad_monedas#=cantidad_monedas#+1
   Print "No se ha encontrado ninguna moneda con el nombre indicado."
   Print "Pulse una tecla para volver al menu anterior."
   WaitKey()
   Goto inicio
EndIf
If opcion#=4
   Cls
   Locate 0,0
   Print "Inserte el nombre del nuevo usuario:"
   dat$=Input()
   dat_b$=Replace$(dat$," ","")
   Cls
   Locate 0,0
   If dat_b$=""
      Print "No ha insertado ningun nombre o bien ha insertado
      Print "un nombre añadiendo solo espacios."
      Print "Puse una tecla para volver al menu anterior."
      WaitKey()
      Goto inicio
   EndIf
   If cantidad_usuarios#=0
      Dim lista_usuarios$(cantidad_usuarios#)
      lista_usuarios$(cantidad_usuarios#)=dat$
      cantidad_usuarios#=cantidad_usuarios#+1
      Print "Se ha añadido el nuevo usuario."
      Print "Pulse una tecla para volver al menu anterior."
      WaitKey()
      Goto inicio
   EndIf
   If cantidad_usuarios#>0
      cantidad_usuarios#=cantidad_usuarios#-1
      Dim lista_usuarios_b$(cantidad_usuarios#)
      For tr#=0 To cantidad_usuarios#
         If dat$=lista_usuarios$(tr#)
            cantidad_usuarios#=cantidad_usuarios#+1
            Print "Ya existe un usuario con el nombre indicado."
            Print "Pulse una tecla para volver al menu anterior."
            WaitKey()
            Goto inicio
         EndIf
         dat_b$=lista_usuarios$(tr#)
         lista_usuarios_b$(tr#)=dat_b$
      Next
      cantidad_usuarios#=cantidad_usuarios#+1
      Dim lista_usuarios$(cantidad_usuarios#)
      cantidad_usuarios#=cantidad_usuarios#-1
      For tr#=0 To cantidad_usuarios#
         dat_b$=lista_usuarios_b$(tr#)
         lista_usuarios$(tr#)=dat_b$
      Next
      cantidad_usuarios#=cantidad_usuarios#+1
      lista_usuarios$(cantidad_usuarios#)=dat$
      cantidad_usuarios#=cantidad_usuarios#+1
      Print "Se ha añadido el nuevo usuario."
      Print "Pulse una tecla para volver al menu anterior."
      WaitKey()
      Goto inicio
   EndIf
EndIf
If opcion#=5
   Cls
   Locate 0,0
   If cantidad_usuarios#=0
      Print "No ha creado ningun usuario."
      Print "Debe crear almenos uno antes de acceder a esta opcion."
      Print "Pulse una tecla para volver al menu anterior."
      WaitKey()
      Goto inicio
   EndIf
   Print "Inserte el nombre de usuario para modificarle el nombre:"
   dat$=Input()
   Cls
   Locate 0,0
   cantidad_usuarios#=cantidad_usuarios#-1
   For tr#=0 To cantidad_usuarios#
      If dat$=lista_usuarios$(tr#)
         Print "Se ha encontrado un usuario con el nombre indicado."
         Print "Inserte el nuevo nombre de usuario:"
         dat$=Input()
         For trr#=0 To cantidad_usuarios#
            If dat$=lista_usuarios$(trr#)
               Cls
               Locate 0,0
               cantidad_usuarios#=cantidad_usuarios#+1
               Print "Nombre no modificado:"
               Print "El nuevo nombre ya esta en uso."
               Print "Pulse una tecla para volver al menu anterior."
               WaitKey()
               Goto inicio
            EndIf
         Next
         lista_usuarios$(tr#)=dat$
         cantidad_usuarios#=cantidad_usuarios#+1
         Print "Se ha modificado el nombre de usuario."
         Print "Pulse una tecla para volver al menu anterior."
         WaitKey()
         Goto inicio
      EndIf
   Next
   cantidad_usuarios#=cantidad_usuarios#+1
   Print "No se ha encontrado ningun nombre de usuario con el nombre indicado."
   Print "Pulse una tecla para volver al menu anterior."
   WaitKey()
   Goto inicio
EndIf


ChatGPT:

Este código es un programa de contabilidad que permite crear y manipular bases de datos de usuarios, cuentas y movimientos en diferentes monedas.

La primera línea define las dimensiones de la pantalla y la profundidad de color.

La segunda línea almacena la ruta de la carpeta de trabajo actual en la variable carpeta_prog$.

La tercera línea comprueba si la carpeta carpeta_prog$ existe, y si no es así, la crea.

La cuarta línea es una etiqueta que indica el comienzo de una sección de código que creará una nueva base de datos si no existe ya una con el nombre indicado.

La sección de creación de la base de datos comprueba si la base de datos con el nombre indicado ya existe. Si existe, lee los datos almacenados en ella y los carga en variables en la memoria del programa.

Después, el programa muestra un menú de opciones que permite al usuario crear, modificar y eliminar monedas, usuarios, cuentas y movimientos.


Yo:
¿Que hace cada opcion disponible?.


ChatGPT:

1. Crear/añadir una moneda: Esta opción permite agregar una nueva moneda a la base de datos o añadir una moneda existente, junto con su tasa de cambio en relación a las demás monedas registradas.

2. Modificar el nombre de una moneda: Esta opción permite modificar el nombre de una moneda ya existente en la base de datos.

3. Modificar la tasa de cambio entre 2 monedas: Esta opción permite cambiar la tasa de cambio entre dos monedas ya existentes en la base de datos.

4. Crear un usuario: Esta opción permite agregar un nuevo usuario a la base de datos.

5. Modificar el nombre de un usuario: Esta opción permite cambiar el nombre de un usuario ya existente en la base de datos.

6. Añadir y asociar una cuenta a un usuario: Esta opción permite agregar una cuenta bancaria a un usuario y asociarla con su perfil.

7. Hacer un movimiento: Esta opción permite realizar una transacción bancaria, es decir, mover una cantidad de dinero de una cuenta a otra.

8. Consultar el saldo de una cuenta: Esta opción permite conocer el saldo actual de una cuenta bancaria.

9. Consultar los movimientos de una cuenta: Esta opción permite ver los movimientos realizados en una cuenta bancaria en particular.

-1. Salir del programa sin guardar los datos: Esta opción permite salir del programa sin guardar los cambios realizados en la base de datos.

-2. Salir del programa guardando los datos: Esta opción permite salir del programa guardando los cambios realizados en la base de datos.


Yo:

¿Que hace cada parte del codigo despues de mostrar estas opciones?.



ChatGPT:

Después de mostrar las opciones al usuario, el código espera a que el usuario ingrese una opción. Una vez que el usuario ingresa la opción, el código utiliza una estructura de control de flujo if...else para determinar qué acción tomar en función de la opción ingresada.

Si el usuario ingresa la opción 1, el código llama a la función calculateBMI() para calcular el índice de masa corporal. Esta función solicita al usuario que ingrese su altura y peso, y luego realiza el cálculo del índice de masa corporal utilizando la fórmula adecuada. Finalmente, la función devuelve el valor del índice de masa corporal calculado y lo muestra en la pantalla.

Si el usuario ingresa la opción 2, el código llama a la función calculateDistance() para calcular la distancia entre dos puntos en un plano cartesiano. Esta función solicita al usuario que ingrese las coordenadas x e y de dos puntos y luego realiza el cálculo de la distancia utilizando la fórmula adecuada. Finalmente, la función devuelve el valor de la distancia calculada y lo muestra en la pantalla.

Si el usuario ingresa la opción 3, el código llama a la función calculateHypotenuse() para calcular la longitud de la hipotenusa de un triángulo rectángulo. Esta función solicita al usuario que ingrese las longitudes de los dos catetos del triángulo y luego realiza el cálculo de la longitud de la hipotenusa utilizando la fórmula adecuada. Finalmente, la función devuelve el valor de la longitud de la hipotenusa calculada y lo muestra en la pantalla.

Si el usuario ingresa la opción 4, el código sale del programa y muestra un mensaje de despedida.

Si el usuario ingresa una opción que no está en el rango de 1 a 4, el código muestra un mensaje de error y vuelve a mostrar las opciones.


En línea

A nivel personal, lo que me da mas miedo no son los planteamientos y acciones individuales, sino las realizadas en grupo, ya que estas ultimas pueden acabar con consecuencias especialmente nefastas para todos.
Se responsable, consecuente y da ejemplo.
https://informaticayotrostemas.blogspot.com/

Mi canal de Youtube:

https://www.youtube.com/@crazykenny
Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.351


Ver Perfil
Re: Cuando le pides a ChatGPT que te explique lo que hace un codigo
« Respuesta #1 en: 1 Mayo 2023, 16:17 pm »

El código que le pasas es muy largo.
El tamaño máximo de los mensajes es de 2000 caracteres (eso sí sin límite de mensajes según le pregunté una vez, sin embargo su 'ventana de memoria' se limita a cierta cantidad de kb)...

Si es ChatGPT, quien te responde, el mensaje se corta, puedes perdirle que continúe desde donde se quedó y suele funcionar, pero si ocurre varias veces con el mismo mensaje no suele llegar a buen término.
Si eres tú quiene le pregunta, a ChatGPT, es muy probable que solo le lleguen los primeros 2000 caracteres, luego la respuesta que te elabore no sea adecuada cuando se le pregunta acerca de una parte que no ha recibido. en ese caso puede que esté leyendo más allá del contenido de tu mensaje, es decir ¿tal vez esté leyendo parte del contenido del mensaje de otro usuario?.

Lo que deberías hacer es fraccionar el código en unidades funcionales y preguntarle por cada una separadamente.

También para asegurarte, tras pegarle todo el código y  encabézalo con un:
- "Cuántos caracteres tiene este mensaje a partir de este punto?"
O preguntarle en el siguiente mensaje;
- "Cuántos caracteres tenía mi mensaje anterior?"
o incluso:
- Repíteme las 3 últimas línea de mi mensaje previo.

...así tendrás certidumbre de hasta donde ha sido capaz de leer.

Cuando el mensaje supera solo ligeramente el límite, uno puede intentar abreviarlo acortando los nombres de las variables, por ejemplo... aunque en este ejemplo, no se resolvería así, porque me temo que supere los 10.000 caracteres...


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Lo Que Uno Hace Cuando No Estudia ;-)
Foro Libre
Roy-Mustang 7 3,450 Último mensaje 27 Septiembre 2010, 01:14 am
por Castiblanco
Cuando lo privado se hace público
Noticias
wolfbcn 0 1,233 Último mensaje 19 Marzo 2013, 01:50 am
por wolfbcn
Que se hace cuando se acaban las IPs ??
Redes
virtualedu 3 2,022 Último mensaje 20 Julio 2015, 19:29 pm
por virtualedu
Alguien que me explique a detalle este código.
Programación C/C++
AleXx1Cov 3 1,948 Último mensaje 14 Agosto 2017, 04:02 am
por engel lex
¿Alguien que explique este código?
Programación General
Tachikomaia 0 2,026 Último mensaje 3 Diciembre 2020, 22:30 pm
por Tachikomaia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines