crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Полезные задачи, упражнения, тесты по ..., делимся интересными задачами по программированию и не только
kwisp
  опции профиля:
сообщение 10.9.2010, 14:03
Сообщение #1


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


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

П.С.
столкнулся с тем что интересных и полезных задач и упражнений на закрепление знаний скудно мало....
вот сейчас ищу полезные задачи по stl и пока безуспешно....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
kwisp
  опции профиля:
сообщение 21.10.2010, 14:38
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


вот моя попытка.
к сожалению определить полностью автоматически лишние значения для меня оказалось очень сложно. Все же нужен критерий оценки от пользователя. Понятно что можно расширить и улучшить.
находим мат. ожидание(в данном случае = ср.арифметическому), к примеру, так:
upthrow.h
# ifndef UPTHROW_H_
# define UPTHROW_H_

# include <algorithm>
# include <numeric>

template <class InputIterator, class T>
T expectation(InputIterator first, InputIterator last, T init)
{
return std::accumulate(first,last,init)/std::distance<InputIterator>(first,last);
}

# endif // UPTHROW_H_

или просто с использованием accumulate и distance неважно

пример использования следующий:
main.cpp
Раскрывающийся текст
# include <iostream>
# include <vector>
# include <iterator>
# include <functional>
# include <ext/functional>
# include <fstream>
# include <cmath>
# include "upthrow.h"

int main()
{
std::vector<double> V1;
std::ifstream inputFile("values");
std::copy(std::istream_iterator<double>(inputFile), std::istream_iterator<double>(), std::back_inserter(V1));
std::copy(V1.begin(), V1.end(), std::ostream_iterator<double>(std::cout, " "));// ostreambuf_iterator ???
std::cout << std::endl;

double Mx = expectation<std::vector<double>::iterator, double>(V1.begin(), V1.end(), 0.0 );
  
std::cout << "expectation: " << Mx << '\n';

V1.erase(std::remove_if(V1.begin(),V1.end(), __gnu_cxx::compose1(std::bind2nd(std::greater<double>(),
                         Mx*2.5), __gnu_cxx::compose1(std::ptr_fun(abs),
                               std::bind2nd(std::minus<double>(),
                                 Mx)))), V1.end()); // вот непосредственно и всё удаление выбросов

std::copy(V1.begin(), V1.end(), std::ostream_iterator<double>(std::cout, " "));
std::cout<< std::endl;  
return 0;
}


в данном примере критерий удаления - это разница значения элемента с мат.ожиданием больше чем 2,5 мат.ожидания, взят для примера. на самом деле придется хоть немного знать о хранимых значениях чтобы выбрать критерий правильно для своей задачи.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- kwisp   Полезные задачи, упражнения, тесты по ...   10.9.2010, 14:03
- - Алексей1153   kwisp, вот совсем недавно встретилась простая на п...   10.9.2010, 14:17
- - kwisp   Цитата(Алексей1153 @ 10.9.2010, 15:17) о ...   10.9.2010, 14:38
- - Алексей1153   kwisp, не студиЯ , а студиИ . Ну реализуй, только...   10.9.2010, 14:53
- - kwisp   Цитата(Алексей1153 @ 10.9.2010, 15:44) не...   10.9.2010, 14:59
- - igor_bogomolov   Цитата(kwisp)Давайте делиться интересными задачами...   10.9.2010, 15:15
- - kwisp   Алексей1153, с сайта sgi stl const char S1[...   10.9.2010, 15:25
- - Алексей1153   kwisp, о, точно ) Спасибо   10.9.2010, 19:15
- - kwisp   в массиве значений(пусть double) необходимо удалит...   19.10.2010, 16:48
|- - AD   Цитата(kwisp @ 19.10.2010, 17:48) в масси...   19.10.2010, 18:00
- - Kagami   Не надо изобретать велосипед. Все это уже давно из...   19.10.2010, 18:41
|- - AD   Цитата(Kagami @ 19.10.2010, 19:41) Не над...   19.10.2010, 19:14
- - kwisp   Kagami, не понял при чем тут Цитата(Kagami ...   19.10.2010, 18:51
- - Алексей1153   Цитата(kwisp @ 19.10.2010, 19:48) в масси...   19.10.2010, 19:21
- - kwisp   Цитата(Алексей1153 @ 19.10.2010, 20:21) х...   19.10.2010, 19:27
- - Алексей1153   Раскрывающийся текстstd::vector<double...   19.10.2010, 19:44
|- - AD   Что за болванки? А можно все-таки кроссплатформенн...   19.10.2010, 19:48
- - Алексей1153   AD, я исправил - там size()-2 Цитата(AD @ 19...   19.10.2010, 20:20
|- - AD   Так. Разобрал код. Есть вопросы. 1) Я правильно по...   20.10.2010, 8:56
- - kwisp   Видно что задача требует уточнения. Нужно удалить ...   20.10.2010, 8:58
|- - AD   То есть самая первая подзадача - это найти критери...   20.10.2010, 9:11
- - Алексей1153   Цитата(AD @ 20.10.2010, 11:56) Я правильн...   20.10.2010, 9:35
- - kwisp   Цитата(Алексей1153 @ 20.10.2010, 10:35) Т...   20.10.2010, 10:04
- - Алексей1153   kwisp, а как ты хотел Чтоб без отладки оно всё вз...   20.10.2010, 10:24
- - kwisp   вот моя попытка. к сожалению определить полностью ...   21.10.2010, 14:38
- - Алексей1153   kwisp, кстати, специализацию можно не указывать т...   21.10.2010, 17:57
- - kwisp   самому себе для наглядности написал.   21.10.2010, 18:12


Ответить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 6:55