Заменить все элементы с отрицательными значениями средним арифметическим значением всех положительных элементов
Ответ:
#include <fstream>
#include <cstdlib>
using namespace std;
void initArray(double* ar,int n)
{
for(int i = 0;i < n;i++){
ar[i] = (rand() % 201)-100;
}
}
void printArray(double* ar,int n)
{
for(int i = 0;i < n;i++){
if(i % 10 == 0)
printf("\n");
printf("%8.1f",ar[i]);
}
}
void replaceElements(double* ar,int n)
{
double avg = 0;
int cntPositive = 0;// количество положительных элементов
for(int i = 0;i < n;i++){
if(ar[i] > 0){
avg += ar[i];
cntPositive++;
}
}
avg /= cntPositive;
for(int i = 0;i < n;i++){
if(ar[i] < 0)
ar[i] = avg;
}
}
int main(){
int n = 100;
double *arr = new double[n];
initArray(arr,n);
printf("Array before replacing \n");
printf("----------------------------------------------\n\n");
printArray(arr,n);
printf("----------------------------------------------\n\n");
replaceElements(arr,n);
printf("Array after replacing \n");
printf("----------------------------------------------\n\n");
printArray(arr,n);
printf("----------------------------------------------\n\n");
return 0;
}
Теги:
массива,
диапазон,
Программа,
CodeBloks,
размер,
элементов,
элементы,
средним,
арифметическим,
значением,
заменить
Комментарии:
Нету комментариев для вывода...