Язык СИ. Есть код, вроде бы как все правильно сделал, но результат не есть верным. Код и run в комплекте.
Собственно в чем проблема: указаны неверные результаты (диапазоны), на втором скрине видно что в первом варианте (200 - 299) вообще пусто должно быть, с такими значениями все должно уходить в последний вариант. Прошу указать место ошибки.



#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <Windows.h>
#define BUFFER 100
#define BANDS 9
typedef struct seller {
double salary;
double take;
} SELLER;
int main(void) {
double rate = 200.0;
double quota = 0.09;
double max_take;
SELLER sellers[BUFFER];
size_t range[BANDS] = { 0 };
size_t quantity;
do {
printf("Quantity: ");
scanf_s("%u", &quantity);
} while (!quantity || quantity > BUFFER);
do {
printf("Max take: ");
scanf_s("%lf", &max_take);
} while (max_take <= 0);
srand((unsigned)time(NULL));
for (size_t i = 0; i != quantity; ++i) {
sellers[i].take = (rand() * rand()) % (unsigned)(max_take * 100) / 100.0;
sellers[i].salary = rate + (unsigned)(sellers[i].take * quota * 100) / 100.0;
}
for (size_t i = 0; i != quantity; ++i) {
printf("%3u. Take: %.2lf - salary: %.2lf\n", i + 1, sellers[i].take, sellers[i].salary);
}
for (size_t i = 0; i != quantity; ++i) {
double salary = sellers[i].salary;
if (salary >= 1000) ++range[8];
else if (salary >= 900) ++range[7];
else if (salary >= 800) ++range[6];
else if (salary >= 700) ++range[5];
else if (salary >= 600) ++range[4];
else if (salary >= 500) ++range[3];
else if (salary >= 400) ++range[2];
else if (salary >= 300) ++range[1];
else ++range[0];
}
for (size_t i = 0; i != BANDS; ++i) {
double start = rate + i * 100;
double end = start + 99.99;
printf("\n %.2lf-%.2lf -> %u", start, end, range[i]);
}
printf("\n");
system("pause");
return 0;
}
Строка 22, написано pay[9], должно быть pay[i], если я правильно понимаю.