qsort
говорит что компаратор должен иметь следующую сигнатуру:int cmp(const void *a, const void *b);
qsort
.qsort
должен дать ответ в троичном представлении, т.е. одно из значений: -1
если left
меньше right
, 0
если left
и right
эквивалентны, 1
если left
больше right
.bool
позволяет только бинарное представление. Применение типа bool
здесь - это ошибка.std::sort
. Использование этой функции заставит тебя написать компаратор правильно:const bool cmp( const s& left, const s& right )
{
if( left.bali != right.bali )
{
return left.bali > right.bali;
}
return left.name < right.name;
}
заранее говорю
Компоратор я сам уже написал
using namespace std
[1][2][3]. Рекомендую открутить это прямо сейчас и учиться сразу писать более качественный код.qsort
используешь, использовать стоит std::sort
[?]. Использование этой функции форсирует тебя написать правильную сигнатуру функции сравнения.
double h = 1 / n;
будет или0
, или1
.Т.к.
n
не инициализирована и содержит мусор, а деление тут целочисленное,1
в результате этого деления получится только тогда, когдаn
по воле электронного случая будет содержать1
.Все остальные вычисления после этой строки можно выбросить. на этой строке происходит некое таинство, эффект от влияния которого испортит все вычисления.
Иногда тут еще будет вылетать Division by Zero, когда
n
по воле электронного случая будет содержать0
.double U[n], A[n] , B[n], C[n];
В C++ так нельзя. Это ошибка. В C99 это VLA и т.к. в
n
у тебя мусор, твоя программа имеет все шансы с разбегу получить Stack Overflow в любом из запусков.x[n] = 100;
Это Buffer Overrun. Тут ты прописался мимо массива
x
и залез куда-то в другую переменную. Скорее всего вC[0]
.