Пишу программу на статистику, и мне необходимо посчитать квартили.
Проблема состоит в том что всё время проходит установка else, и непонятно, почему код не работает:
В моём случае n=130 и на i=2 и i=4должно срабатывать
tmp == (ceil(tmp)-1) округляем к большему и отнимаем единицу
void KvartilC(vector<int>&X,float n)
{
for(int i=1;i<=4;i++)
{
float tmp = (i*n) / 4; // если число целое то подходит, если нет то
//квартиля нет
if (tmp == (ceil(tmp)-1)) // проверка на целочисельность
{
cout <<"Qvartil_"<<i<<" : "<< X[tmp]<< endl;
}
else
{
cout << "Ne isnuje Qvartila_"<<i<< endl;
}
}
}
А просто посчитать и посмотреть что мешает?
float n = 130;
for(int i = 1; i <= 4; i++)
{
float tmp = (i*n) / 4;
cout << "tmp = " << tmp << " ceil.. = " << (ceil(tmp)-1) << endl;
}
дает
tmp = 32.5 ceil.. = 32
tmp = 65 ceil.. = 64
tmp = 97.5 ceil.. = 97
tmp = 130 ceil.. = 129
Еще вопросы есть? :) Прочтите внимательно, как ceil выполняет округление...
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости