Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2021, 08:58   #1
LevMark
Пользователь
 
Регистрация: 28.03.2021
Сообщений: 24
По умолчанию Удаление максимального элемента вектора

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

#include <iostream>
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
using namespace std;
int main()
{
srand(time(0));
int n, i, j, index,k,m,p,f,ta;
cout << "Vvedite chislo ellementov massiva" << endl;
cin >> n;
vector<int>a(n);
vector<int>::iterator it;
cout << "Ishodniy massiv: ";
for(i=0; i<n; i++) {
a[i]=rand() % 50-25;
cout << a[i]<<",";
}
cout << endl;
cout<<"Udalim maksimalniy ellement"<<endl;
int max = 0;
index = 0;
for (it = a.begin(); it!= a.end(); ++it)
if (max < *it)
max = --*it;
a.erase(max);
cout << "Poluchenniy massiv : ";
for (it = a.begin() ; it!=a.end() ; ++it){
cout<<*it;}
cout<<endl;
system("pause");
}
LevMark вне форума Ответить с цитированием
Старый 20.06.2021, 12:04   #2
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

LevMark,
Код:
#include <iostream>
#include <ctime>
#include <vector>

int main()
{
    std::srand(std::time(0));

    std::cout << "Vvedite chislo ellementov massiva" << std::endl;
    int n{}; std::cin >> n;
    
    std::vector<int> a(n);

    std::cout << "Ishodniy massiv: ";
    for(auto&i:a) 
    {
        i=std::rand() % 50-25;
        std::cout << i<<",";
    }
    std::cout << std::endl;
    
    std::cout<<"Udalim maksimalniy ellement"<<std::endl;

    if(a.size())
    {
        //вообще, вместо этого лучше использовать std::max_element
        
        auto max = a.begin();
        for (auto it = a.begin(); it!= a.end(); ++it)
        {
            if(*max < *it)
            {
                max = it;
            }
        }
        
        a.erase(max);
    }
    std::cout << "Poluchenniy massiv : ";
    for (auto i:a)
    {
        std::cout<<i<<',';
    }
    std::cout<<std::endl;
    system("pause");
}
Алексей1153 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двусвязный список, вставка элемента в заданную позицию, и удаление элемента из заданной позиции - C++ Stok7 Помощь студентам 2 10.12.2016 19:52
Поиск максимального элемента АлександрМих Общие вопросы C/C++ 5 23.05.2012 18:17
Написать программу поиска вектора максимального по длине ayoka Паскаль, Turbo Pascal, PascalABC.NET 1 16.05.2012 22:05
Индекс максимального элемента. elvira_m Помощь студентам 9 16.05.2012 14:28
поиск максимального элемента счастливая Помощь студентам 4 17.05.2010 21:31