Гистограмма чисел на определенных отрезках - 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; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с языком C
- Функция getLrand(double l) принимает на вход параметр l и возвращает случайное число в интервале [0,1) с помощью функции rand() и логарифма по основанию 2.7182818284590452353602874713527
- В функции main() с помощью scanf() получаем от пользователя размер массива gist[n] и параметр распр lambda
- Инициализируем переменные i, j, mySentinel, progressive, lambda и заполняем массив gist случайными числами с помощью функции getLrand(lambda)
- Выводим на экран полученные числа с помощью цикла for и функции printf()
- Во втором цикле for проходим по каждому числу в массиве gist и выводим на экран гистограмму с помощью символов '*' и пробелов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д