Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Лабораторная работа №4
- Выполнила Пена Анастасия, группа БПМ 191
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- // функция ввода-вывода массива, нахождения первого максимума, среднего арифметического элементов,
- // расположеннх после первого максимального
- void getArr(double *B,int k,double X,double Y) {
- printf("Введите 2 числа - граничные значения для максимального по модулю элемента (X <= B[i] <= Y)\nВводите данные, разделяя их пробелом или переходом на новую строку:\n");
- if (scanf("%lf",&X)==0 || scanf("%lf",&Y)==0 || X>Y) {
- printf("Ошибка ввода! Закрытие программы.");
- exit(0);
- }
- printf("Введите %d вещественных чисел в массив:\n",k);
- for (int i=0; i<k; i++) {
- printf("B[%d] = ",i);
- if (scanf("%lf",&B[i])==0) {
- printf("Ошибка ввода! Закрытие программы.");
- exit(0);
- }
- }
- for (int i=0;i<k;i++) { // вывод значений массива
- printf("%cB[%d]=%lf",i%4?'\t':'\n',i,B[i]);
- }
- double max=-1.0;
- int imax=0,c=0;
- for (int i=0;i<k;i++) { // нахождение первого максимума
- if (fabs(B[i])>max && fabs(B[i])>=X && fabs(B[i])<=Y) {
- c++;
- max=fabs(B[i]);
- imax=i;
- }
- else {
- continue;
- }
- }
- if (c==0) {
- printf("\nИскомый максимум отсутствует");
- }
- else {
- printf("\nПервое максимальное по модулю значение массива |B[%d]|=%lf",imax,max);
- }
- max=B[0];
- imax=0;
- for (int i=0;i<k;i++) {
- if (B[i]>max) {
- max=B[i];
- imax=i;
- }
- }
- printf("\nПервый максимальный элемент массва B[%d]=%lf",imax,B[imax]);
- if (imax==k-1) {
- printf("\nПервый максимальный элемент - последний в массиве, среднего арифметического нет.");
- exit(0);
- }
- else {
- double s=0,S=0;
- for (++imax;imax<k;imax++) { // нахождение среднего арифметического
- S+=B[imax];
- s++;
- }
- printf("\nСреднее арифметическое элеменотов,\nрасположенных после первого максимума: %lf",S/s);
- }
- }
- int main() { // главная функция
- int k;
- printf("Введите положительное целое число k - размер массива:\n");
- if (scanf("%d",&k)==0 || k<=0) {
- printf("Ошибка ввода! Закрытие программы.");
- exit(0);
- }
- double B[k],X,Y;
- getArr(B,k,X,Y); // вызов рабочей функции
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement