День добрый. Столкнулась с несколькими проблемами при решение задачи на массивы. Задача звучала так: Даны два массива целых чисел. С помощью функции программа должна выводить наибольшее число массива А, которого нет в массиве В. И вот те самые проблемы. 1. Если ввести полностью одинаковые числа, программа выдаст 0, как знак того, что наибольшего числа нет. Что нужно изменить в коде, чтобы при вводе одинаковых чисел, программа выводила "Наибольшего числа нет". 2. Программа не распознает отрицательные числа. Заранее спасибо за помощь.
#include <iostream>
using namespace std;
void maxnum () {
int ok;
do{
int n,m;
cout << "Введите количество элементов массива A(n): " << endl;
cin >> n;
cout << "Введите количество элементов массива B(m): " << endl;
cin >> m;
int *a = new int [n];
int *b = new int [m];
int max = 0;
cout << "Введите элементы массива A(n): " << endl;
for (int i = 0; i < n; i++)
cin >> a[i];
cout << "Введите элементы массива B(m): " << endl;
for (int j = 0; j < m; j++)
cin >> b[j];
for (int i = 0; i < n; i++){
if (a[i] > max){
int temp = max;
max = a[i];
for (int j = 0; j < n; j++){
if (b[j] == a[i]){
max = temp;
delete a;
delete b;
}
}
}
}
cout << "Наибольшее число, которое есть в массиве А, но нет в массиве В: " << max << endl;
cout << "Еще раз или закончить??" << endl;
cin >> ok;
}while (ok == 1);
}
int main(){
maxnum();
return 0;
}
Я ошибся. В коде не хватает двух булевских переменных.
int max = 0;
int found = 0;
for (int i = 0; i < n; i++) {
if (!found || a[i] > max) {
int foundInB = 0;
for (int j = 0; j < m; j++) {
if (b[j] == a[i]) {
foundInB = 1;
break;
}
}
if (!foundInB) {
max = a[i];
found = 1;
}
}
}
if (found) {
cout << "Наибольшее число, которое есть в массиве А, но нет в массиве В: " << max << endl;
} else {
count << "Наибольшего числа нет";
}
Немного громоздко, но вроде работает:
#include <iostream>
#include <vector>
#include <algorithm>
int main(int argc, char* argv[])
{
setlocale(LC_ALL, "Russian");
// Ввод кол-ва элементов
int n, m;
std::cout << "Введите количество элементов массива A(n): " << std::endl;
std::cin >> n;
std::cout << "Введите количество элементов массива B(m): " << std::endl;
std::cin >> m;
// Выделение памяти массивов
int *a = new int[n];
int *b = new int[m];
// Ввод элементов
std::cout << "Введите элементы массива A(n): " << std::endl;
for (int i = 0; i < n; i++)
std::cin >> a[i];
std::cout << "Введите элементы массива B(m): " << std::endl;
for (int j = 0; j < m; j++)
std::cin >> b[j];
// Массив чисел среди которых осуществляется поиск
std::vector<int> numbers;
// Отобрать числа, которые отсутствуют в массиве b
for (int i = 0; i < n; i++)
{
bool add = true;
for(int j = 0; j < m; j++)
{
if (a[i] == b[j]) add = false;
}
if(add) numbers.push_back(a[i]);
}
// Найти максимальное среди отобраных
int max = *std::max_element(numbers.begin(), numbers.end(), [](int elem1, int elem2) {return elem1 < elem2; });
std::cout << "Наибольшее число, которое есть в массиве А, но нет в массиве В: " << max << std::endl;
system("pause");
}
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Вот такая вот простенькая программ, окно отслеживает позицию мыши и рисует ее координаты рядом с нейНо заметил интересный эффект мигания...