Вопрос № 73755: Здравствуйте.
Как описать макрос для ассемблерной вставки в С++. Т.е., допустим, есть многострочный код (а команды в ассемблерных ставках располагаются на отдельных строках)
mov eax,3
mov eax,4
...
inline не подходит, т.к., судя п...Вопрос № 73800: Здравствуйте, эксперты. Помогите пожалуйста умножить два дрбных числа большой точности. Условия:
- число представляется в виде массива unsigned long A[N], N > 1000000;
- максимальная длина 1 числа 500000 знаков (чтобы при произведении не п...Вопрос № 73830: Ув.эксперты,скажите пожалуйста есть ли такая функция которая убирает определённое количество
с левой стороны числа?Например чтобы число 45678 показывалось как 78 или 8. Заранее спасибо....Вопрос № 73844: Уважаемые эксперты! Я начинающий... Учусь по книге. Уже во второй главе возникла трудность в проге "Подсчет символов в файле". Цикл выполняется, но при вводе Esc прога просто замирает. Хотя по книге, да и по идее, по окончанию цикла должнаи...
Вопрос № 73.755
Здравствуйте.
Как описать макрос для ассемблерной вставки в С++. Т.е., допустим, есть многострочный код (а команды в ассемблерных ставках располагаются на отдельных строках)
mov eax,3
mov eax,4
...
inline не подходит, т.к., судя по всему, он организует вызов (call) функции, а мне надо оставить неизменными все регистры (кроме, естественно, тех, которые используются в ставке.
Выглядеть это должно так:
_asm
{
mov ax,1
....
}
AssemblerMacro
_asm
{
...
}
Большое спасибо.
Отправлен: 02.02.2007, 12:06
Вопрос задал: Vanes (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: kool
Здравствуйте, Vanes!
Наверное так! (см приложение)
Удачи!
Приложение:
--------- I am.
Ответ отправил: kool (статус: 7-ой класс)
Ответ отправлен: 02.02.2007, 19:42 Оценка за ответ: 5 Комментарий оценки: Еще раз спасибо
Вопрос № 73.800
Здравствуйте, эксперты. Помогите пожалуйста умножить два дрбных числа большой точности. Условия:
- число представляется в виде массива unsigned long A[N], N > 1000000;
- максимальная длина 1 числа 500000 знаков (чтобы при произведении не превышал N).
- A[0] - целая часть дроби, остальные - сама дробная часть;
- А[0] равно 0;
- каждый элемент массива A[i] содержит 4 цифры (пример: 0.123421423423 -> A[0] = 0; A[1] = 1234; A[2] = 2142; A[3] = 3423).
Все вычисления не должны быть дольше 2-3 секунд.
Заранее спасибо.
Отправлен: 02.02.2007, 18:34
Вопрос задал: Mystic (статус: 5-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: QDSota
Здравствуйте, Mystic!
Используйте функцию в приложении. При N=1000000 на 4Ггц процессоре время подсчета будет около 2-х часов - для 2-3 сек нужно N~100000.
Приложение:
--------- Открыть глаза навстречу солнцу
Ответ отправил: QDSota (статус: Профессионал) Россия, Зеленоград Тел.: 8-916-53-43-916 ICQ: 84611301 ---- Ответ отправлен: 06.02.2007, 17:20 Оценка за ответ: 5 Комментарий оценки: Спасибо за код. Буду пробовать.
Вопрос № 73.830
Ув.эксперты,скажите пожалуйста есть ли такая функция которая убирает определённое количество
с левой стороны числа?Например чтобы число 45678 показывалось как 78 или 8. Заранее спасибо.
Отправлен: 02.02.2007, 23:12
Вопрос задал: Hunter20 (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Базанов Иван Александрович
Здравствуйте, Hunter20!
Если оперировать именно с числами то можно так:
int n = 45678; // Наше исходное число
int m= 3; // Сколько цифр слева нужно убрать
for (int i=0, m1=1; i<m; i++, m1=m1*10);
int res=n%m1; // Результат
--------- Программист ошибается дважды: первый раз при рождении, второй при выборе профессии
можно еще преобразовывать к строке и брать последние 2 символа.
Приложение:
Ответ отправил: ramok (статус: Студент)
Ответ отправлен: 02.02.2007, 23:28 Оценка за ответ: 5 Комментарий оценки: Спасибо
Отвечает: kool
Здравствуйте, Hunter20!
Есть такая функция.
Поясню на примерах:
Для числа 45678, чтобы получить 78
можно сделать так 45678 % 100 это и будет 78.
Чтобы получить 8 выполняем 45678 % 10 и т.д.
Удачи!
--------- I am.
Ответ отправил: kool (статус: 7-ой класс)
Ответ отправлен: 03.02.2007, 10:44 Оценка за ответ: 5 Комментарий оценки: Спасибо
Вопрос № 73.844
Уважаемые эксперты! Я начинающий... Учусь по книге. Уже во второй главе возникла трудность в проге "Подсчет символов в файле". Цикл выполняется, но при вводе Esc прога просто замирает. Хотя по книге, да и по идее, по окончанию цикла должнаи выводиться строка, в которой указано количество введенных символов.Подскажите, почему дальше цикла прога не идет. Таже история с оператором for. Заранее благодарю.
Приложение:
Отправлен: 03.02.2007, 01:17
Вопрос задал: Eugen (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: ramok
Здравствуйте, Eugen!
нажмите esc а затем Enter. должно пройти.
в вашем примере лучше использовать в цикле не getchar(), а getch()
ps
плохой пример и стиль ужасный (#define eof на 27 и #pragma в учебном примере... бррр..)
если не секрет что за книга?
Ответ отправил: ramok (статус: Студент)
Ответ отправлен: 03.02.2007, 01:38
Отвечает: kool
Здравствуйте, Eugen!
Эта прога считает число символов введенных пользователем
в консоли. Чтобы их подсчет прекратился нуно нажать <Ctrl> и [ -
одновременно и нажать Enter. Эта последовательность определяетсчя
твоей константой eof==27 (см. свою прогу).
В результате прога выдаст число символов которые ты ввел +1.
getch() - будет ждать нажатия любой клавиши.
Для подсчета символов в файле используй fgetc(...).
Удачи.
--------- I am.
Ответ отправил: kool (статус: 7-ой класс)
Ответ отправлен: 03.02.2007, 10:45