Здравствуйте. Не могу перенести из одного статического массива в другой все элементы, кроме максимального и минимального значений

Все элементы массива Z(K) переписать в массив X, за исключением максимального и минимального. Испробовал несколько методов, вроде алгоритм правильный, но программа работает криво именно при переносе значений в другой массив. Вот мой код:

    #include <iostream>
using namespace std;
main()
{
    int a[100], b[100];
    int n=0;

    cout<<"vvedi kolichestvo znacheniy massiva: ";
    cin>>n;

    cout<<"vvedi znacheniya massiva ";

    for(int i=0; i<n; i++)
    {
        cin>>a[i];
    }

    int min, max;
    max=a[0];
    min=a[0];

    for(int i=0; i<n; i++)
    {
        if(a[i]>a[max]) max=i;
        if(a[i]<a[max]) max=max;

        if(a[i]>a[min]) min=min;
        if(a[i]<a[min]) min=i;
    }

    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n-2; j++)
        {
            if(a[max]!=a[i] && a[min]!=a[i]) a[i]=b[j];
            else continue;
        }
    }
    for(int i=0; i<n-2; i++)
    {
        cout<<b[i]<<" ";
    }
}

Ответы (1 шт):

Автор решения: Alexey Vesker

В вашем коде несколько ошибок:

  1. Сначала вы присваиваете переменным max и min значения первого элемента массива, а затем в цикле, вы присваиваете им же значения счетчика.

  2. Далее в цикле копирования вы копируете неинициализированные значения массива b в массив а, и потом выводите массив b. Вот не много подправил:

    #include using namespace std; int main() { int a[100], b[100]; int n=0;

     cout <<"vvedi kolichestvo znacheniy massiva: ";
     cin>>n;
    
     cout<<"vvedi znacheniya massiva ";
    
     for(int i=0; i<n; i++)
     {
         cin>>a[i];
     }
    
     int min, max;
     max=a[0];
     min=a[0];
    
     for(int i=0; i<n; i++)
     {
         if(a[i]>max) max=a[i];
         if(a[i]<min) min=a[i];
     }
     int bi = 0;
     for (int i = 0; i < n; i++)
     {
         if (max != a[i] && min != a[i])
         {
             b[bi] = a[i];
             bi++;
         }
     }
     for(int i=0; i<bi; i++)
     {
         cout<<b[i]<<" ";
     }
    

    }

P.S. а если элементов будет больше 100, будет переполнение уже на этапе ввода начальных значений.

→ Ссылка