Реализовать гистограмму из результатов вычислений - C (СИ)

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

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

Здравствуйте господа! Возникла проблема в реализации задачи. Не пойму как собрать гистограмму из результатов вычислений. код работает (сюда прилагается) что необходимо сделать? читал некоторые варианты но не получилось. предполагалось использовать массив для его заполнения и вывода. подскажите как и что тут будет правильнее сделать
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <math.h>
  5. #include <time.h>
  6.  
  7. double getrand(double l)
  8. {
  9. return -log(1-(double)(rand())/RAND_MAX)/l;
  10. }
  11. int main()
  12. {
  13. printf("Enter N:");//размер
  14. int i, N;
  15. scanf("%d", &N);
  16. printf("Enter l");//параметр распр
  17. double lambda;
  18. scanf("%lf", &lambda);
  19. srand ( time(NULL) );
  20. for(i = 0; i < N; i++)
  21. printf("%lf ", getrand(lambda));
  22. getch();
  23. return 0;
  24. }

Решение задачи: «Реализовать гистограмму из результатов вычислений»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <time.h>
  5.  
  6.  
  7. double getrand( double l);
  8.  
  9.  
  10. int main ( void )
  11. {
  12.  
  13. int i, j, n;
  14. double lambda, k;
  15.  
  16.  puts( "Enter n:" ); //размер
  17.  scanf("%d", &n);
  18.  puts("Enter l"); //параметр распр
  19.  scanf( "%lf", &lambda );
  20.  
  21.  srand ( time(NULL));
  22.  
  23.  for( i = 1; i < n; i++ ) {
  24.     puts("");
  25.     printf( "%lf ",  k = getrand( lambda ) );
  26.     for( j = 0; j < (int)k; j++ )
  27.         if ( k >= 1 )
  28.         putchar('*');
  29.  }
  30.  puts("");
  31.  getchar();
  32.  return 0;
  33. }
  34.  
  35. double getrand (double l)
  36. {
  37.  return -log(1-(double)(rand())/RAND_MAX)/l;
  38. }

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

В этом коде происходит следующее:

  1. В функции main пользователю предлагается ввести размер выборки n и параметр распределения lambda.
  2. Затем происходит инициализация генератора случайных чисел с помощью функции srand(time(NULL)).
  3. В цикле for с i от 1 до n-1 выводится на экран строка, представляющая собой гистограмму.
  4. Для каждого элемента гистограммы вызывается функция getrand(lambda), которая возвращает случайное число, экспоненциально распределенное с параметром lambda.
  5. Это случайное число выводится на экран с помощью printf(%lf , k).
  6. Если случайное число больше или равно 1, то в соответствующую строку гистограммы добавляется символ * с помощью putchar('*');.
  7. В конце программы пользователю предлагается нажать любую клавишу для выхода из программы.
  8. Функция getrand использует встроенную функцию rand() для генерации случайного числа и функцию log() для вычисления натурального логарифма.
  9. Функция getrand возвращает результат вычисления -log(1-(double)(rand())/RAND_MAX)/l, который является случайным числом, экспоненциально распределенным с параметром lambda.

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


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

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

13   голосов , оценка 4.231 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы