Заменить значения элементов с максимальным и минимальным значением на среднее - C (СИ)
Формулировка задачи:
Нужно решить задачу с немного другим условием, вот сама задача и код (рабочий):
Объявить массив целых чисел в диапазоне -100 – 100 и заполнить его случайными значениями. Во всех последовательностях положительных чисел заменить значения элементов с максимальным и минимальным значением на среднее для этой последовательности.
И нужно переделать эту программу с такими условиями: Размер массива определяется в начале выполнения программы как случайное число в диапазоне 50 – 200. В тексте программы запрещается применять операцию индексации.
Помогите! Буду очен благодарен.
#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();
}Решение задачи: «Заменить значения элементов с максимальным и минимальным значением на среднее»
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;
}