Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите пожалуйста с кодом программы в С++

82K
03 октября 2012 года
__VT_
12 / / 03.10.2012
В одномерном массиве, состоящем из n вещественных элементов, найти среднее значение всех элементов и номер элемента массива ближайшего к среднему по значению.
не могу разобраться с кодом:( новичок в этом:)) помогите пожалуйста!!:) заранее спасибо:)
392
03 октября 2012 года
cronya
421 / / 03.01.2009
а код сам где, в котором вы не можете разобраться. Хоть что-нибудь сами написали? Если да, то выкладывайте посмотрим.
85K
04 октября 2012 года
Lakroft
6 / / 04.10.2012
// Вот мое скромное предложение (сам от новичка недалеко ушел)
// Привожу в виде отрывка, до полной программы добить легко
// Предполагаем, что нам дан массив massiv[ ] и n количество элементов:

float midlNumber=0.0; // переменная для хранения среднего значения
for (int i=0; i<n; i++) midlNumber=(midlNumber+massiv); // находим сумму всех элементов
midlNumber=midlNumber/n; // сумму делим на количество элементов, теперь это среднее значение
int numberOfCage=0; // переменная для хранения номера ячейки
float dev, lastDev=midlNumber; // переменные для хранения разности
for (int i=0; i<n; i++)
{
dev= massiv-midlNumber; // находим разность между элементом и средним значением
if (dev<0) dev=0-dev; // если разность отрицательная, делаем положительной
if (dev<lastDev) // если новая разность меньше меньшей из найденных:
{
lastDev=dev; // запоминаем новую разность
numberOfCage=i; //запоминаем номер ячейки
}
}
// Теперь среднее значение находится в переменной midlNumber, а номер ячейки в numberOfCage.
82K
04 октября 2012 года
__VT_
12 / / 03.10.2012
Цитата: cronya
а код сам где, в котором вы не можете разобраться. Хоть что-нибудь сами написали? Если да, то выкладывайте посмотрим.



я к сожалению понимаю только как он должен примерно выглядить :( но написать не знаю как:( просто не понимаю:(

82K
04 октября 2012 года
__VT_
12 / / 03.10.2012
Цитата: Lakroft
// Вот мое скромное предложение (сам от новичка недалеко ушел)
// Привожу в виде отрывка, до полной программы добить легко
// Предполагаем, что нам дан массив massiv[ ] и n количество элементов:

float midlNumber=0.0; // переменная для хранения среднего значения
for (int i=0; i<n; i++) midlNumber=(midlNumber+massiv); // находим сумму всех элементов
midlNumber=midlNumber/n; // сумму делим на количество элементов, теперь это среднее значение
int numberOfCage=0; // переменная для хранения номера ячейки
float dev, lastDev=midlNumber; // переменные для хранения разности
for (int i=0; i<n; i++)
{
dev= massiv-midlNumber; // находим разность между элементом и средним значением
if (dev<0) dev=0-dev; // если разность отрицательная, делаем положительной
if (dev<lastDev) // если новая разность меньше меньшей из найденных:
{
lastDev=dev; // запоминаем новую разность
numberOfCage=i; //запоминаем номер ячейки
}
}
// Теперь среднее значение находится в переменной midlNumber, а номер ячейки в numberOfCage.



спасибо большое)) попробуем))

392
04 октября 2012 года
cronya
421 / / 03.01.2009
Цитата: __VT_
Цитата: cronya
а код сам где, в котором вы не можете разобраться. Хоть что-нибудь сами написали? Если да, то выкладывайте посмотрим.



я к сожалению понимаю только как он должен примерно выглядить :( но написать не знаю как:( просто не понимаю:(


Не знаю не вопрос. Вы бы для начала нарисовали для себя алгоритм вашей задачи, а потом попробовали бы уже по нему написать что нибудь. Как говориться "Тренируйтесь на бумажке".

392
04 октября 2012 года
cronya
421 / / 03.01.2009
Цитата: __VT_
// Вот мое скромное предложение (сам от новичка недалеко ушел)


Было бы еще красивее, если бы код оформили в теги соответствующие. Есть такая кнопка при ответе: {...} Вставить форматированный код

85K
04 октября 2012 года
Ustus
6 / / 04.10.2012
Что-то такое, может быть?

f.h:
 
Код:
#pragma once

#include <utility>

typedef std::pair< double, std::size_t > MedianResult;

MedianResult MedianPosition( const double * first, const double * last );
f.cpp:

Код:
#include <algorithm>
#include <numeric>
#include <cmath>

#include "f.h"

using namespace std;

struct Comp
{
    double m_;
    Comp( double m ) : m_( m ){}
    double operator ()( double a, double b ) const { return fabs( a - m_ ) < fabs( b - m_ ); }
};

MedianResult MedianPosition( const double * first, const double * last )
{
    double m = accumulate( first, last, 0.0 ) / ( last -  first );
    return make_pair( m, min_element( first, last, Comp( m ) ) - first );
}
main.cpp:

Код:
#include <iostream>
#include "f.h"

using namespace std;

int main()
{
    double arr[] = { 1, 2, 3, 4, 5, 6 };
    MedianResult r = MedianPosition( arr, arr + sizeof arr / sizeof arr[ 0 ] );
    cout << r.first << ' ' << r.second << '\n';
    return 0;
}
Если грубо и без обработки ошибок. :)
85K
05 октября 2012 года
Lakroft
6 / / 04.10.2012
Цитата: cronya
Цитата: __VT_
// Вот мое скромное предложение (сам от новичка недалеко ушел)


Было бы еще красивее, если бы код оформили в теги соответствующие. Есть такая кнопка при ответе: {...} Вставить форматированный код


Понял, учту в следующий раз.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог