|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.02.2008, 20:58 | #1 |
Новичок
Джуниор
Регистрация: 20.02.2008
Сообщений: 2
|
одномерный массив
Люди те кто шарят плз помогите не могу разобраться где ошибка..
Цель программы следующая, сформировать одномерный массив A={ai} (i=1...30), где ai вычисляется по формулам: ai= (i+75)/100 + (i/2+ i/3) 0<i<31.. Вот что у меня получилось ---------------------------------------------------------------- MASM Код:
Последний раз редактировалось rpy3uH; 21.02.2008 в 19:41. |
21.02.2008, 09:09 | #2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Путаница с индексами:
Во первых не совпадает количество элементов массива (1..30) и количество значений по формуле (0..31) во вторых - по тексту программы: i - индекс внутри массива (1..30) si - индекс внутри формулы (наверное 0..29) тогда mov al,i <---- неправильно - нужно mov ax, si add ax,s75 div 100 то-же с делением на 3 обращение к элементам массива через i, а не через si почему si - инкремент два раза ? Вывод. Внимательнее с индексами. А ошибка уже в постановке задачи. |
21.02.2008, 11:14 | #3 |
Новичок
Джуниор
Регистрация: 20.02.2008
Сообщений: 2
|
количество элементов нормально... у меня в массиве 30 элементов по условию задачи надо от 0 до 31 не включительно...
а с индексами попробывал поменять место mov al,i на mov al,si и аналогично при делении на 3 ... всеравно при компиляции ошибки начиная со строки Mov al,si add ax,s75 До строки mov mas[si],ax а про инкрементацию si спс не заметил что написал 2 раза )) Последний раз редактировалось fatdog; 21.02.2008 в 11:35. Причина: очепятка |
21.02.2008, 11:44 | #4 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
еще раз повторю: внимательнее si - 16-битовый. Нужно mox ax. si
Насчет диапазона в условии извиняюсь. Сбило с толку использование двух переменных. В цикле используется переменная i и регистр SI. Только инициализация для i с 1-цы, для SI - с нуля. Последний раз редактировалось alexBlack; 21.02.2008 в 12:23. |
23.02.2008, 10:05 | #5 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
У нас будут использоваться целочисленные операции, поэтому, чтобы
хоть как-то уменьшить погрешности округления, после несложных преобразований приведем формулу к виду: (253*i+225)/300 Перед решением всегда полезно знать ответ, поэтому просчитаем формулу в Excell. получим последовательность: 1 2 3 4 4 5 ... 25 26 теперь код: Код:
result: 01 02 03 04 04 05 06 07 08 09 10 10 11 12 13 14 15 15 16 17 18 19 20 20 21 22 23 24 25 26 |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
одномерный массив | ldx | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 06.06.2008 17:45 |
VBA. Одномерный массив | ExMatiss | Microsoft Office Excel | 9 | 07.05.2008 05:57 |
безразмерный одномерный массив | SunKnight | Общие вопросы C/C++ | 1 | 20.02.2008 04:13 |
Массив Одномерный | flait111 | Помощь студентам | 3 | 15.12.2007 14:08 |
Одномерный массив | SkyDreamer | Помощь студентам | 1 | 01.12.2007 21:22 |