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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Me crashea el programa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Me crashea el programa  (Leído 7,305 veces)
jaxoR

Desconectado Desconectado

Mensajes: 93

?


Ver Perfil WWW
Me crashea el programa
« en: 12 Marzo 2014, 16:50 pm »

Bueno, mi problema es que el programa me crashea al poner 1 para que genere el codigo. El code no está terminado pero no puedo terminar de resolver eso:

Código
  1. int main()
  2. {
  3.    int a, i, j, k, f;
  4.    int b[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
  5.    char c[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '\0'};
  6.    printf("==========================\n== Generador de codigos ==\n==========================\n\n* Ingrese 1 si quiere generar un codigo\n");
  7.    scanf("%i", &a);
  8.  
  9.    char letra[5];
  10.  
  11.    if (!(a = 1))
  12.    {
  13.        printf("Necesitas ingresar el numero 1 para generar un codigo\n");
  14.    }
  15.  
  16.    if (a = 1)
  17.    {
  18.        printf("En breve se generara tu codigo\n");
  19.  
  20.        for(j=0; j=5; j++)
  21.        {
  22.            i++;
  23.            k = 0;
  24.            k = 1 + rand() % 23;
  25.            c[k] = letra[i];
  26.        }
  27.    }
  28.  
  29.    return 0;
  30. }


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Me crashea el programa
« Respuesta #1 en: 12 Marzo 2014, 16:59 pm »

Código
  1. int main()
  2. {
  3.  int a;
  4.  
  5.  scanf("%i", &a);
  6.  
  7.  if (!(a = 1))
  8.  {
  9.  }
  10.  
  11.  if (a = 1)
  12.  {
  13.  }
  14. }

Eso está mal se mire por donde se mire:

* !(a=1) es equivalente a !1... luego ese if NUNCA se ejecutará
* (a=1) es equivalente a 1... el segundo if se ejecutará SIEMPRE.

La forma correcta de ponerlo es usando los operadores de comparación:

Código
  1.  if ( a != 1 )
  2.  {
  3.  }
  4.  
  5.  if (a == 1)
  6.  {
  7.  }
  8. }

o mejor aún:

Código
  1.  if ( a != 1 )
  2.  {
  3.  }
  4.  else
  5.  {
  6.  }
  7. }

Luego, quitando eso, creo que deberías fijarte en la variable "i"... que no se inicializa en la vida... al no inicializarse, en "letra" vas a acceder a una posición de memoria incorrecta y el programa acabará con un bonito pantallazo.


En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Me crashea el programa
« Respuesta #2 en: 12 Marzo 2014, 17:09 pm »

Código:
  char letra[5];
que valores tiene?
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Me crashea el programa
« Respuesta #3 en: 12 Marzo 2014, 17:12 pm »

Código:
  char letra[5];
que valores tiene?

Tiene valores aleatorios... pero esas 5 posiciones están reservadas para la aplicación... otra cosa es que intentes acceder a letra[4561234]...

Sinceramente a mí me da la impresión que más que letra quería poner c.
En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Me crashea el programa
« Respuesta #4 en: 12 Marzo 2014, 17:18 pm »

Tiene valores aleatorios... pero esas 5 posiciones están reservadas para la aplicación... otra cosa es que intentes acceder a letra[4561234]...

Sinceramente a mí me da la impresión que más que letra quería poner c.

Por eso hice la pregunta, por que me da que se descuido de algo ahí xD.

De paso podrías usar un if else en vez de dos if como te dijo eferion

Saludos
En línea

Gh057


Desconectado Desconectado

Mensajes: 1.190



Ver Perfil
Re: Me crashea el programa
« Respuesta #5 en: 12 Marzo 2014, 17:30 pm »

hola wiD^ estaba escribiendo los errores de sintaxis por ejemplo en la igualdad de la condición pero ya te fueron muy bien indicados; con respecto a la función aleatoria, deberías chequear la misma ya que al sumarle 1 no estás contemplando todas las k para el char c. (no tendrás nunca el valor para 'a' y luego creo que superas la cantidad de posiciones para el tope) saludos.
En línea

4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
jaxoR

Desconectado Desconectado

Mensajes: 93

?


Ver Perfil WWW
Re: Me crashea el programa
« Respuesta #6 en: 12 Marzo 2014, 19:33 pm »

Gracias por toda la ayuda, pero me sigue crasheando el programa. Ahora lo tengo así:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.    int a, i, j, k, f;
  7.    int b[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
  8.    char c[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '\0'};
  9.    printf("==========================\n== Generador de codigos ==\n==========================\n\n* Ingrese 1 si quiere generar un codigo\n");
  10.    scanf("%i", &a);
  11.  
  12.    char letra[5];
  13.    i = 0;
  14.  
  15.    if (a != 1)
  16.    {
  17.        printf("Necesitas ingresar el numero 1 para generar un codigo\n");
  18.    }
  19.  
  20.    if (a == 1)
  21.    {
  22.        printf("En breve se generara tu codigo\n");
  23.  
  24.        for(j=0; j=5; j++)
  25.        {
  26.            i++;
  27.            k = 0;
  28.            k = 1 + rand() % 23;
  29.            c[k] = letra[i];
  30.        }
  31.    }
  32.  
  33.    return 0;
  34. }
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Me crashea el programa
« Respuesta #7 en: 12 Marzo 2014, 19:50 pm »

La condición del for es erronea.

¿Porque usas letra? Usa letra[j].
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Yugget

Desconectado Desconectado

Mensajes: 50



Ver Perfil
Re: Me crashea el programa
« Respuesta #8 en: 12 Marzo 2014, 19:57 pm »

Como bien dice amchacon,
La condición for es errónea,

Estás dandole un valor a j = 0 y luego dandole de nuevo otro valor a j = 5.

Y para el for sería asín:

Código
  1. for(j=0; j < 5; j++)
  2. {
  3.  
  4. }

Da un valor a j = 0, y si j es menor que 5, se incrementará.

Un cordial saludo.
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Me crashea el programa
« Respuesta #9 en: 13 Marzo 2014, 02:40 am »

Aparte de todo lo dicho falta inicializar la semilla para los números aleatorios, esto puede hacerse con:
Código
  1. #include <stdlib.h>
  2. #include <time.h>
  3.  
  4. /* ... */
  5.  
  6. int main(void)
  7. {
  8.   /* ... */
  9.  
  10.   srand((unsigned) time(NULL));
  11.  
  12.   /* Uso de rand ...  */
  13. }

Y en el bucle la primera asignación a la variable "k" sobra, la asignación "c[ k ] = letra[ i ];" esta al revés (debería ser "letra[ i ] = c[ k ];") y por ultimo si se trata de una cadena falta agregar el terminador '\0'.

El code no está terminado pero no puedo terminar de resolver eso
En buen plan deberías conseguir un buen curso o libro, para recomendaciones solo tienes que utilizar el motor de búsqueda de los foros.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programa crashea al escribir
Ingeniería Inversa
x64core 0 1,990 Último mensaje 23 Septiembre 2012, 02:07 am
por x64core
Me crashea el programa
Programación C/C++
jaxoR 2 2,421 Último mensaje 30 Mayo 2014, 02:42 am
por Yoel Alejandro
(Solucionado) Un programa sencillo usando las librerías GLFW y GLEW crashea
Programación C/C++
Seyro97 1 1,883 Último mensaje 14 Mayo 2015, 20:04 pm
por Seyro97
(Ayuda) Programa crashea al analizar una cadena (char *) « 1 2 »
Programación C/C++
Seyro97 14 6,098 Último mensaje 27 Mayo 2015, 09:18 am
por Eternal Idol
(Ayuda) Programa crashea al acceder al último término de una matriz
Programación C/C++
Seyro97 1 1,707 Último mensaje 2 Octubre 2015, 08:11 am
por Seyro97
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines