Удалить из массива первый нулевой элемент
Есть, задание по работе с массивом, которое заключается в следующем: Задан массив целых чисел X(n). Найти количество чётных элементов в массиве; среднее геометрическое положительных элементов массива, расположенных в его первой половине. Все отрицательные элементы заданного массива заменить значением его максимального элемента. Удалить из массива первый нулевой элемент.
Возникла проблема с удалением первого нулевого элемента массива.Удаление нужно выполнить с последующим сдвигом.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int *X,i,N,a,max;
float sg,b,c;
c=1;
cout << "N = "; cin >> N;
X=new int[N];
for(i=0; i<N; i++)
{
cout<<"X[" << i << "]= ";
cin >>X[i];
}
for(i=0; i<N; i++)
{
if(X[i]%2==0)
{
a++;
}
if(X[i]>max)
{
max=X[i];
}
}
for(i=0; i<(N/2); i++)
{
if(X[i]>0)
b++;
c*=X[i];
}
for(i=0; i<N; i++)
{
if(X[i]<0)
X[i]=max;
}
sg = exp((1/b)*log(c));
cout << "Колличество четных элементов массива: " << a << endl;
cout << "Cреднее геометрическое положительных элементов массива: " << sg;
for(i=0;i<N; i++)
{
cout<<"X[" << i << "]= " << X[i];
}
delete [] X;
}
Ответы (1 шт):
Автор решения: Александр Козлов
→ Ссылка
держи фулл)
#include <iostream>
#include <cmath>
using namespace std;
int main() {
cout<<"Введите количество элементов: ";
int n;
cin>>n; // задан размер массива
cout<<endl;
int X[n];
cout<<"Введите элементы массива: ";
for(int i = 0; i < n; i++){
cin>>X[i];
}
cout<<endl;
// Найти количество чётных элементов в массиве
int count_even = 0;
for (int i = 0; i < n; i++) {
if (X[i] % 2 == 0) {
count_even++;
}
}
cout << "Количество чётных элементов в массиве: " << count_even << endl;
// Среднее геометрическое положительных элементов массива, расположенных в его первой половине
int count_positive = 0;
double product_positive = 1;
for (int i = 0; i < n/2; i++) {
if (X[i] > 0) {
count_positive++;
product_positive *= X[i];
}
}
double geom_mean = pow(product_positive, 1.0/count_positive);
cout << "Среднее геометрическое положительных элементов первой половины массива: " << geom_mean << endl;
// Заменить все отрицательные элементы заданного массива значением его максимального элемента
int max = X[0];
for (int i = 1; i < n; i++) {
if (X[i] > max) {
max = X[i];
}
}
for (int i = 0; i < n; i++) {
if (X[i] < 0) {
X[i] = max;
}
}
cout << "Массив после замены отрицательных элементов: ";
for (int i = 0; i < n; i++) {
cout << X[i] << " ";
}
cout << endl;
// Удалить из массива первый нулевой элемент
for (int i = 0; i < n; i++) {
if (X[i] == 0) {
for (int j = i; j < n-1; j++) {
X[j] = X[j+1];
}
n--; // уменьшить размер массива на 1
break;
}
}
cout << "Массив после удаления первого нулевого элемента: ";
for (int i = 0; i < n; i++) {
cout << X[i] << " ";
}
cout << endl;
return 0;
}