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