создать случайное число в двойном формате, затмение перестает работать

0

генерируйте случайное число 0-1, когда я набираю число ввода меньше 4, код работает нормально. Однако, когда входной номер выше 4, затмение перестает работать. что не так с моим кодом

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
double ran(double x0, double x1){
return x0+(x1-x0)*rand()/((double)RAND_MAX);
}
int main(void) {
int a,i;
double *b;
printf("input the size\n");
scanf("%d", &a);
b=(double*)malloc(sizeof(int)*a);
srand((unsigned)time(NULL));
for(i=0;i<a;i++)
{
    b[i]=ran(0,1);
    printf("\n %f", b[i]);
}
free (b);
return 1;

}
Теги:

1 ответ

1
Лучший ответ

Двойной размер больше целого. Двойной - восемь байтов, а целое число - 4 байта. Вы должны заменить

b = (double*)malloc(sizeof(int)*a);

с

b = (double*)malloc(sizeof(double)*a);

или даже лучше (Thaks Lưu Vĩnh Phúc)

b = malloc(a * sizeof b[0]);
  • 0
    лучше b = malloc(a * sizeof b[0]);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню