Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Estale
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 20
#1

Поиск ближайшего среднего арифметического (на C++) - C++

01.11.2009, 12:38. Просмотров 958. Ответов 7
Метки нет (Все метки)

Люди добрые, помогите написать код программы на С++
Видел код этой программы на Pascal'е но не пойму как перевести его в Си++

Поиск ближайшего среднего арифметического.
Даны натуральное число n и действительные числа x, y1, ... , yn. В последовательности y1, ... , yn найти два члена, среднее арифметическое которых ближе всего к x.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2009, 12:38     Поиск ближайшего среднего арифметического (на C++)
Посмотрите здесь:

Поиск среднего арифметического массива - C++
Дано массив чисел,написать програму какая находит среднее арифметическое число.

Функция: поиск среднего арифметического. - C++
Здравствуйте. Не могли бы вы помочь с такой задачей: написать программу, которая использует функцию для нахождения среднего арифметического...

Поиск среднего арифметического и наибольшего элементов матрицы - C++
Дана вещественная матрица A(n, n). Найти среднее арифметическое элементов, расположенных на и выше главной диагонали и наибольший среди...

Нахождение среднего арифметического - C++
Здравствуйте, помогите реализовать функцию среднего арифметического. Сама задача: Программа запрашивает у пользователя 10 результатов...

Нахождение среднего арифметического - C++
Всем добрый день, я только начал изучать c++, столкнулся с проблемой: нужно вычислить вреднее арифметическое N величин. предисловие:...

Нахождение среднего арифметического - C++
Здравствуйте! Такая задача:вводится последовательность из n целых чисел (это задание необходимо сделать без использования массива). ...

Вычисление среднего арифметического - C++
Программа вылетает при вводе контрольного значения. причем если в вычислении переменной rez деление заменить сложением, все работает...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.11.2009, 13:00     Поиск ближайшего среднего арифметического (на C++) #2
Ну вот как-то так
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    const int n=5;
    double x;
    double y[n];
    int  y1=0, y2=1; 
    double ya;
    
    cout << "Please, input x = ";
    cin >> x;
    
    for (int i=0; i<n; i++)
    {
        cout << "Please, input y[" << i+1 << "] = ";
        cin >> y[i];
    }
    
    ya = fabs((y[y1]+y[y2])/2 - x);
    for (int i=0; i<n-1; i++)
    {
        for (int j=i+1; j<n; j++)
        {
            double aY = fabs(((y[i]+y[j])/2 - x));
            if (aY < ya)
            {
                y1 = i;
                y2 = j;
                ya = aY;
            }
        }
    }
    
    cout << "\nY1 = " << y[y1] << endl;
    cout << "Y2 = " << y[y2] << endl;
    
    return 0;
}
Не компилировал... Проверь..
alibaba314
18 / 18 / 1
Регистрация: 22.03.2009
Сообщений: 58
01.11.2009, 13:37     Поиск ближайшего среднего арифметического (на C++) #3
можно объяснить алгоритм !
Estale
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 20
01.11.2009, 17:18  [ТС]     Поиск ближайшего среднего арифметического (на C++) #4
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Ну вот как-то так
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    const int n=5;
    double x;
    double y[n];
    int  y1=0, y2=1; 
    double ya;
    
    cout << "Please, input x = ";
    cin >> x;
    
    for (int i=0; i<n; i++)
    {
        cout << "Please, input y[" << i+1 << "] = ";
        cin >> y[i];
    }
    
    ya = fabs((y[y1]+y[y2])/2 - x);
    for (int i=0; i<n-1; i++)
    {
        for (int j=i+1; j<n; j++)
        {
            double aY = fabs(((y[i]+y[j])/2 - x));
            if (aY < ya)
            {
                y1 = i;
                y2 = j;
                ya = aY;
            }
        }
    }
    
    cout << "\nY1 = " << y[y1] << endl;
    cout << "Y2 = " << y[y2] << endl;
    
    return 0;
}
Не компилировал... Проверь..
Вроде вот так запускается:
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
#include <iostream.h>
#include <math.h>
#include <stdio.h>
 
int main()
{
    const int n=5;
    double x;
    double y[n];
    int  y1=0, y2=1; 
    double ya;
    
    cout << "Please, input x = ";
    cin >> x;
    
    for (int i=0; i<n; i++)
    {
        cout << "Please, input y[" << i+1 << "] = ";
        cin >> y[i];
    }
    
    ya = fabs((y[y1]+y[y2])/2 - x);
    for (int i=0; i<n-1; i++)
    {
        for (int j=i+1; j<n; j++)
        {
            double aY = fabs(((y[i]+y[j])/2 - x));
            if (aY < ya)
            {
                y1 = i;
                y2 = j;
                ya = aY;
            }
        }
    }
    
    cout << "\nY1 = " << y[y1] << endl;
    cout << "Y2 = " << y[y2] << endl;
    
    return 0;
}
Почему n=5? Если не сложно- объясните алгоритм, чтоб разобраться...
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.11.2009, 17:53     Поиск ближайшего среднего арифметического (на C++) #5
Цитата Сообщение от Estale Посмотреть сообщение
Почему n=5?
ну это я взял для установления кол-во y. То есть мы вводим 5 игриков.

Алгоритм следующий.

1. За начальное ближнее среднее арифметическое, мы берем среднее арифметическое первого и второго элемента.
2. Сравнение на близкость проводиться следующим образом:
Среднее арифметическое двух элементов - x. Берем это по модулю (так как близкость может определяться как за x так и до x ... другими словами, чтобы разность не была отрицательной).
3. Пункт два повторяем для всех комбинаций y, и ищем самую минимальную разность между средним арифметическим и x.
4. Среднее арифметического давшее самую минимальную разность и будет искомым.
Estale
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 20
01.11.2009, 18:52  [ТС]     Поиск ближайшего среднего арифметического (на C++) #6
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
ну это я взял для установления кол-во y. То есть мы вводим 5 игриков.

Алгоритм следующий.

1. За начальное ближнее среднее арифметическое, мы берем среднее арифметическое первого и второго элемента.
2. Сравнение на близкость проводиться следующим образом:
Среднее арифметическое двух элементов - x. Берем это по модулю (так как близкость может определяться как за x так и до x ... другими словами, чтобы разность не была отрицательной).
3. Пункт два повторяем для всех комбинаций y, и ищем самую минимальную разность между средним арифметическим и x.
4. Среднее арифметического давшее самую минимальную разность и будет искомым.
Наверное ещё стоит тогда добавить в код возможность ввода числа n, вместо того чтоб делать его константой в коде...


Вот я ввожу х=10
y[1]=1
y[2]=6
y[3]=7
y[4]=3
y[5]=15

Мне выдаёт Y1=1, Y2=6
Но ведь самое подходящее это числа 15 и 3...


И кстати, код выдаёт в 23ей строке ошибку... В условии i=0
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.11.2009, 19:47     Поиск ближайшего среднего арифметического (на C++) #7
Estale,
1. Программу я даже не компилировал. Я дал общий алгоритм. Набирать в редакторе код - мне не очень нравиться.. но набрал..

2. У меня выводит 6 и 15, что, честно говоря, и есть правильным результатом.

3. Мне что, еще писать за вас работу с динамическим распределнием памяти? Будьте добры, в следующий раз указывайте пожелания...

Код
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int n=0;
    double x;
    double *y;
    int  y1=0, y2=1; 
    double ya;
    
    cout << "Please, input x = ";
    cin >> x;
    
    cout << "Please, input n = ";
    cin >> n;  
 
    y = new double[n];
    
    for (int i=0; i<n; i++)
    {
        cout << "Please, input y[" << i+1 << "] = ";
        cin >> y[i];
    }
    
    ya = fabs((y[y1]+y[y2])/2 - x);
    for (int i=0; i<n-1; i++)
    {
        for (int j=i+1; j<n; j++)
        {
            double aY = fabs(((y[i]+y[j])/2 - x));
            if (aY < ya)
            {
                y1 = i;
                y2 = j;
                ya = aY;
            }
        }
    }
    
    cout << "\nY1 = " << y[y1] << endl;
    cout << "Y2 = " << y[y2] << endl;
    
    delete[] y;
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2009, 20:12     Поиск ближайшего среднего арифметического (на C++)
Еще ссылки по теме:

найти меньшее среднего арифметического - C++
не знаю как вывести среднее арифметическое в таком виде: average = 7.60. и меньшее среднего арифметического тоже. и главное разрешается...

Вывод среднего арифметического в массиве - C++
Напишите программу, печатающую на экране среднее арифметическое элементов заданного массива вещественных чисел. На форуме вроде не...

Дописать подсчет среднего арифметического - C++
дописать подсчет среднего арифметического, и куда ее вставить в этой программе?? ? { int _w,j; c.n++; ...

Двумерная матрица из среднего арифметического - C++
Здравствуйте. Собственно само задание звучит так: нужно составить матрицу nxn и с ее помощью создать другую, которая будет заполнена...

Поиск ближайшего числа в массиве - C++
Смысл заключается в следующем: дана шкала в миллиметрах и показатель уровня заполнения емкости, соответствующая данной шкале, т.е. 1 мм =...


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

Или воспользуйтесь поиском по форуму:
Estale
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 20
01.11.2009, 20:12  [ТС]     Поиск ближайшего среднего арифметического (на C++) #8
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Estale,
1. Программу я даже не компилировал. Я дал общий алгоритм. Набирать в редакторе код - мне не очень нравиться.. но набрал..

2. У меня выводит 6 и 15, что, честно говоря, и есть правильным результатом.

3. Мне что, еще писать за вас работу с динамическим распределнием памяти? Будьте добры, в следующий раз указывайте пожелания...
Чуть подправил, теперь всё работает.
Огромное человеческое спасибо! Теперь хоть разобрался в идее ))
Yandex
Объявления
01.11.2009, 20:12     Поиск ближайшего среднего арифметического (на C++)
Ответ Создать тему
Опции темы

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