Здравствуйте. Не могу перенести из одного статического массива в другой все элементы, кроме максимального и минимального значений
Все элементы массива 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 шт):
В вашем коде несколько ошибок:
Сначала вы присваиваете переменным max и min значения первого элемента массива, а затем в цикле, вы присваиваете им же значения счетчика.
Далее в цикле копирования вы копируете неинициализированные значения массива 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, будет переполнение уже на этапе ввода начальных значений.