Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 04.04.2016, 12:54   #1 (permalink)
ma[r?]ks
Новичок
 
Регистрация: 04.04.2016
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию В векторе найти два элемента, наиболее близкие к среднему арифметическому

Подскажите, пожалуйста, как реализовать данную программку без особых заморочек.
Желательно с пояснениями.
Создать процедуру, определяющую в целочисленном векторе vectorn два элемента, наиболее близкие к среднему арифметическому всех элементов вектора. Элементы, расположенные между ними, отсортировать по возрастанию.
Наброски кода есть, но код бредовый.
[C]
#include <conio.h> #include <math.h> #include <stdio.h> #include <time.h> #include <stdlib.h> int function(int n, int *vector); int main() { int i, n, m, vector_max, vector_min, l; time_t t; // Текущее время для инициализации генератора случайных чисел(рандомайзера) srand((unsigned) time(&t)); // Инициализация рандомайзера printf("\nVvedite min znachenie diapazona:"); // Ввод данных scanf("%d", &vector_min); printf("\nVvedite max znachenie diapazona:"); scanf("%d", &vector_max); printf("\nVvedite razmer vectora:"); scanf("%d", &n); int vector[n]; printf("\nIshodniy Vector:\n"); m=vector_max-vector_min+1; for(i=0; i<n; i++) { vector[i]=rand()%m+vector_min; // Получение случайного числа в диапазоне от vector_min до vector_max printf("%5d", vector[i]); } printf("\n"); for(i=0; i<n; i++) printf("%5d", vector[i]); l=function(n, vector); printf("Srednee arifmeticheskoe znachenie majdu vtorim max i vtorim min=%0.5",l); } void function (int n, int j, int tmp, int *vector, int x) { int i, one, two, k=0, summ=0, *l; one=two=*vector; printf("\n"); for(i=0; i<n; i++) printf("%5d", *vector); i=0; k=0; one=0; two=0; int r=0; int fabs (int num) r=*vector - x; for (i=1;i<n;i++) { k=(*(vector+i)- x); if (fabs(k) > abs(l)) { r = k; one =*(vector+i); } else if (fabs(k) < abs(l)) { r = k; two =*(vector+i); } } for(i=0; i<n; i++) { printf("%5d", *vector); printf("\none=%d\n", one); // Выводим найденные элементы на экран printf("\ntwo=%d\n", two); } for(i=((one)+1); i<one; i++) { summ+=*(vector+i); k++; //считаем кол-во элементов которые мы суммируем для получения ср. арифметич. знач. printf("\nk=%d\n", k); } for(i = 0; i < size - 1; ++i) // i - номер прохода { for(j = 0; j < size - 1; ++j) // внутренний цикл прохода { if (arr[j + 1] < arr[j]) { tmp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = tmp; } } } }[/C]
Сортировку и определение среднего арифметического нужно реализовать в одной подпрограмме, а не выносить в отдельную.
ma[r?]ks вне форума   Ответить с цитированием

Старый 04.04.2016, 12:54
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Наверняка в похожих топиках вы найдете много полезной для себя информации

Помогите найти ошибку, неправильно выводит номер первого максимального элемента
Найти номер последнего минимального элемента среди четных положительных...(СИ)
ассемблер. удаление элемента массива (помогите найти ошибку) СРОЧНО,ДО ЗАВТРА!!
Наиболее ожидаемая игра

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 21:04.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.