Если в классе Sorting вы хотите использовать логику реализованную в Qsort & Selection то напишите:
Qsort qsort = new Qsort();
Selection selection = new Selection();
И дальше используйте как хотите, но конечно же лучше каждый класс раскидывать по разным файлам и уже в дальнейшем переключаться между ними, вы тем самым и код разгрузите и сделаете его более читабельным.
--n - короткая запись для n=n-1
n >>= 1 - короткая запись для n=n>>1
"Если это битовые операции, но мы же не переводим десятичное число в двоичную систему" - вы заблуждаетесь. Компьютер как раз переводит все числа в двоичную систему и хранит их в двоичной системе.
Вот тебе несколько вопросов на подумать:
- где в этой программе определена переменная n?
- что делает конструкция int array[n], если n -- это переменная?
- как связано выделение памяти для int array[n] и ввод значения n через scanf?
Нужно сделать массив булевых переменных, а каждой гласной поставить в соответствие индекс (код символа), и по этим индексам установить значения в true. Этот массив создается однократно и используется многократно.
Далее в символьной строке в цикле проверять каждый символ. Берём его код, превращаем в индекс - и смотрим в массиве, если true, то заменяем на пробел.
double random(int a, int b)
{
return (double) a + (double)rand() / RAND_MAX * (b-a) ;
}
Да в принципе, как у вас. Только в параметры функции добавились числа a и b. Длина диапазона вычисляется как разность конца и начала.
Пример использования:
cout << random(50, 100); // число в диапазоне [50, 100]
inline int getRandomNumber(int start, int end) {
return start + rand() % (end - start);
}
допустим для getRandomNumber(10, 20);
rand() генерит числом до RAND_MAX,
% (end - start) "обрезает"(остаток от деления) до 10, т.е. 555 % 10 = 5
start + сдвигает на 10
Но лучше не использовать rand, а использовать современные решения https://stackoverflow.com/a/7560564/7458932
Если вы не в курсе, то у rand очень плохой псевдорандом и для серьёзных целей есть целый отдельный хедер с кучей других генераторов