Autor
|
Tema: Me crashea el programa (Leído 7,305 veces)
|
jaxoR
Desconectado
Mensajes: 93
?
|
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: int main() { int a, i, j, k, f; int b[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 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'}; printf("==========================\n== Generador de codigos ==\n==========================\n\n* Ingrese 1 si quiere generar un codigo\n"); scanf("%i", &a); char letra[5]; if (!(a = 1)) { printf("Necesitas ingresar el numero 1 para generar un codigo\n"); } if (a = 1) { printf("En breve se generara tu codigo\n"); for(j=0; j=5; j++) { i++; k = 0; k = 1 + rand() % 23; c[k] = letra[i]; } } return 0; }
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
int main() { int a; scanf("%i", &a); if (!(a = 1)) { } if (a = 1) { } }
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: if ( a != 1 ) { } if (a == 1) { } }
o mejor aún: if ( a != 1 ) { } else { } }
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
|
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
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
|
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
Mensajes: 1.190
|
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
Mensajes: 93
?
|
Gracias por toda la ayuda, pero me sigue crasheando el programa. Ahora lo tengo así: #include <stdio.h> #include <stdlib.h> int main() { int a, i, j, k, f; int b[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 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'}; printf("==========================\n== Generador de codigos ==\n==========================\n\n* Ingrese 1 si quiere generar un codigo\n"); scanf("%i", &a); char letra[5]; i = 0; if (a != 1) { printf("Necesitas ingresar el numero 1 para generar un codigo\n"); } if (a == 1) { printf("En breve se generara tu codigo\n"); for(j=0; j=5; j++) { i++; k = 0; k = 1 + rand() % 23; c[k] = letra[i]; } } return 0; }
|
|
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
La condición del for es erronea.
¿Porque usas letra? Usa letra[j].
|
|
|
En línea
|
|
|
|
Yugget
Desconectado
Mensajes: 50
|
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: for(j=0; j < 5; j++) { }
Da un valor a j = 0, y si j es menor que 5, se incrementará. Un cordial saludo.
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Aparte de todo lo dicho falta inicializar la semilla para los números aleatorios, esto puede hacerse con: #include <stdlib.h> #include <time.h> /* ... */ int main(void) { /* ... */ /* Uso de rand ... */ }
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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Programa crashea al escribir
Ingeniería Inversa
|
x64core
|
0
|
1,990
|
23 Septiembre 2012, 02:07 am
por x64core
|
|
|
Me crashea el programa
Programación C/C++
|
jaxoR
|
2
|
2,421
|
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
|
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
|
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
|
2 Octubre 2015, 08:11 am
por Seyro97
|
|