IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> как это будет выглядеть в Паскале?
forum4uxa
сообщение 18.01.2007 20:13
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Alexey

Репутация: -  0  +


i:=57; k:=19;
while i<199 do
if ((i + k div 2) mod 11) = 5 then i:=i-k else k:=k*k+(i div 2)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 23.01.2007 16:11
Сообщение #2


Гость






В Паскалевском варианте деления на 0 НЕТ. Есть зацикливание, но это разные вещи...
 К началу страницы 
+ Ответить 
forum4uxa
сообщение 23.01.2007 16:26
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Alexey

Репутация: -  0  +


Цитата(volvo @ 23.01.2007 16:11) *

В Паскалевском варианте деления на 0 НЕТ. Есть зацикливание, но это разные вещи...

а как избавиться от этого???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 23.01.2007 17:39
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Цитата(forum4uxa @ 23.01.2007 16:26) *
а как избавиться от этого???
Зацикливание возникает в следствии того, что не обрабатывается ошибка переполнения, если ее включить - то будет паскалем выдаваться "Runtime error 215 at 0BED:0075.", что означает "Arithmetic overflow error". Это значит что где-то при вычислении твоего k происходит переполнение, в ассемблере после математических операций нада проверять флаговый регистр:
Код
                            Регистр флагов
-----------------------------------------------------------------

     Этот 16-разрядный (16-битовый) регистр содержит всю  необхо-
димую  информацию  о состоянии процессора 8086 и результатах пос-
ледних инструкций (см. Рис. 4.5).

15                                                         0
------------------------------------------------------------
|   |   |   |   | O | D | T | S | Z |   | A | P | P |  | C |
------------------------------------------------------------

     Битовые флаги:

     O - флаг переполнения;
     D - флаг направления;
     I - флаг прерывания;
     T - флаг перехвата;
     S - флаг знака;
     Z - флаг нуля;
     A - флаг дополнительного переноса;
     P - флаг четности;
     C - флаг переноса.

     Рис. 4.5 Регистр флагов процессора 8086.



--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.07.2025 7:13
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"