error C2835: user-defined conversion 'operator`double'' takes no formal parameters
operator double (int limit)
невозможна. Вторая ошибка -- это следствие первой.Определим в объекте Group две функции с одинаковым именем, например double Age(); и double Age(int limit);.
Но не получается
zeroCounter
как я понял нужен для реализации шага "Remove leading "0" from X'", но эта реализация неправильная. К тому же она находится вне цикла while ( X != "0" )
.for (b in bits of X) // msb to lsb
говорит о том, что b должен пробегать двоичные цифры, от старшего разряда к младшему, в формуле R = 2*R + b
фигурирует значение разряда, а не его индекс, как в твоём коде.R, как я понимаю, должна быть очередная десятичная цифра получающегося числа?
/usr/lib/gcc/x86_64-lfs-linux-gnu/12.2.0/../../../../x86_64-lfs-linux-gnu/bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
--disable-shared
или --enable-compressed-debug-sections=none
решит эту проблему. Ну либо надо собрать и установить в chroot ещё и zlib. В syslog обнаружил, что мой ip блокируется почему-то
5 30 5264 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 5/min burst 5 LOG flags 0 level 7 prefix "iptables denied: "
git worktree
внутри нет истории, только текстовая ссылка на каталог .git. Поэтому если всю эту конструкцию скопировать в другое место файловой системы и попытаться использовать там, то могут быть неожиданные эффекты, поскольку worktree будет ссылаться по абсолютному пути на оригинал, а не на копию. Возможно ли вместо цикла использовать рекурсию? Если да, то как?
static int foo(int s, const int *nom)
{
if (! s)
return 0;
else
return foo(s % nom[0], nom + 1) + s / nom[0];
}
...
static const int nom[] = {500, 100, 50, 10, 5, 2, 1};
printf("%d\n", foo(s, nom));
Что бы вы хотели знать, когда перешли на линукс или первый раз поставили?
что нужно делать, что не нужно
Почему возникает ошибка
scanf("%d", *(b+i));
b = (int*) malloc(a * sizeof(int));
) и даже пытается её возращать, но неправильным типом и main это значение не использует. А поэтому в main b как был NULL так и остаётся. По-хорошему надо как-то так:int * input_array(int a){
int *b = (int*) malloc(a * sizeof(int));
for (int i = 0; i < a; ++i) {
printf("array[%d] = ", i);
scanf(" %d", b+i);
}
return b;
}
int main() {
...
printf("Введите длину массива:");
scanf(" %d", &a);
int *b = input_array(a);
min = find_min(b, a);
max = find_max(b,a);
average = average_function(min, max);
...
}
void EcsSystems::Add(IEcsSystem* system) { _systems.push_back(system); if (IRunSystem* runSystem = static_cast<IRunSystem*>(system)) { _runSystems.push_back(runSystem); } }
Помогите, пожалуйста
MultiplyMatrices
переписать как три обычных вложенных цикла, всё работает нормально. float* vMultiplyMatrices(const float* matrix_1, const float* matrix_2)
{
__m128 vector_2;//переменная для хранения значения второй матрицы
__m128 result_vector;//переменная для записи итоговой марицы
auto* result_matrix = (float*)_mm_malloc(N * N * sizeof(float), 16);//выделение памяти с выравниванием
(2) //memset(result_matrix, 0, N * N * sizeof(float));
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
__m128 element_vector = _mm_set1_ps(matrix_1[i * N + j]);//4 позиции в одно значение
for (int k = 0; k < N; k += 4) {
vector_2 = _mm_load_ps(&matrix_2[j * N + k]);//4 значение по адресу
(1) result_vector = _mm_load_ps(&result_matrix[i * N + k]);
result_vector = _mm_add_ps(result_vector, _mm_mul_ps(element_vector, vector_2));
_mm_store_ps(&result_matrix[i * N + k], result_vector);
}
}
}
return result_matrix;
}
result_vector
неинициализированные значения из result_matrix
и дальше используешь их в арифметике. Если раскомментировать memset
(2), то выполнение доходит до конца без nan.Возможно отключить некоторые инструкций процессора?
отключить инструкций процессора отвечающий за скорость майнинга
умеют ли программы виртуализации такое проворачивать?
как все-таки правильно сверить, должно быть 100 процентное совпадение с эталонным файлом в результате команды должна быть 1.
./test.sh | if cmp -s - test ; then echo 1 ; else echo 0 ; fi
result=$(./test.sh)| cmp -s $result test
test.sh
с содержимым файла test, но здесь не нужен конвейер и cmp
так не работает.cmp -s (./test.sh) test
cmp -s <( ./test.sh ) test
. Но из-за того, что конструкция <(…)
специфична для bash этот вариант на мой взгляд менее предпочтителен чем вариант ./test.sh | if cmp -s - test
.