Выведите на экран значение максимального элемента и их количество. С++ и Ассемблер - Assembler

Узнай цену своей работы

Формулировка задачи:

Цель работы Научится оперировать с циклами для данных в формате short*int. Исходные данные и результат должны быть проверены на диапазон допустимых значений. Порядок работы 1. Найти свой вариант в одном из блоков заданий А, В или С. 2. Написать модули вычисления задания на языке Ассемблера. 3. Написать на С++ программу корректного ввода исходных данных (с контролем допустимого диапазона), вычисления задания и вывода полученного результата. 4. Встроить вызов ассемблерного модуля в программу на С++. 5. Произвести тестовые проверки. я смогла написать на с++, но никак не могу разобраться в ассемблере, помогите пожалуйста. вот код на с++
#include <locale>
#include <iostream>
#include <iomanip>
#include <ctime>
#include <conio.h>
 
using namespace std;
 
//extern "C" void el(void);
//extern "C"
short int *mas;
//extern "C"
short int  n, m, max;

//4. Выведите на экран значение максимального элемента и их количество.
void Print(short int *mas, int n)
{
    for (int i = 0; i < n; i++)
    {       
        cout << setw(6) << mas[i];
        cout <<" ";
    }
    cout << endl;
}

void InitRand(short int *mas, int n)
{
    for (int i = 0; i < n; i++)
    {
            mas[i] = rand() % 7 + (-5);     
    }
}

int main()
{
    int maxi,m1;
    setlocale(LC_ALL, "rus");
    cout << "Введите n количество элементов" << endl;
    cin >> n;

    if ( n == 0) cout << "Массив не должен быть равен 0";
    else
    {
        mas = new short int [n];
        //for (short int count = 0; count < n; count++)
            //mas[count] = new short int[m];

        cout << "Массив: " << endl;
        InitRand(mas, n);
        Print(mas, n);

        maxi = mas[0];
 
        for (int i = 0; i < n; i++)
        {
                if (maxi < mas[i]) //поиск максимальных элементов
                    maxi = mas[i];
                m1 = 0;
        }
 
        for (int i = 0; i < n; i++)
        {
                if (maxi == mas[i]) //подсчет максимального элемента                    
                    m1 = m1+1;
        }
 
        cout << "C++" << endl;
        cout << "Максимальный элемент : " << maxi << " Кол-во максимальных элементов : " << m1 << endl;
 
        cout << "ASM" << endl;
        //el();
        //cout << "Максимальный элемент : " << max <<  " Кол-во максимальных элементов : "<< m << endl;     
        cout << endl;
    }
    _getch();
    return 0;
}

Решение задачи: «Выведите на экран значение максимального элемента и их количество. С++ и Ассемблер»

textual
Листинг программы
#include <locale>
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
extern "C" short el(short *a, int size, int *max_count);
 
//4. Выведите на экран значение максимального элемента и их количество.
void Print(short int *mas, int n)
{
    for (int i = 0; i < n; i++)
    {       
        cout << setw(6) << mas[i];
        cout <<" ";
    }
    cout << endl;
}
 
 
void InitRand(short int *mas, int n)
{
    for (int i = 0; i < n; i++)
    {
            mas[i] = rand() % 7 + (-5);     
    }
}
 
 
int main()
{
    short int maxi, max2, *mas;
    int min = SHRT_MIN, max = SHRT_MAX, m1, m2, n;
    cout << "Введите n количество элементов" << endl;
    cin >> n;
    
    srand(time(NULL));
    if ((n<min) || (n>max))  cout << "Выход за диапазон";
    if ( n == 0) cout << "Массив не должен быть равен 0";
    else
    {
        mas = new short int [n];
        //for (short int count = 0; count < n; count++)
            //mas[count] = new short int[m];
 
        
        cout << "Массив: " << endl;
        InitRand(mas, n);
        Print(mas, n);
        
        maxi = mas[0];
 
        for (int i = 0; i < n; i++)
        {
                if (maxi < mas[i]) //поиск максимальных элементов
                    maxi = mas[i];
                m1 = 0;
        }
 
        for (int i = 0; i < n; i++)
        {
                if (maxi == mas[i]) //подсчет максимального элемента                    
                    m1 = m1+1;
        }
 
        cout << "C++" << endl;
        cout << "Максимальный элемент : " << maxi << " Кол-во максимальных элементов : " << m1 << endl;
 
        cout << "ASM" << endl;
        max2 = el(mas, n, &m2);
        cout << "Максимальный элемент : " << max2 <<  " Кол-во максимальных элементов : "<< m2 << endl;     
        cout << endl;
    }
    cin.ignore();
    cin.get();
    return 0;
}

Объяснение кода листинга программы

  1. Ввод количества элементов массива от пользователя.
  2. Инициализация генератора случайных чисел.
  3. Проверка корректности введенного количества элементов массива.
  4. Выделение памяти под массив.
  5. Инициализация массива случайными значениями.
  6. Вывод массива на экран.
  7. Поиск максимального элемента в массиве.
  8. Подсчет количества максимальных элементов в массиве.
  9. Вывод максимального элемента и количества его повторений на экран.
  10. Вызов функции на языке Ассемблера для поиска максимального элемента и количества его повторений.
  11. Вывод результатов работы функции на языке Ассемблера на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы