Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Bart_21
0 / 0 / 1
Регистрация: 01.12.2015
Сообщений: 30
1

Найти среднее арифметическое в массиве, которое ближе всего к X

01.12.2015, 13:20. Просмотров 1312. Ответов 5
Метки нет (Все метки)

Прошу помощи! Задача звучит так:
Дано действительное число X и массив A, содержащий N значений. В массиве найти два члена, среднее арифметическое которых ближе всего к X
Сделал массив, занес в него рандомные числа. А как подсчитать среднее значение не догоняю.
Заранее Спасибо!
Начало кода

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
double X;
            int N;
            int rand;
                Console.Write("Введите число X=");
                X = double.Parse(Console.ReadLine());
                Console.Write("Введите количество элементов массива A=");
                N = int.Parse(Console.ReadLine());
                int[] A = new int[N]; 
                Random random = new Random();
                for (int i = 0; i < A.Length; i++)
                {
                    rand = random.Next();
                    A[i] = rand;
                    Console.Write(A[i] + " ");
                }
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2015, 13:20
Ответы с готовыми решениями:

В массиве найти два члена, среднее арифметическое которых ближе всего к Х
Дано действительное число Х и массив А, содержащий N значений. В массиве найти два члена, среднее...

В массиве найти два элемента, среднее арифметическое которых ближе всего к t
дан массив действительных чисел B(n) и действительное число t. В массиве B найти два элемента,...

В массиве найти два элемента, среднее арифметическое которых ближе всего к X
Даны действительное число X и массив A. В массиве найти два члена среднее арифметическое которых...

В массиве найти два члена, среднее арифметическое которых ближе всего к х
Составить программу на языке Pascal.Даны действительное число х и массив А . В массиве найти два...

5
es_
213 / 212 / 114
Регистрация: 14.01.2013
Сообщений: 459
01.12.2015, 16:47 2
Лучший ответ Сообщение было отмечено Bart_21 как решение

Решение

По-моему, как-то так:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Bart_21
{
    class Program
    {
        static void Main(string[] args)
        {
            double X;
            int N;
            int rand;
            Console.Write("Введите число X=");
            X = double.Parse(Console.ReadLine());
            Console.Write("Введите количество элементов массива A=");
            N = int.Parse(Console.ReadLine());
            int[] A = new int[N];
            Random random = new Random();
            for (int i = 0; i < A.Length; i++)
            {
                rand = random.Next(101);
                A[i] = rand;
                Console.Write(A[i] + " ");
            }
            int X1=0, X2=0;
            double average = Math.Abs(X - (A[0] + A[1]) / 2.0);
            for (int i = 0; i < A.Count()-1;i++ )
            {
                for(int j=i+1;j<A.Count();j++)
                {
                    if(Math.Abs(X-(A[i]+A[j])/2.0)<average)
                    {
                        average = Math.Abs(X - (A[i] + A[j]) / 2);
                        X1 = i; X2 = j;
                    }
                }
            }
            Console.WriteLine("\nСреднее арифметическое чисел: {0}, {1} \nближе всего к {2}", A[X1], A[X2], X);
            Console.Read();
        }
    }
}
Вроде бы, всё верно

Добавлено через 10 минут
в 36 строке поменяйте, так точнее будет:
C#
1
average = Math.Abs(X - (A[i] + A[j]) / 2.0);
1
intosKai
6 / 6 / 3
Регистрация: 28.09.2014
Сообщений: 29
01.12.2015, 17:06 3
То бишь тебе нужно среднее арифметическое без учета знака?
0
seregaworld
0 / 0 / 0
Регистрация: 30.11.2015
Сообщений: 6
01.12.2015, 17:21 4
)
0
intosKai
6 / 6 / 3
Регистрация: 28.09.2014
Сообщений: 29
01.12.2015, 17:42 5
Вот так работает как надо:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            double average = (A[0] + A[1]) / 2.0;
            double tmp_avrg;
            {
                for (int i = 0; i < A.Length - 1; i++)
                {
                    for (int j = i + 1; j < A.Length; j++)
                    {
                        if ((average == X)) break;
                        tmp_avrg = (A[i] + A[j]) / 2.0;
                        if ((average < tmp_avrg && tmp_avrg <= X) ||
                            (X <= tmp_avrg && tmp_avrg < average))
                        {
                            average = tmp_avrg;
                            X1 = i; X2 = j;
                        }
                    }
                }
            }
1
Ander55
0 / 0 / 0
Регистрация: 05.11.2018
Сообщений: 19
25.03.2019, 07:57 6
Можете подсказать, что нужно изменить в коде, чтобы можно было самостоятельно вводить массив чисел?
0
25.03.2019, 07:57
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2019, 07:57

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

В массиве найти два члена,среднее арифметическое которых ближе всего к Х
Здравствуйте,помогите с написанием программ в С++ (использую CodeBlocks),я новичек хочу...

В массиве найти два члена, среднее арифметическое которых ближе всего к x
Дано действительное число x и массив A. В массиве найти два члена, среднее арифметическое которых...

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

Дано действительное число x и массив А [n]. В массиве найти два члена, среднее арифметическое которых ближе всего к x
Помогите написать программку через array Дано действительное число x и массив А . В массиве...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.