Предмет: Информатика, автор: Vanklise

как отсортировать массив после максимального элемента подскажите пожалуйста.
С++.

Ответы

Автор ответа: Аноним
1
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>

template <typename T>
void swap(T &a, T&b)
{
T t=a;
a=b;
b=t;
}

void printArray(int *array, int length)
{
for (int i=0;i<length;i++)
std::cout<<std::setw(4)<<array[i];
std::cout<<std::endl;
}

int main()
{
srand(time(0));
int length;
std::cin>>length;
int *array=new int[length];
for (int i=0;i<length;i++)
array[i]=rand()%100+1;
printArray(array,length);
int posMax=0;
for (int i=1;i<length;i++)
if (array[posMax]<array[i])
posMax=i;
bool flag=false;
while (flag==false)
{
flag=true;
for (int i=posMax+2;i<length;i++)
if (array[i]<array[i-1])
{
flag=false;
swap(array[i],array[i-1]);
}
}
printArray(array,length);
return 0;
}

Аноним: а откуда у вас такое ощущение, я не знаю
DigitalAnnihilator: Оттуда, что вы не знаете C++ :)
Вы понимаете что значит что оно инкремирует значение через временную переменную?)
Понимаете ли вы, что в момент получения значения i, оно не увеличивается? То есть на момент до вхождения в функциональный блок for значение i все ещё не увеличилось на 1? Нет? Так идите учите практику (:
DigitalAnnihilator: Почему человеку пишущему ответ по C++ вопросу, нужно объяснять как работает C++? Почему человек этого не знает изначально?)))
Аноним: то, что вы только что сказала абсолютно очевидно (про цикл for), и, разумеется, я знаю это
Аноним: сказали*
DigitalAnnihilator: Так почему вы так не делаете, раз это очевидно? По какой причине?
Аноним: что я не делаю?
DigitalAnnihilator: ++i вместо i++
Аноним: а и не надо
DigitalAnnihilator: Надо, это входит в привычку, если вы пишите на C++,то не пишите с legacy к тому же не нужно плодить лишнее место для ошибок.
Похожие вопросы
Предмет: Математика, автор: nastyapikhota1504
Предмет: Математика, автор: nastyapikhota1504