Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание двумерного массива из вводмой, последовательности чисел 
:(
    Опции темы
Pakshin A. S.
Дата 3.5.2007, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Вводится через пробел последовальность чсел длины не более 10. Признак конца ввода - <Enter>. Требудет реализовать двумерный массив.
Пример ввода:
-> 1
00000000001
-> 2
00000000001
00000000002
-> 33
00000000001
00000000002
00000000033
-4
00000000001
00000000002
00000000033
10000000004

Вот что у меня получилось написать:
Код

.data
    hStdOut   dd ?
    hStdIn    dd ?
    mes       db "Enter elements (separator - space): ",0Dh,0Ah
    kol_chars dd 1
    stroka    dw 1
    massiv    dw ?
    buf          dw ?
    count1      db ?
    
    len          db ?
    
    ten          dw 10
    
    i          dw 0
...
    mov    esi, 0
    mov        edi, 10
    mov        len, 0
    while1:
        invoke    ReadConsole, hStdIn, offset stroka, 1, offset kol_chars, 0 ; получили символ
        
        cmp        stroka, 13
        je        end_insert ; окончание ввода - <Enter>
        
        cmp        stroka, "-" ; проверка на отрицательность
        jne        insert
        mov        ax, 0;
        cmp        massiv[esi], ax
        jne        error ; ошибка - не верный ввод
        mov        ax, 1
        mov        massiv[esi], ax
        
        insert:
            cmp    stroka, " "
            jne        insert_value
            next_value: ; число сформировано
                mov        ebx, 1
                mov        ax, 0
                ; заполнение нулями начала строки
                while2:
                    mov        massiv[esi+ebx], ax
                    inc        ebx
                    cmp        ebx, edi
                    jb        while2
                ; переход к следующей строке
                inc        len
                inc        i
                movzx    eax, i
                mul        ten
                mov        esi, eax
                mov        edi, 10
                jmp        while1
            insert_value: ; формирование числа
                ; проверка корректности цифры
                cmp        stroka, "0"
                jb        error
                cmp        stroka, "7"
                ja        error
                ; добавление корректной цифры
                ;dec        edi
                mov        ebx, edi
                ; осуществление сдвига влево
                while3:
                    cmp        ebx, 10
                    jae        end_while3
                    mov        ax, massiv[esi+ebx+1]
                    mov        massiv[esi+ebx], ax
                    inc        ebx
                    jmp        while3
                end_while3:
                dec        edi;
                lea        ecx, stroka
                mov        ax, [ecx]
                mov        massiv[esi+10], ax
                
                ;invoke    WriteConsole, hStdOut, offset stroka, sizeof stroka, offset kol_chars, 0    
                
                ;xor        ecx, ecx
                ;wl:
                ;    mov        ax,    massiv[esi+ecx]
                ;    mov        buf, ax
                ;    invoke    WriteConsole, hStdOut, offset buf, sizeof buf, offset kol_chars, 0
                ;    inc        ecx
                ;    cmp        ecx, 10
                ;    jbe        wl
                
                jmp        while1
    end_insert:    


Но результат почему-то от вводимой последоватльностит не меняется... Т. е. работае ен верно... ПОмогите найти ошибку...

Спасибо за помощь...
PM   Вверх
Akina
Дата 3.5.2007, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата(Pakshin A. S. @  3.5.2007,  22:58 Найти цитируемый пост)
Пример ввода:

ага... теперь объясни, что в нем двумерного...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pakshin A. S.
Дата 3.5.2007, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Вводится строка:
1 2 33 -4

после работы алгоритма у нас формируется массив:
0000000000100000000002000000000331000000004

который можно воспринимать как двумерный массив, строки которого - введенные числа...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0580 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.