Member
Статус: Не в сети Регистрация: 10.12.2007 Откуда: Санкт-Петербург
Доброго времени суток! Понадобилось делить многочлены друг на друга и находить остатки. Безусловно, можно обойтись и делением уголком. Но, как говорится, дурная голова рукам покоя не дает Существует ли еще какой-либо способ деления? ЗЫ в google не отсылайте, уже там были-с
_________________ Семь бед, один Reset. 95, 98 - это количество багов. В пpоцентах... DCN - наше все
Всем добрый вечер! Есть функция,которая преобразует массив char в unsigned long. Функция точно правилная, но я никак не могу разобраться ,почему преобразование делается именно такое и что конкретно в функции делается . Подскажите пожалуйста,если можете.
unsigned long worul (char wor[4]) { int g[4]; for (int i=0;i<=3;i++) { g[i]=wor[i]+128; } return (g[0]<<24)+(g[1]<<16)+(g[2]<<8)+g[3]; }
Вопрос не совсем по С++, но так как пишу на нем, то и пост будет сюда. Вообщем, в задаче необходимо получить dll-зависимости. Если с зависимостями первого уровня проблем нет - они явно указаны в dll/exe, то дальше все выглядит интереснее (см скрин): #77 Если открыть файл 1.exe и d3d10.dll (который используется первым экзешником) то видно что зависимости разные. Пока что я делаю так: маплю основной файл в память, нахожу в нем имена библиотек, ищу их на диске, заливаю в память и там снова ищу зависимости и т.д - в итоге дерево получается куда больше, чем в dependency-walker'e. Ну и вопрос - как правильно получать зависимости из длл нижних уровней?
Заблокирован Статус: Не в сети Регистрация: 27.04.2010
к примеру изза того что в первом случае те дочерние библы не нужны и они не линкуются а во втором случае нужны. Кроме того депенденси волкер может быть специально по кругу не рисует зависимости
Member
Статус: Не в сети Регистрация: 10.12.2007 Откуда: Санкт-Петербург
Добрый вечер. Имеются 2 многочлена, вводятся начиная с младших степеней, найти остаток. Верно работает не всегда, непонятно почему ( остаток находит, но он неверный) ( в первых 2 циклах многочлены "перестраиваются" начиная со старшей степени)
Код:
int *remainder(int *p1, int &len1, int *p2, int len2) { int k= len1-1; for (int i=0; i<len1/2; i++) { int temp = p1[i]; p1[i] = p1[k-i]; p1[k-i] = temp; } k= len2-1; for (int i=0; i<len2/2; i++) { int temp = p2[i]; p2[i] = p2[k-i]; p2[k-i] = temp; } int *ptr1; ptr1= p1; while (len1>=len2) { int del = (int)(*ptr1/ *p2); for (int i=0; i<len2; i++) *(ptr1+i) -= del * p2[i]; len1--; ptr1++; } p1 = ptr1; return p1; }
Добавлено спустя 1 минуту 30 секунд: Обыкновенное деление столбиком ТЫК
_________________ Семь бед, один Reset. 95, 98 - это количество багов. В пpоцентах... DCN - наше все
manya Вроде ошибок не видно. Естественно, если у p2 коэффициент при старшей степени всегда = 1, иначе всё нужно делать float или double. Если это условие соблюдается, тогда хотелось бы увидеть пример, на котором получается неправильный результат.
Member
Статус: Не в сети Регистрация: 10.12.2007 Откуда: Санкт-Петербург
Многочлены двоичные, так что int вполне сойдет Неправильно делит 1+x^3+x^4+x^6+x^8 на 1+x+x^2+x^5+x^6+x^7. То есть это записывается так 100110101 на 11100111. В остатке получается 1110002, хотя должно 1110000.
_________________ Семь бед, один Reset. 95, 98 - это количество багов. В пpоцентах... DCN - наше все
Многочлены двоичные, так что int вполне сойдет Неправильно делит 1+x^3+x^4+x^6+x^8 на 1+x+x^2+x^5+x^6+x^7. То есть это записывается так 100110101 на 11100111. В остатке получается 1110002, хотя должно 1110000.
Я даже не поленился, и посчитал вручную (столбиком) - получилось 1110002, т.е. похоже ты просто вручную неправильно посчитал (или откуда ты взял 1110000?).
Помогите плз с непонятным косяком: после return`а в функции компилятор "пробегает" еще по одной строке (порядок выполнения указан в комментах); при прогоне шагом с заходом все промежуточные значения верны, однако в итоге функция возвращает нечто левое и на консоль выводится "-1.#IND". Прога находит экстремум функции методом дихотомии (на задаваемом при вызове промежутке он точно есть).
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения