Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 661
от 08.02.2007, 02:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 471, Экспертов: 60
В номере:Вопросов: 4, Ответов: 7


Вопрос № 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; // Результат

---------
Программист ошибается дважды: первый раз при рождении, второй при выборе профессии
Ответ отправил: Базанов Иван Александрович (статус: 3-ий класс)
Ответ отправлен: 02.02.2007, 23:26

Отвечает: ramok
Здравствуйте, Hunter20!

см. приложене

можно еще преобразовывать к строке и брать последние 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.44 beta от 26.01.2007
Яндекс Rambler's Top100

В избранное