Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 11.11.2012
Сообщений: 25
1

Определить и вывести, находится ли максимальный элемент матрицы на главной диагонали или нет

06.02.2014, 13:11. Показов 1161. Ответов 11
Метки нет (Все метки)

Ввести размеры ( n, m ) двумерного массива типа int. Сгенерировать
или ввести матрицу n*m. Определить и вывести, находится ли
максимальный элемент на главной диагонали или нет.
Помогите пожалуйста.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2014, 13:11
Ответы с готовыми решениями:

Найти максимальный элемент главной диагонали матрицы и вывести всю строку в которой он находится
C использованием двумерных массивов составить программу для решения следующей задачи: дана...

Найти максимальный элемент главной диагонали матрицы и вывести всю строку в которой он находится
C использованием двумерных массивов составить программу для решения следующей задачи: дана...

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

Верно ли, что максимальный элемент матрицы находится выше главной диагонали
Дана матрица порядка К. Верно ли, что максимальный элемент матрицы находится выше главной...

11
Ушел с форума
Автор FAQ
14188 / 7070 / 834
Регистрация: 11.11.2010
Сообщений: 12,683
06.02.2014, 16:27 2
Zorks,
непременно поможем, только давай начнем с разбора твоих наработок...
1
1770 / 748 / 153
Регистрация: 03.06.2009
Сообщений: 5,301
07.02.2014, 09:17 3
А Вам точно ассемблер нужен? int - это тип с/с++.
0
0 / 0 / 0
Регистрация: 11.11.2012
Сообщений: 25
07.02.2014, 12:13  [ТС] 4
Как бы вам объяснить то, что сам не понимаю. Мы работает с asm в среде visual studio.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <Windows.h>
#include <stdio.h>
void main()
{
    int n[250];
    int m[250];
    scanf("%s", n);
    scanf("%s", m);
    __asm
    {
тут код ассемблера
C++
1
}
0
1770 / 748 / 153
Регистрация: 03.06.2009
Сообщений: 5,301
07.02.2014, 13:23 5
Лучший ответ Сообщение было отмечено Zorks как решение

Решение

C++
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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
 
void main()
{
    int A[100][100],m,n;
    int r=0;
    scanf("%d", &n);
    scanf("%d", &m);
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++) A[i][j]=rand()%10;
    __asm
    {
        lea esi,A;
        xor ecx,ecx;
        mov eax,[esi];
        xor edx,edx;
    }
lp2:
    __asm{
        xor ebx,ebx;
    }
lp1:
    __asm
    {
        cmp [esi+ebx*4],eax;
        jle m1
        mov eax,[esi+ebx*4];
        mov ch,bl;
        mov cl,dl;
    }
m1:
    __asm{
    inc ebx;
    cmp ebx,n;
    jb lp1
    add esi,400;
    inc edx;
    cmp edx,m;
    jb lp2
    cmp ch,cl;
    setz byte ptr r;
    }
    if(r) printf("da\n");
    else  printf("net\n");
    system("pause");
}
Свистелки и перделки самостоятельно.
1
Ушел с форума
Автор FAQ
14188 / 7070 / 834
Регистрация: 11.11.2010
Сообщений: 12,683
07.02.2014, 15:10 6
Цитата Сообщение от Zorks Посмотреть сообщение
Ввести размеры ( n, m ) двумерного массива типа int. Сгенерировать или ввести матрицу n*m. Определить и вывести, находится ли максимальный элемент на главной диагонали или нет.
Даже судя по заданию всё через чур запущено:
  • вопрос номер один, а есть ли главная диагональ у матрицы произвольного массива NxM или главная диагональ есть только у квадратной матрицы?
  • Второе, для поиска максимального элемента массива считаем матрицу линейным массивом и последовательно перебираем все элементы от первого до N2 сравниваем элементы между собой и запоминаем величину и индекс максимального элемента.
  • Третье, перебрав все элементы делим индекс максимального элемента на (N+1), если остаток от деления равен нулю, значит максимальный элемент находится на главной диагонали
1
0 / 0 / 0
Регистрация: 11.11.2012
Сообщений: 25
07.02.2014, 17:42  [ТС] 7
alexcoder, спасибо огромное, буду учиться.
Mikl___, Касаемо первого вопроса, есть диагональ на сколько я знаю. Почитав вики точно все стало на свои места. Цитата.
Главной диагональю прямоугольной матрицы является диагональ, которая начинается в верхнем левом углу матрицы и изменяется вниз и вправо, пока не будет достигнут правый или нижний край матрицы.
0
Ушел с форума
Автор FAQ
14188 / 7070 / 834
Регистрация: 11.11.2010
Сообщений: 12,683
07.02.2014, 18:41 8
Zorks,
пусть N - ширина матрицы, а M - высота, у тебя три варианта: N>M, N=M, N<M.
1) N=5, M=3, *- элементы на главной диагонали
Код
*..|..
.*.|..
..*|..
элементы правее | на главную диагональ не попадут
Второй вариант я уже рассмотрел.
3) N=3, M=5
Код
*..
.*.
..*<-- элементы ниже можно не учитывать
...
...
1
0 / 0 / 0
Регистрация: 11.11.2012
Сообщений: 25
07.02.2014, 18:49  [ТС] 9
Mikl___, абсолютно правы, благодарю за разъяснения и идею для оптимизации. У меня к вам есть еще вопрос, можно ли как либо считая матрицу линейным массивом вывести ее в консоль для наглядности? Если брать код предложенный alexcoder.
0
Ушел с форума
Автор FAQ
14188 / 7070 / 834
Регистрация: 11.11.2010
Сообщений: 12,683
07.02.2014, 18:55 10
Zorks,
ты хозяин своей программы - тебе и карты в руки, но совет - для простоты поработай сперва с матрицей 2х2, затем с матрицей 3х3, а уже потом, когда программа начнет работать на 100%, переходи на матрицы с произвольным размером задаваемым пользователем
0
0 / 0 / 0
Регистрация: 11.11.2012
Сообщений: 25
07.02.2014, 19:01  [ТС] 11
Mikl___, да по декомпозиции понятно все. Просто возможно ли вообще такое сделать,
это же не си.
0
Ушел с форума
Автор FAQ
14188 / 7070 / 834
Регистрация: 11.11.2010
Сообщений: 12,683
07.02.2014, 19:07 12
Zorks,
а я бы сперва на С-программе потренировался, а уже потом готовую и работающую программу переводил в программу с использованием асм-вставок... на ассемблере всё можно сделать, только это будет дольше, чем на Си или Паскале
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2014, 19:07

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

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

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

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

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


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

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

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