Выведите на экран значение максимального элемента и их количество. С++ и Ассемблер - 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;
- }
Объяснение кода листинга программы
- Ввод количества элементов массива от пользователя.
- Инициализация генератора случайных чисел.
- Проверка корректности введенного количества элементов массива.
- Выделение памяти под массив.
- Инициализация массива случайными значениями.
- Вывод массива на экран.
- Поиск максимального элемента в массиве.
- Подсчет количества максимальных элементов в массиве.
- Вывод максимального элемента и количества его повторений на экран.
- Вызов функции на языке Ассемблера для поиска максимального элемента и количества его повторений.
- Вывод результатов работы функции на языке Ассемблера на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д