Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.39 KB | None | 0 0
  1. /*                                  Лабораторная работа №4
  2.                          Выполнила Пена Анастасия, группа БПМ 191
  3. */
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <math.h>
  7.  
  8. // функция ввода-вывода массива, нахождения первого максимума, среднего арифметического элементов,
  9. // расположеннх после первого максимального
  10. void getArr(double *B,int k,double X,double Y) {
  11.     printf("Введите 2 числа - граничные значения для максимального по модулю элемента (X <= B[i] <= Y)\nВводите данные, разделяя их пробелом или переходом на новую строку:\n");
  12.     if (scanf("%lf",&X)==0 || scanf("%lf",&Y)==0 || X>Y) {
  13.         printf("Ошибка ввода! Закрытие программы.");
  14.         exit(0);
  15.     }
  16.     printf("Введите %d вещественных чисел в массив:\n",k);
  17.     for (int i=0; i<k; i++) {
  18.         printf("B[%d] = ",i);
  19.         if (scanf("%lf",&B[i])==0) {
  20.             printf("Ошибка ввода! Закрытие программы.");
  21.             exit(0);
  22.         }
  23.     }
  24.     for (int i=0;i<k;i++) {                          // вывод значений массива
  25.         printf("%cB[%d]=%lf",i%4?'\t':'\n',i,B[i]);
  26.     }
  27.     double max=-1.0;
  28.     int imax=0,c=0;
  29.     for (int i=0;i<k;i++) {                          // нахождение первого максимума
  30.         if (fabs(B[i])>max && fabs(B[i])>=X && fabs(B[i])<=Y) {
  31.             c++;
  32.             max=fabs(B[i]);
  33.             imax=i;
  34.         }
  35.         else {
  36.             continue;
  37.         }
  38.     }
  39.     if (c==0) {
  40.         printf("\nИскомый максимум отсутствует");
  41.     }
  42.     else {
  43.         printf("\nПервое максимальное по модулю значение массива |B[%d]|=%lf",imax,max);
  44.     }
  45.     max=B[0];
  46.     imax=0;
  47.     for (int i=0;i<k;i++) {
  48.         if (B[i]>max) {
  49.             max=B[i];
  50.             imax=i;
  51.         }
  52.     }
  53.     printf("\nПервый максимальный элемент массва B[%d]=%lf",imax,B[imax]);
  54.     if (imax==k-1) {
  55.         printf("\nПервый максимальный элемент - последний в массиве, среднего арифметического нет.");
  56.         exit(0);
  57.     }
  58.     else {
  59.         double s=0,S=0;
  60.         for (++imax;imax<k;imax++) {                     // нахождение среднего арифметического
  61.             S+=B[imax];
  62.             s++;
  63.         }
  64.         printf("\nСреднее арифметическое элеменотов,\nрасположенных после первого максимума: %lf",S/s);
  65.     }
  66. }
  67. int main() {                                         // главная функция
  68.     int k;
  69.     printf("Введите положительное целое число k - размер массива:\n");
  70.     if (scanf("%d",&k)==0 || k<=0) {
  71.         printf("Ошибка ввода! Закрытие программы.");
  72.         exit(0);
  73.     }
  74.     double B[k],X,Y;
  75.     getArr(B,k,X,Y);                                 // вызов рабочей функции
  76.     return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement