Написать функцию, вычисляющую среднее арифметическое элементов массива - C (СИ)

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

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

Доброго вечера, господа. Есть несколько заданий. 1) Написать две функции для вывода на экран значений элементов массивов целых и вещественных чисел. 2) Написать функцию, вычисляющую среднее арифметическое элементов массива вещественных чисел. 3) Написать функцию, которая возвращает максимальный элемент заданного массива целых чисел. 4) Написать функцию сортировки массива целых чисел. Порядок сортировки (по возрастанию либо по убыванию) задавать аргументом функции. 5) Написать функцию, которая проверяет, содержат ли два массива целых чисел одинаковые элементы (даже если элементы расположены в различном порядке). 6) Написать функцию, которая изменяет порядок следования элементов в массиве целых чисел на противоположный. 7) Написать программу, демонстрирующую работу функций заданий 2-6 на примере нескольких массивов (имеющих различное количество элементов). Значения элементов массивов достаточно задавать при помощи конструкций инициализации (вместо этого массивы можно заполнить случайными числами). Для вывода на экран значений элементов массивов использовать функции задания 1. Интересует конкретно седьмое задание. И я не могу понять смысл доп. условия:" Все функции должны получать массивы в качестве аргументов (а не использовать массивы, объявленные в глобальной области видимости)." Где заполнять массивы? Внутри функций? или в мэйне? Как это вообще будет выглядеть? И если кому совсем не трудно, проверьте функции. Заранее спасибо.
#include <stdio.h>
#include <stdlib.h>
#define n 50
 
void masi(int ar[n],int k)
{
  printf("Введеный массив:\n");
    for(int i=0;i!=k;i++)
    printf("A[%d]=%d\n",i,ar[i]);
 
}
 
void masf(float ar[n],int k)
 {
  printf("Введеный массив:\n");
    for(int i=0;i!=k;i++)
    printf("A[%d]=%2.2f\n",i,ar[i]);
 
}
 
void massr(float ar[n],int k)
{
  float s=0;
    for(int i=0;i!=k;i++)
    s+=ar[i];
   printf("srednee= %2.2f",s/k);
}
 
void masmax(float ar[n],int k)
{
  float max=ar[0];
    for(int i=0;i!=k;i++)
      if (max<ar[i]) max=ar[i];
      printf("maximal'noe: %2.2f",max);
}
 
void massort(float ar[n],int k,int flag)
{   int j,i;
     float tmp;
     for(i=0;i!=k-1;i++)
       for(j=1;j!=k;j+=i);
        {
         if (flag==1) { if (ar[i]<ar[j]) { tmp=ar[i];ar[i]=ar[j];ar[j]=tmp; }}
         if (flag==0) {if (ar[i]<ar[j]) { tmp=ar[i];ar[i]=ar[j];ar[j]=tmp; }}
        }
}
 
void odinelem(int ar1[n],int ar2[n],int k)
{    int i,j;
     int tmp=0;
     for(  i=0;i!=k-1;i++)
       for(  j=1;j!=k;j+=i);
        {
        if (ar1[i]==ar2[j]) tmp=1;
        if (tmp==1) printf("massivi sodergit odinakovie znacheniya");
        }
}
 
void poryadok(int ar[n],int k)
{
int tmp;
     for (int i=0; i!=k/2; i++)
       for (int j=k; i!=k/2; i--) {
        tmp=ar[i]; ar[i]=ar[j];ar[j]=tmp;}
}

Решение задачи: «Написать функцию, вычисляющую среднее арифметическое элементов массива»

textual
Листинг программы
1)
void masi(int ar[n],int k)
{
 
    for(int i=0;i!=k;i++)
    printf("A[%d]=%d\n",i,ar[i]);
    printf("\n");
}
 
void masf(float ar[n],int k)
 {
 
    for(int i=0;i!=k;i++)
    printf("A[%d]=%2.2f\n",i,ar[i]);
    printf("\n");
}
 
2)
void massr(float ar[n],int k)
{
  float s=0;
    for(int i=0;i!=k;i++)
    s+=ar[i];
   printf("srednee= %2.2f\n",s/k);
}
 
3)
void masmax(float ar[n],int k)
{
  float max=ar[0];
    for(int i=0;i!=k;i++)
      if (max<ar[i]) max=ar[i];
      printf("maximal'noe: %2.2f\n",max);
}
 
4)
void massort(float ar[n],int k,int flag)
{   int j,i;
     float tmp;
     for( i=0; i < k; i++) {
      for( j = k-1; j > i; j-- )
    { if (flag==1)
        if ( ar[j-1] > ar[j] ){ tmp=ar[j-1]; ar[j-1]=ar[j]; ar[j]=tmp;}
      if (flag==0)
        if ( ar[j-1] < ar[j] ){ tmp=ar[j-1]; ar[j-1]=ar[j]; ar[j]=tmp;}
  }
}}
 
5)
void odinelem(int ar1[n],int ar2[n],int k)
{    int i,j;
     int tmp=1;
     printf("proverka na odinakovost':\n");
     for( i=0;i<=k;i++)
       for(  j=0;j<=k;j++);
        {
        if (ar1[i]==ar2[j]) tmp=1;
        }
        if (tmp==1) printf("massivi sodergat odinakovie znacheniya\n");
 
}
6)
void poryadok(int ar[n],int k)
{
int tmp;
       for (int i=0; i < k/2; i++) {
        tmp=ar[i]; ar[i]=ar[k-i-1];ar[k-i-1]=tmp;}
}
 
7)
void main() {
srand(time(NULL));
    int k,flag;
    float ar[n];int ar1[n],ar2[n];
    printf("vvdeite razmernost' massiva < %d: ",n);
    scanf("%d",&k);
    for (int i=0; i != k; i++)
    {
      ar[i]=rand() % 5;
      ar1[i]= rand() % 5;
      ar2[i]= rand() % 5;
    }
   masi(ar1,k);   masi(ar2,k);   odinelem(ar1,ar2,k);
     printf("massiv s izmenennim poryadkom\n"); poryadok(ar1,k);
     masi(ar1,k);
   printf("\n");printf("sortirovat' po vozrastaniu(1) ili ubivaniu(0)?: \n");
   scanf("%d",&flag);   massort(ar,k,flag);   masf(ar,k);
   masmax(ar,k);
   system("PAUSE");
}

Объяснение кода листинга программы

1) В функции masi выводится на экран содержимое массива ar с шагом k элементов. 2) В функции massr происходит вычисление среднего арифметического элементов массива ar. 3) В функции masmax находится максимальный элемент массива ar. 4) В функции massort происходит сортировка элементов массива ar по возрастанию или убыванию, в зависимости от значения параметра flag. 5) В функции odinelem проверяется, являются ли два массива одинаковыми. 6) В функции poryadok происходит перестановка элементов массива ar в порядке убывания. 7) В функции main создаются три массива ar1, ar2, ar, которые заполняются случайными числами. 8) Вызываются функции masi, odinelem, poryadok, massort, masmax для работы с этими массивами.

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


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

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

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