Вопрос № 74804: Добрый день.
Помогите пожалуйста реализовать алгоритм для решения нижеизложенной задачи.
(2?5)?((12-2)?9)=190
т.е. программа должна заменить знаки вопроса на арифметические действия, так, чтобы в итоге получилось 190
(2+5)*((12-2)+9)...Вопрос № 74871: Ув. эксперты как в MS Visual Studio 2003 в режиме отладки посмотреть значение той или иной пере
менной? Заранее спасибо....Вопрос № 74881: Здравствуйте, уважаемые эксперты!
Возник следующий вопрос. Нужно написать программку, которая при обращении к видеокарте выдаёт на выходе строку, содержащую наименование модели установленной видеокарты; например, такую строку: "RADEON X1600 ...
Вопрос № 74.804
Добрый день.
Помогите пожалуйста реализовать алгоритм для решения нижеизложенной задачи.
(2?5)?((12-2)?9)=190
т.е. программа должна заменить знаки вопроса на арифметические действия, так, чтобы в итоге получилось 190
(2+5)*((12-2)+9)=190
Зарание спасибо
Отправлен: 08.02.2007, 16:33
Вопрос задал: Platon (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Ross
Здравствуйте, Platon!
Код, находящийся в приложении, вы должны поместить в 3 отдельных файла и присоединить к созданному консольному проекту.
Приложение:
Ответ отправил: Ross (статус: 5-ый класс)
Ответ отправлен: 10.02.2007, 14:41
Отвечает: Thread
Здравствуйте, Platon!
Я рекомендую вам разобраться в алгоритме Дейкстры перевода в постфиксную запись, с дальнейшим ее вычислением, что бы вычислить значение выражение. Затем перебором подставляете всевозможные комбинации операторов, и вычисляйте значение. Повторяете до тех пор, пока значение выражения не станет нужным.
Приложение:
Ответ отправил: Thread (статус: 3-ий класс)
Ответ отправлен: 12.02.2007, 14:48
Вопрос № 74.871
Ув. эксперты как в MS Visual Studio 2003 в режиме отладки посмотреть значение той или иной пере
менной? Заранее спасибо.
Отправлен: 08.02.2007, 23:55
Вопрос задал: Hunter20 (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Xoma
Здравствуйте, Hunter20!
Debug -> Add Watch, кажется.
Вообщем ищите панель Watch и в неё добавляйте.
Ответ отправил: Xoma (статус: 1-ый класс)
Ответ отправлен: 09.02.2007, 00:13 Оценка за ответ: 5
Ответ отправил: ramok (статус: Студент)
Ответ отправлен: 09.02.2007, 01:30 Оценка за ответ: 5
Отвечает: Базанов Иван Александрович
Здравствуйте, Hunter20!
Во первых нужно скомпилировать программы в Debug конфигурации.
Во вторых поставить breakpoint в том месте кода, где хочешь посмотреть значение переменной.
Далее:
1. В debug window Watch прописать имя этой переменной (либо просто туда ее перетащить)
2. Просто навести на имя этой переменой мышку и подождать всплывающей подсказки со значением переменой
--------- Программист ошибается дважды: первый раз при рождении, второй при выборе профессии
Ответ отправил: Базанов Иван Александрович (статус: 4-ый класс)
Ответ отправлен: 09.02.2007, 10:06 Оценка за ответ: 5
Вопрос № 74.881
Здравствуйте, уважаемые эксперты!
Возник следующий вопрос. Нужно написать программку, которая при обращении к видеокарте выдаёт на выходе строку, содержащую наименование модели установленной видеокарты; например, такую строку: "RADEON X1600 Series"
При этом необходимо использовать исключительно WinApi (если такие есть) либо низкоуровневые Си-шные функции (также, если такие есть), либо Ассемблерные функции соответствующих прерываний (такое должно быть, но вот, что именно?).
Заранее спасибо!
Отправлен: 09.02.2007, 02:45
Вопрос задал: VSP (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Sergijj
Здравствуйте, VSP!
Отобразить строку так, как Вы хотите, можно следующим образом:
1. Для начала выделить буфер памяти для блока информации размером 512 байт.
Указатель описываем например так:
unsigned char far *vesaInfoBlock = NULL;
Выделяем примерно так:
if (!(vesaInfoBlock = new char [512])) {
exit(-1);
};
2. Выполняем следующий код:
asm{
pusha
mov di, word ptr [vesaInfoBlock]
mov es, word ptr [vesaInfoBlock + 02h];
mov ax, 04F00h
mov bx, ax
int 10h
xchg ah,al
sub ax, bx
jz main_finish1
mov errorCode, ax
}; main_finish1:; asm {
popa
}
Этим мы обратились к VESA и выдернули оттуда заводскую информацию по видеокарте.
Если в errorCode будет не 0, то Ваша видеокарта стандарт VESA не поддерживает.
3. В этой выдранной структуре сначала проверяем первые 4 байта. Они должны быть равны сигнатуре 'VESA'. Если не так, то значит Ваша видеокарта не поддерживает стандарт VESA и продолжение - бессмысленно. А если сигнатура есть - переходим к следующему пункту.
4. В этой же структуре по смещению [+06h] находится искомая Вами ASCIIZ-строка, напечатать которую можно например так:
printf("
OEM string: %s", &vesaInfoBlock[0x06]);
5. Не забыть удалить выделенный буфер памяти, например так:
delete vesaInfoBlock;
Всё вышеописанное прекрасно работает на 16-разрязном BC++ 3.1.
Если действовать через WinAPI, то, скорее всего, придётся работать через драйвер видеокарты. Хотя, иногда, может пройти и так...:)
--------- Стучитесь! И Вас откопают...
Ответ отправил: Sergijj (статус: 8-ой класс)
Ответ отправлен: 09.02.2007, 09:49