Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задача про массивы, массивы 
:(
    Опции темы
wizard90
Дата 19.6.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.6.2005

Репутация: нет
Всего: нет



Помогите решить задачу. Дан массив А из N элементов. Вывести на экран элементы массива A, которые больше среднего арифметического всех его элементов, сохраняя порядок их следования.
PM MAIL WWW ICQ   Вверх
azesmcar
Дата 19.6.2009, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



wizard90

чем помочь? что именно не получается?
PM   Вверх
W4FhLF
Дата 19.6.2009, 18:20 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



Код

#include <vector>
#include <iostream>
#include <algorithm>
#include <iterator>

#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics/stats.hpp>
#include <boost/accumulators/statistics/mean.hpp>

#include <boost/assign/std/vector.hpp>

using namespace boost::assign;
using namespace boost::accumulators;

int main(int argc, char* argv[])
{
    std::vector<unsigned> a;
    a += 1, 2, 3, 4, 5, 6, 7, 8, 9;        // Массив A из N элементов

    accumulator_set<unsigned, stats<tag::mean> > acc;

    acc = std::for_each(a.begin(), a.end(), acc);    // Считаем среднее

    // Выводим элементы, большие среднего
    std::remove_copy_if(a.begin(), a.end(), std::ostream_iterator<unsigned>(std::cout), std::bind2nd(std::less_equal<unsigned>(), mean(acc)));

    return 0;
}


Это сообщение отредактировал(а) W4FhLF - 19.6.2009, 18:20


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
andrew_121
Дата 19.6.2009, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(W4FhLF @  19.6.2009,  18:20 Найти цитируемый пост)
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics/stats.hpp>
#include <boost/accumulators/statistics/mean.hpp>

Я думаю топикпастер этого оценить не сможет smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
sdukshis
Дата 19.6.2009, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 23.3.2009

Репутация: нет
Всего: 1



Вот вариант попроще.

Код

#include <numeric>
#include <algorithm>
#include <iterator>
#include <functional>
#include <iostream>

using namespace std;

int main(){
    int a[]={1,2,3,4,5,6,7,8,9};
    const int N = sizeof(a)/sizeof(int);
     //Считаем среднее
    double mean = accumulate(a,a+N,0.0)/N; 
     // Выводим элементы большие среднего на экран
    remove_copy_if(a,a+N,ostream_iterator<int>(cout," "),bind2nd(less_equal<int>(),mean)); cout << endl;

    return 0;
}


Это сообщение отредактировал(а) sdukshis - 19.6.2009, 20:46
PM MAIL   Вверх
zim22
Дата 19.6.2009, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(sdukshis @  19.6.2009,  20:14 Найти цитируемый пост)
Вот вариант попроще.

может и попроще, но задача всё-равно до конца не решена.
Цитата(wizard90 @  19.6.2009,  17:29 Найти цитируемый пост)
 Вывести на экран элементы массива A, которые больше среднего арифметического всех его элементов, сохраняя порядок их следования

Код

int main(){
    int a[]={9,8,7,6,5,4,3,2,1};    
    const int N = sizeof(a)/sizeof(int);
    // Создаем vector с элементами из a
    vector<int> v(a,a+N);
    //Считаем среднее
    double mean = accumulate(v.begin(),v.end(),0.0)/v.size(); 
    //Выводим все элементы больше среднего
    remove_copy_if(a, a + N, 
      std::ostream_iterator<int>(std::cout, " "), 
      std::bind2nd(std::less_equal<int>(), mean));        

    return 0;
}



Это сообщение отредактировал(а) zim22 - 19.6.2009, 20:31


--------------------
PM MAIL   Вверх
sdukshis
Дата 19.6.2009, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 23.3.2009

Репутация: нет
Всего: 1



Цитата(zim22 @ 19.6.2009,  20:26)

может и попроще, но задача всё-равно до конца не решена.


А почему задача не решена?

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

P.S. На всякий случай решение для тех, кто не знаком со стандартной библиотекой
Код

#include <iostream>

int main(){
    int a[]={1,2,3,4,5,6,7,8,9};
    const int N = sizeof(a)/sizeof(int);
     //Считаем среднее
    double mean = 0;
    for(size_t i = 0; i!=N;++i)    mean+=a[i];
    mean/=N;
    // Выводим элементы большие среднего на экран
    for(size_t i = 0; i!=N;++i)
        if(a[i] > mean) cout << a[i] << " ";
    cout << endl;

    return 0;
}



Это сообщение отредактировал(а) sdukshis - 19.6.2009, 21:06
PM MAIL   Вверх
wizard90
Дата 19.6.2009, 22:31 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.6.2005

Репутация: нет
Всего: нет



sdukshis, спасибо.. программа работает правильно.. остальным участникам тоже спасибо.. но их программы у меня выкидывают ошибки.. может библиотек нужных нет?.. я же в Си поверхностно пока... все равно тема останется если что найду нужное для себя..

Добавлено через 1 минуту и 41 секунду
Еще одна подобная задача про массивы.
Дан массив А из N элементов и число X. Определить, имеются ли в массиве A два расположенных рядом значения X. 
За ранее всем спасибо..
PM MAIL WWW ICQ   Вверх
zim22
Дата 20.6.2009, 12:27 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(wizard90 @  19.6.2009,  22:31 Найти цитируемый пост)
Еще одна подобная задача про массивы.

одна тема - одна задача/вопрос.


--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.