Necesito almacenar números aleatorios entre 500 y 600 para una matriz utilizando un puntero y, a continuación, imprima los números. Tengo un error de segmentación…de volcado de núcleo, yo no entiendo muy bien lo que eso significa. El error ocurre después de la instrucción printf («%de 15 d\n», aPtr[i]);

int main(){
    int size;
    int j, i;
    int temp;
    int sum = 0;


    printf("Enter size of array");
    scanf("%d", &size);


    int array[size];
    int *aPtr = malloc(sizeof(int) * size);

    for (i = 0; i <= size; i++){
         srand(time(NULL));
         aPtr[i] = rand() % 500 + 100;
         printf("%15d\n", aPtr[i]);
  • De la iglesia, no es una buena idea hacer grandes cambios a su pregunta que invalida las respuestas que dan las personas. Por todos los medios agregar los detalles de seguir esa pauta. He revierte los cambios.
  • Notar! Lo siento de nuevo en el sitio, tratando de palabra a mis preguntas correctamente 🙁
InformationsquelleAutor Church | 2012-09-23

3 Comentarios

  1. 1

    usted necesita llamar a srand ( que inicializa el generador de números aleatorios ) sólo una vez. Salir de la para. Y si quieres números aleatorios entre 500 y 600, es necesario generar entre 0 y 100 ( rand() % 101) y, a continuación, añadir 500.

    • Que me da un error de 100 no ser una declaración, es que hay algo que me estoy perdiendo?
    • Podría publicar el código?
    • He actualizado en la pregunta
    • quitar los 100 en esta línea aPtr[i] = (100 (rand() % 101) + 500);
    • debe ser aPtr[i] = ((rand() % 101) + 500);
    • Perferct! Gracias!

  2. 4

    i <= size; debe ser i < size;

    Si usted tiene una matriz de 50 elementos, la validez de los índices de [0,49].

  3. 1

    Usted necesita llamar a srand antes de entrar en el bucle.

    Tal y como está ahora, recibirás una larga secuencia de números idénticos porque estás restablecer el generador de números aleatorios para la misma semilla cada vez (suponiendo que el tiempo no cambia, que es probable). Además, si desea que los números de entre 500 y 600 inclusive, su fórmula está mal. Pruebe este fragmento de código:

    srand(time(NULL));
    for (i = 0; i < size; i++){
        aPtr[i] = (rand() % 101) + 500;
        printf("%d\n", aPtr[i]);
    }

Dejar respuesta

Please enter your comment!
Please enter your name here