Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Verybuuu
0 / 0 / 0
Регистрация: 05.06.2009
Сообщений: 11
1

Максимальный элемент

07.06.2009, 12:25. Просмотров 715. Ответов 1
Метки нет (Все метки)

Помогите ,пожалуйста....очень срочно нужно зачёт получить, а лабы не сделаны((
Буду вам очень-очень благодарна)

Дан двумерный массив А(4х5), сформировать одномерный массив В(4), каждый элемент которого является максимальным элементом соответствующей строки массива А.

Заранее огромное спасибо

Добавлено через 18 часов 56 минут 50 секунд
почти готово, но я не могу понять в чём ошибка!!!подскажите пожалуйста....очень прошу)



Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
.model small
.stack 256
.data
N    equ 4              ;количество строк
M    equ 5              ;количество столбцов
A    db 1,2,-3,-4,5
     db -6,7,-8,9,0
     db -1,3,2,-7,4
     db 6,-8,2,0,1
B    dw 4 dup (?)
;==================================================
.code
main:
        mov ax,@data
        mov ds,ax       ;настройка DS на сегмент данных
 
;для адресации элементов массива A используем регистры
;       BX - смещение текущей строки
;       SI - смещение элемента внутри текущей строки
;для адресации элементов массива B используем регистр
;       DI - смещение элемента
 
        mov cx,N        ;счетчик строк массива A
                        ;(для организации цикла по строкам)
        mov bx,0        ;смещение первой строки A
        mov di,0        ;смещение первого элемента B
;-----------------
stroka:                 ;начало цикла по строкам А (внешний цикл)
        mov B[di],0     ;обнуляем текущий элемент массива B
 
        mov dx,cx       ;спасаем cx (счетчик цикла по строкам)
        mov si,0        ;смещение первого элемента в строке массива A
        mov cx,M        ;счетчик столбцов массива A
                        ;(для организации цикла по столбцам)
;-----------------
stolb:                  ;начало цикла по столбцам (внутренний цикл)
      mov al,A[BX][SI]  ;поместить в AL текущий элемент массива А-первый элемент
      cbw                       ;преобразование AL в слово AX
 
      cmp al,A[Bx][SI+type A]         ;al-A[Bx][SI+1] ?
      JLE met1                        ;eсли al<=A[Bx][SI+type A]
                                      ;переход к met1
      mov B[di],ax              ;запись в B[di]
      jmp short met1            ;переход к met1
met1:
      add SI,type A        ;установить si на следующий элемент в строке (+1)
      loop stolb           ;продолжить, если выбраны не все элементы строки
      jmp fin              ;переход к метке fin
 
;----------------
fin:
     mov cx,dx         ;восстановим cx
     add bx,M*type A   ;установить bx на начало следующей строки A (+5)
     add di,type B     ;установить di на следующий элемент массива B(+2)
     loop stroka       ;продолжить, если проверены не все строки
 
     mov ax,4c00h      ;завершить выполнение программы
     int 21h
     end main
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2009, 12:25
Ответы с готовыми решениями:

Максимальный элемент
Помогите пожалуйста!...нужно переделать эту программу так чтобы из каждой строки был выбран...

Найти максимальный элемент массива
Найти максимальный элемент массива с помощью программы FASM(желательно детальнее).

Максимальный элемент массива под диагоналями
Нужна помощь. Задается квадратный двумерный массив. В нем две главные диагонали. Требуется найти...

Поменять местами максимальный и минимальный элемент в одномерном массиве
могу только найти максимум , а минимум чет не получается но у меня не получается найти их позиции...

Дан массив, состоящий из n элементов. Найти максимальный элемент в массиве
Всем добрый день. Я сейчас сижу на экзамене и мне нужна помощь))) Дан массив, состоящий из n...

1
proc3nt
волшебник
947 / 520 / 156
Регистрация: 26.05.2012
Сообщений: 1,471
06.07.2014, 20:28 2
во внутреннем цикле при нахождении макс элемента в строке максимальный элемент сравнивается со следующим. всего сравнений будет 4 (1 со 2, 2 с 3,3 с 4,4 с 5), а не 5 (количество столбцов в строке).
не нужны в принципе безусловные переходы на метку, которая идет сразу же после их.
прежде чем скопироват временный максимальный элемент в массив B его нужно запомнить (в данном случае запоминаем в регистре al)
до начала поиска в каждой следующей строке максимальному элементу этой строки присваивается первый элемент для последующего сравнения с ним с целью найти настоящий максимальный.
еще не понравилось спасение cx (счетчик цикла по строкам). лучше это делать через стек. но это ошибка

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
.model small
.386
 
.data
     db 'Begin Of Data',0
N    equ 4             
M    equ 5             
A    db 1,2,-3,-4,5
     db -6,7,-8,9,0
     db -1,3,2,-7,4
     db 6,-8,2,0,1
B    dw 4 dup (?)
max  db ?
     db 'End Of Data',0
 
.stack 256
 
.code
main:
        mov ax,@data
        mov ds,ax
 
        mov cx,N       
                        
        mov bx,0        
        mov di,0        
 
stroka: 
        push cx       
        mov si,0       
        mov cx,M
        dec cx
        
        mov al,A[bx][si]
        cbw
        mov B[di],ax
stolb:                   
      cmp al,A[bx][si+type A]        
      jg met1                      
      
      mov al,A[bx][si+type A]
      mov B[di],ax            
      
met1:
      add si,type A      
      loop stolb                 
 
fin:
     pop cx 
     add bx,M*type A 
     add di,type B   
     loop stroka    
 
     mov ax,4c00h
     int 21h
     end main
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2014, 20:28

5. Напишите программу, которая выбирает из элементов заданного массива байтов максимальный элемент
5. Напишите программу, которая выбирает из элементов заданного массива байтов максимальный элемент.

Подскажите пожалуйста, как в одномерном массиве с отрицательными элементами найти максимальный элемент
Написала прогу,но не могу разобраться, почему если в массиве есть отрицательный элемент, то ему...

В квадратной матрице поменять местами строку и столбец на пересечении которых находится максимальный элемент
В квадратной матрице поменять местами строку и столбец на пересечении которых находится...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru