Написать программу на си использование массивов
Нельзя делать через free(x) удалять элемент надо использовать функции calloc malloc relloc Задан массив целых чисел Х(n). Найти:
• сумму четных элементов;
• количество чисел, которые расположены после минимального
элемента массива.
Заменить нулевые элементы заданного массива значениями их но-
меров. Определить среднее арифметическое элементов массива до
и после преобразования. Удалить минимальный элемент массива
Х(n).
По дате
По рейтингу
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
#include <windows.h>
#include <locale.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
int* InitDin(int*, int);
void PrintDin(int *, int);
int SumChetEl(int*,int);
double safunc(int*,int);
void ChangeZeroIndex(int *,int);
int CountElAfterMin(int *, int);
int* DelMin(int*,int,int);
int main()
{
system("chcp 1251 > nul");
SetConsoleTitle("ОтветыМейлРу"); // Русские буквы
setlocale(LC_ALL, "Russian");
const int n=15;
int q[15]= {1,0,3,4,5,0,7,8,9,0,11,-1,13,14,15};
int *X= InitDin(q, n);
PrintDin(X, n);
int s= SumChetEl(X,n);
printf("Сумма чётных элементов= %d\n", s);
int c= CountElAfterMin(X,n);
printf("После минимального %d элементов\n", c);
double saDo, saPosle;
saDo= safunc(X,n);
printf("Среднее арифметическое= %f\n", saDo);
ChangeZeroIndex(X,n);
PrintDin(X, n);
int *NewX= DelMin(X,n,c);
free(X);
printf("После удаления минимального элемента\n");
PrintDin(NewX, n-1);
saPosle= safunc(NewX,n-1);
printf("\nСреднее арифметическое новое= %f\n",saPosle);
free(NewX);
printf("\n"); system("pause");
return 0;
}
////
int* DelMin(int *b, int nn, int m)
{
int *a= (int*)realloc(NULL, nn-1 * sizeof(int));
if (a!=NULL) { printf("Memory set\n"); }
else { printf("OUT OF MEMORY\n"); exit(0); }
int w=0; int mm= nn-1-m;
for (int i=0; i<nn; i++)
{
if (i!=mm) { a[w]= b[i]; w++; }
}
return (a);
}
////
int CountElAfterMin(int *b, int nn)
{
int mn=0; int cnt=0;
for (int i=1; i<nn ; i++)
{
if(b[i]<b[mn]) mn= i;
}
cnt= nn-mn-1;
return cnt;
}
////
int* InitDin(int qq[], int nn)
{
int *a= (int*)malloc(nn * sizeof(int));
if (a!=NULL) { printf("Memory set\n"); }
else { printf("OUT OF MEMORY\n"); exit(0); }
for (int i=0; i<nn; i++)
{
a[i] = qq[i];
}
return (a);
}
////
PrintDin(int *b, int nn)
{
for (int i=0; i<nn; i++)
{
printf("%d ", b[i]);
}
}
////
int SumChetEl(int* b,int nn)
{
int sum=0;
for (int i=0; i<nn; i++)
{
if(b[i]%2==0) sum+=b[i];
}
return sum;
}
////
double safunc(int*b,int nn)
{
int sum=0;
for (int i=0; i<nn; i++)
{
sum+=b[i];
}
double s= (double) sum / (double) nn;
return s;
}
////
void ChangeZeroIndex(int*b,int nn)
{
for (int i=0; i<nn; i++)
{
if (b[i]==0) b[i]= i;
}
}
ww