Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 17.09.2013
Сообщений: 91
1

Найти число, которое «ближе всех» к среднему арифметическому в одномерном массиве

15.03.2016, 13:01. Показов 4722. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, мое задание:
Требуется разработать программу, которая:
1) обеспечивает ввод n (количества обрабатываемых чисел — размера соответствующего одномерного массива).
2) обеспечивает ввод пользователем n целых чисел (вручную или автоматически случайным образом);
3) записывает вводимые числа в одномерный массив;
4) выводит на экран содержимое массива (если ввод чисел выполняется
пользователем, то можно дополнительно не выводить содержимое массива при
условии, что при вводе чисел указываются элементы массива);
5)Найти число, которое «ближе всех» к среднему арифметическому,
если таких чисел несколько, то в качестве результата использовать
число, идущее первым по порядку среди таких чисел.
6) выводит на экран результат согласно заданию.
Собственно с вводом чисел вручную или автоматически я разобрался
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<stdio.h>
#include <stdlib.h>
int main()
{
intsiz,er,j,nMin;
floattmp;
printf ("Введите размер массива (чтобы программа работала правильно\nразмер массива должен быть больше 2): ");
scanf ("%i", &siz);
printf ("Заполнение матрицы.Рандом[1] или сам[2]? ");
scanf ("%i", &er);
while (er<1 || er>2)
    {
printf ("\nЗаполнение матрицы. Рандом[1] или сам[2]? ");
scanf ("%i", &er);
}
srand(time(0));
inti,a[siz];
if (1==er)
    {
        // случайное заполнение массива
for( i = 0; i <siz; i++ )
a[i] = rand() %100;
printf ("Выводматрицы\n");
for ( i = 0; i<siz; i++)
printf ("%i  ", a[i]);
}
else
    {
        // ручное заполнение массива
for( i = 0; i <siz; i++ )
{
printf("Введите a[%i]> ", i );
scanf ("%i", &a[i]);
            }
    }
а как выполнить 5ый пункт?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2016, 13:01
Ответы с готовыми решениями:

Найти элемент массива, который всех ближе по значению к среднему арифметическому
Вычислить среднее арифметическое и найти элемент массива, который всех ближе по значению к средн....

Вывести значение того из 5 натуральных чисел, которое ближе к их среднему арифметическому
Дано 5 натуральных чисел, не превышающих 2 000 000 000. Вывести значение того из них, которое ближе...

Найти в файле, число равное среднему арифметическому всех элементов массива
Дан файл действительных чисел a1, ... an (n ввести с клавиатуры), упорядоченных по убыванию. Найти...

В одномерном массиве найти индекс и значение элемента, которое ближе всего к значению -5
Всем доброго дня, нужна помощь, я в паскале только на азах, а девушке задали задание что я, что она...

5
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
15.03.2016, 13:52 2
Цитата Сообщение от Rainbow59 Посмотреть сообщение
5)Найти число, которое «ближе всех» к среднему арифметическому,
Нужно вычислить среднеарифметическое и сравнивать его со всеми числами через условие, используя цикл...
если успею, напишу...

Добавлено через 33 минуты
Rainbow59,
Если учитывать, что это число присутствует в массиве... Приближенное чуть по поздней...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <stdlib.h>
int main()
{
    setlocale(LC_ALL,"Russian");
    const int SZ=100;
    int arr[SZ],n,v,sum=0,ch,cnt=0,index;
    
    std :: cout<<"Введите количество обрабатываемых символов: "; std:: cin>>n;
    std :: cout<<"Выберите вариант ввода: (1-ручной, 2-рондом) "; std:: cin>>v;
    
    switch(v)
    {
        case 1 : std :: cout<<"Введите массив: ";
            for (int i=0;i<n;i++)
            std :: cin>>arr[i];
            break;
 
        case 2 : std :: cout<<"Рондом: ";
            for (int i=0;i<n;i++){
            arr[i]=rand()%10;
            std :: cout<<arr[i]<<" ";}
            break;
    }
 
    for (int i=0;i<n;i++)
        sum+=arr[i];
        sum/=n;
 
    for (int i=0;i<n;i++)
    if (sum==arr[i] && cnt<1){
    cnt++;
    ch=arr[i];
    index=i+1;}
 
    std:: cout<<"\nСреднее арифметическое равно: "<<sum<<"\nПервое число ближнее к "<<sum<<" число:"<<ch<<" с индексом "<<index<<std :: endl;
    system("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 17.09.2013
Сообщений: 91
15.03.2016, 14:12  [ТС] 3
Спасибо большое

Добавлено через 2 минуты
а еще вопрос: как подключить srand(time(0)) если делать через рандом?
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
15.03.2016, 14:53 4
C++
1
#include <time.h>//библиотека
C++
1
2
3
4
5
srand(time(0));
.....................
    for(int i=0;i<n;i++)
    arr[i]=rand();
.....................
Добавлено через 4 минуты
Rainbow59, Если среднеарифметического нет в массиве... проверить не могу, надеюсь сработает...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
int main()
{
    setlocale(LC_ALL,"Russian");
    const int SZ=100;
    int arr[SZ],n,v,sum=0,ch,cnt=0,min,max,pr1,pr2;
    
    std :: cout<<"Введите количество обрабатываемых символов: "; std:: cin>>n;
    std :: cout<<"Выберите вариант ввода: (1-ручной, 2-рондом) "; std:: cin>>v;
    
    switch(v)
    {
        case 1 : std :: cout<<"Введите массив: ";
            for (int i=0;i<n;i++)
            std :: cin>>arr[i];
            break;
 
        case 2 : std :: cout<<"Рондом: ";
            for (int i=0;i<n;i++){
            arr[i]=rand()%20;
            std :: cout<<arr[i]<<" ";}
            break;
    }
 
    for (int i=0;i<n;i++)
        sum+=arr[i];
        sum/=n;
 
    for (int i=0;i<n;i++)
    if (sum==arr[i] && cnt<1){
    cnt++;
    ch=arr[i];
    if(cnt==1)
    goto stop;}
 
    for (int j=0;j<sum;j++){
    for (int i=0;i<sum;i++)
    if(arr[i]<arr[i+1]){
    min=arr[i];
    arr[i]=arr[i+1];
    arr[i+1]=min;}}
 
    for (int j=0;j<sum;j++){
    for (int i=0;i<sum;i++)
    if(arr[i]>arr[i+1]){
    max=arr[i];
    arr[i]=arr[i+1];
    arr[i+1]=max;}}
 
    pr1=max-min;
    pr2=max+min;
 
    if (sum==pr1)
    ch=pr1;
    else 
    ch=pr2;
    
 
    stop : std:: cout<<"\nСреднее арифметическое равно: "<<sum<<"\nПервое число ближнее к "<<sum<<" число:"<<ch<<std :: endl;
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 17.09.2013
Сообщений: 91
15.03.2016, 15:06  [ТС] 5
где-то ошибка, он вместо ближайшего числа выдает произвольное
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
15.03.2016, 15:12 6
минуту
0
15.03.2016, 15:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2016, 15:12
Помогаю со студенческими работами здесь

В массиве А[8] найти наибольший элемент в присвоить ему значение, равное среднему арифметическому всех элементов массива
В массиве А найти наибольший элемент в присвоить ему значение, равное среднему арифметическому всех...

Найти число которое ближе всех к 10
Дан int-массив или List-коллекция, нужно найти число, которое ближе всех к 10, если есть число 10 -...

Найти индексы элементов массива, значение которых ближе всего к найденному среднему арифметическому
Напишите программу, которая находит среднее арифметическое между максимальным элементом и...

Найти в последовательности число, которое ближе всех к целому числу
Дано натуральное число n и последовательность действительных чисел a1, a2, ..., an. Найти в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru