Гистограмма чисел на определенных отрезках - C (СИ)

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

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

Здраствуйте уважаемые) бьюсь целый день над реализацией программы необходимо сделать гистограмму группирующую сгенерированные числа в данном виде (результаты) 0.123 1.234 0.108 0.1567 2.16 2.342 4.0006 3.25 (гист) 0-*** 1-* 2-** 3-* 4-* 5- 6- 7- 8- 9- код с генератором приложил на ваш суд) пытаюсь создать массив=10 и туда запихивать сгруппированные числа проблемма с счетчиком не пойму нужно на каждый отрезок делать свой?
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
double getLrand(double l)
{
 return -log(1-(double)(rand())/RAND_MAX)/l;
}
 
int main()
{
 printf("Enter N:");//размер
 int i, N;
 scanf("%d", &N);
 printf("Enter l");//параметр распр
 double lambda;
 scanf("%lf", &lambda);
 srand ( time(NULL) );
 for(i = 0; i < N; i++)
  printf("%lf ", getLrand(lambda));
 getch();
 return 0;
}

Решение задачи: «Гистограмма чисел на определенных отрезках»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
double getLrand(double l)
{
 return -log(1-(double)(rand())/RAND_MAX)/l;
}
 
 
int main ( void ) 
{
 
 int i, n, j, mySentinel = 0, progressive = 1;
 double lambda = 0;
 
 printf("Enter n:"); //размер
 scanf("%d", &n);
 
 double gist[n];
 
 printf("Enter l:"); //параметр распр
 scanf("%lf", &lambda);
 
 srand ( time(NULL) );
 
 for ( i = 0; i < n; i++) {
  printf("%2d %2.4lf\n", progressive++, gist[i] = getLrand(lambda));
 }
progressive = 1;
 for ( j = 0; j < n; ++j) {
    for (i = 0; i <= gist[j]; ++i){
        if (mySentinel++ < 1)
            printf("%2d ", progressive++);
        if ( i >= 1)
        putchar('*');
    }
    mySentinel = 0;
    puts("");
 }
 getchar();
 return 0;
}

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

  1. Включаем необходимые заголовочные файлы для работы с языком C
  2. Функция getLrand(double l) принимает на вход параметр l и возвращает случайное число в интервале [0,1) с помощью функции rand() и логарифма по основанию 2.7182818284590452353602874713527
  3. В функции main() с помощью scanf() получаем от пользователя размер массива gist[n] и параметр распр lambda
  4. Инициализируем переменные i, j, mySentinel, progressive, lambda и заполняем массив gist случайными числами с помощью функции getLrand(lambda)
  5. Выводим на экран полученные числа с помощью цикла for и функции printf()
  6. Во втором цикле for проходим по каждому числу в массиве gist и выводим на экран гистограмму с помощью символов '*' и пробелов.

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


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

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

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