Заменить значения элементов с максимальным и минимальным значением на среднее - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужно решить задачу с немного другим условием, вот сама задача и код (рабочий): Объявить массив целых чисел в диапазоне -100 – 100 и заполнить его случайными значениями. Во всех последовательностях положительных чисел заменить значения элементов с максимальным и минимальным значением на среднее для этой последовательности.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{ 
int Ar[200]; 
 
int i,k,min,max,sr; 
randomize();
for (i=0;i<200;Ar[i++]=random(200)-100);
printf("Nachalnyi massiv:\n");
for (i=0;i<200;printf("%3d ",Ar[i++]));
k=0; sr=0;
for (i=0;i<200;i++) {
if (Ar[i]>0){
sr+=Ar[i];k++; 
}} 
sr=(float)sr/k; 
min=100;max=0; 
for(i=0;i<200;i++) 
{
if (Ar[i]>0){
if(Ar[i]<min) min=Ar[i];    
if (Ar[i]>max) max=Ar[i];
    }} 
printf("\n\t\t\tSrednee =%3d;  Min =%3d;  Max =%3d\n",sr,min,max);
for (i=0;i<200;i++) { 
if (Ar[i]==min) Ar[i]=sr; 
if (Ar[i]==max) Ar[i]=sr; 
} 
printf("Massiv-rezultat:\n");
for (i=0;i<200;printf("%3d ",Ar[i++])); 
getch(); 
}
И нужно переделать эту программу с такими условиями: Размер массива определяется в начале выполнения программы как случайное число в диапазоне 50 – 200. В тексте программы запрещается применять операцию индексации. Помогите! Буду очен благодарен.

Решение задачи: «Заменить значения элементов с максимальным и минимальным значением на среднее»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main() {
    srand(time(NULL));
    int size = rand() % 201+50;
    float array[size];
    float sum;
    int counter;
    int i, j, min, max;
    
    for ( i = 0; i < size; i++ ) {
        array[i] = rand() % 201-100;
        printf("%g ", array[i]);
    }
    
    for ( i = 0; i < size; i++ ) {
        if ( array[i] >= 0 ) {
            min = i;
            max = i;
            for ( j = i, counter = 0, sum = 0; array[j] >= 0 && j < size; j++, counter++ ) {
                if ( array[min] > array[j] ) {
                    min = j;
                }
                if ( array[max] < array[j] ) {
                    max = j;
                }
                sum += array[j];
            }
            sum /= counter;
            array[min] = sum;
            array[max] = sum;
            i = j;
        }
    }
    
    printf("\nNew array:\n");
    
    for ( i = 0; i < size; i++ ) {
        printf("%g ", array[i]);
    }
    
    return 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы