Вопрос № 105848: Здравстуйте!
Необходимо составить программу для вычисления остатка от деления целого числа a на челое число b. В алгоритме из арифметических операций разрешается использовать ТОЛЬКО операцию вычитания.
Я пытался составить цикл через repeat......Вопрос № 105873: Уважаемые эксперты!!!
Помогите, пожалуйста, составить програму, которая бы выводила
на экран соджержимое всех ненулевых векторов прерываний. После
вызова пограма должна оставаться резидентной.
А вектор прерываний, которым инициализир...Вопрос № 105895: Здраствуйте! Помогите, пожалуйста, ламеру с задачками. Вроде я их делаю, но препод все равно находит ошибку. Как я понял делаются они через "if". Задачи почти идентичны. Немогу сообразить:(...
Вопрос № 105.848
Здравстуйте!
Необходимо составить программу для вычисления остатка от деления целого числа a на челое число b. В алгоритме из арифметических операций разрешается использовать ТОЛЬКО операцию вычитания.
Я пытался составить цикл через repeat...until, но программа зацикливалась. Вариант a mod b не предлагать.
Суть идеи в том, что если требуется разложить 28 апельсинов по пяти тарелкам, а остаток убрать, то надо взять 5 апельсинов и положить их по одному в тарелку. Останется 22. Из них взять ещё 5 и т.д., пока не останется 3 штуки.
Вам достаточно построить цикл while с условием a > b, и уменьшать значение переменной a на величину b пока выполняется это условие, в конце данных манипуляция в переменной a будет храниться искомый остаток.
Вот полный код: var a,b:integer;
begin
write('Input a=');read(a);
write('b=');read(b);
while a>b do
begin
a:=a-b;
end;
writeln('ostatok=',a);
end.
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 17.10.2007, 22:36 Оценка за ответ: 5 Комментарий оценки: Спасибо большое, что так быстро!
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Work_stranger!
Cмотри приложение. Удачи!
Приложение:
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 17.10.2007, 22:43 Оценка за ответ: 5 Комментарий оценки: Спасибо!
Отвечает: Артём1983
Здравствуйте, Work_stranger!
Скорее всего мои вариант решения не сильно отличается от Вашего. Но так как Вы его не привели остаётся только догадываться. Как и Вы я использовал цикл repeat unlil. Условия выхода: первое количество апельсинов меньше чем тарелок и второе в тарелках находится по ровну яблок.
В приложении код программы.
Приложение:
--------- Программирование - дело Путное!
Ответ отправил: Артём1983 (статус: 5-ый класс)
Ответ отправлен: 18.10.2007, 21:02
Вопрос № 105.873
Уважаемые эксперты!!!
Помогите, пожалуйста, составить програму, которая бы выводила
на экран соджержимое всех ненулевых векторов прерываний. После
вызова пограма должна оставаться резидентной.
А вектор прерываний, которым инициализируется програма,
можно подобрать автоматически.
И если можно в коде програмы дайте небольшие объяснения насчёт
каких-либо функций или по ходу её решения.
Заранее благодарен!
Отправлен: 18.10.2007, 02:14
Вопрос задал: Seryj (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 13)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Seryj!
Программа должна запускатся из командной строки.
Структуры MS-DOS использованые в программе:
-Таблица прерываний MS-DOS, занимает адреса от 0000:0000 до 0000:03FF,
на каждое прерывание отводится 4-е байта 1:2-смещение,3:4-сегмент прерывания.
Если это 9-е прерывание, ячейка памяти где находится адрес самого обработчика прерывания равна 0:36=4*9.
-0040:001А и 0040:001С -в этих ячейках записаны адреса начала и конца буфера клавиатуры, если значения записанные по этим адресам совпадают - клавиша не нажата.
-0040:0017 слово№ 1- состояния клавиатуры позволяют определить нажата ли спец-клавиша(CTRL, ALT или SHIFT), мы ищем CTRL.
-В строках: c:=e^;
h:=ptr($40,c);
d:=h^;
извлекается скан-код нажатой клавиши, для буквы "А" =1(после обработки ТР).
-программа будет сбоить под отладчиками, т.к. используется отдадочное преривание INT3(код:CCh)
Перед самым первым оператором программы выполняется загрузка подключаемых модулей. И первое, что делает модуль SYSTEM(загружаемый автоматически), это ставит свои обработчики прерываний, информацию о изменяемых прерываниях Вы найдете в помощи паскаля:SaveIntXX. Только по этой причине после нажатия CTRL+A и вывода информации появляется "^C".
Удачи!
Приложение:
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Здраствуйте! Помогите, пожалуйста, ламеру с задачками. Вроде я их делаю, но препод все равно находит ошибку. Как я понял делаются они через "if". Задачи почти идентичны. Немогу сообразить:(
Привожу решение для первой из Ваших задач (смотрите приложение).
Приложение:
--------- Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.
Ответ отправил: Delph (статус: Студент)
Ответ отправлен: 18.10.2007, 09:50 Оценка за ответ: 5 Комментарий оценки: В этих "ифах" я и запутался. Спасибо.
Отвечает: Gh0stik
Здравствуйте, Аксенов Антон!
Для задачи №2, Вам необходимо рассмотреть случаи при которых размеры отверстия больше либо равны каким либо двум размерам кирпича.
Вот код решенной задачи: var a,b,c,x,y:real;
begin
write('Input a='); readln(a);
write('b='); readln(b);
write('c='); readln(c);
write('x='); readln(x);
write('y='); readln(y);
if ((x >= a) and ((y >= b) or (y >= c))) or
((x >= b) and ((y >= a) or (y >= c))) or
((x >= c) and ((y >= a) or (y >= b)))
then writeln('proydet')
else writeln('ne proydet');
readln;
end.
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 18.10.2007, 11:47 Оценка за ответ: 5 Комментарий оценки: Эта ситуация посложнее первой была... Спасибо) "ифы", брррр...