Вывод гистограммы случайных чисел в пределах от 1 до 10 - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
#include <stdlib.h>
 
#define NUMBER 100
#define LOWER 1
#define UPPER 10
 
static unsigned long int next = 1;
 
int rand(void);
 
int main(int argc, char **argv)
{
    int i, j, max = 0;
    int *mass = (int)malloc(NUMBER*sizeof(int));    
 
    for(i = 0; i < NUMBER; ++i)
    {
        mass[i] = rand()%10+1;
    }
    for(i = 0; i < NUMBER; ++i)
    {
        if(max < mass[i])
        {
            max = mass[i];
        }
    }
    for(i = max; i > 0; --i)
    {
        for(j = 0; j < UPPER; ++j)
        {
            if(mass[j] >= i)
            {
                printf("! ");
            }
            else
            {
                printf("  ");
            }
        }
        putchar('\n');
    }
    for(i = LOWER; i <= UPPER; ++i)
    {
        printf("%d ", i);
    }
    free(mass);
return 0;
}
int rand(void)          
{
    next *=  1103515245 + 12345;
    return (unsigned int) ((next/65536) % 32768);
}
При компиляции возникают следующие предупреждения, но программа компилируется: random.c: In function ‘main’: random.c:16:14: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] int *mass = (int)malloc(NUMBER*sizeof(int)); ^ random.c:16:14: warning: initialization makes pointer from integer without a cast [enabled by default] Хотелось бы узнать причину данных предупреждений а также узнать, можно ли сделать числа более случайными, к примеру, привязяв начальное значение ко времени, и каким образом это делается.

Решение задачи: «Вывод гистограммы случайных чисел в пределах от 1 до 10»

textual
Листинг программы
int i, stime;
long ltime;
...
ltime = time (NULL);
stime = (unsigned int) ltime/2;
srand(stime);
...

Объяснение кода листинга программы

  1. Объявляются две переменные типа int - i и stime, а также две переменные типа long - ltime и stime.
  2. Вторая переменная stime инициализируется значением времени в секундах с начала эпохи.
  3. Значение переменной ltime делится на 2 и результат приводится к типу unsigned int, после чего полученное значение присваивается переменной stime.
  4. В качестве начального значения для генератора случайных чисел используется переменная stime. ...

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы