crossplatform.ru

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

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


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

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

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




Репутация:   23  


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

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


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Раскрывающийся текст
std::vector<double> vec;

//заполняем vec
{
    vec.push_back(0);//для удобства вычислений в дальнейшем

    //затем данные, k значений
    //...

    vec.push_back(0);//для удобства вычислений в дальнейшем

    //в начало и конец кладём болванки,
    if(vec.size()>1)
    {
        vec[0]=vec[1];
        vec[vec.size()-1]=vec[vec.size()-2];
    }

    //теперь вектор содкржит данные, окружённые болванками:
    //
    //N0 (N0 N1 N2 N3 ... Nk-3 Nk-2 Nk-1) Nk-1
}

//набор флагов (для простоты пока один флаг - один байт.
//Но можно будет разместить 8 флагов в байте, уменьшив размер вспомогательного вектора)
std::vector<BYTE> flg(vec.size(),0);

double __acc=1000;
double n_acc=1/__acc;

if(vec.size() && flg.size())
{
    DWORD dwdMax=min(vec.size(),flg.size())-1;
    double k=0;

    for(DWORD dwd=1;dwd<dwdMax;dwd++)
    {
        k=vec[dwd-1]/vec[dwd];
        if(k<0)k=-k;

        if(k>__acc || k<n_acc)
        {
            flg[dwd]=1;
        }
        else
        {
            k=vec[dwd]/vec[dwd+1];
            if(k<0)k=-k;

            if(k>__acc || k<n_acc)
            {
                flg[dwd]=1;
            }
        }
    }

    //flg[1 ... size()-2] содержит флаги элементов, которые надо удалить
}



случай переполнения я не рассматривал

можно также обойтись и без вектора флагов.

А ещё, бы просто заменял нехорошие скачки средним значением от соседних элементов, не удаляя сам элемент

Сообщение отредактировал Алексей1153 - 19.10.2010, 20:01
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 19.10.2010, 19:48
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Что за болванки? А можно все-таки кроссплатформенные типы использовать? :) А за вариант спасибо. Правда, не все понятно. Но разобраться можно. Спасибо. Да - если, все же, прокомментируешь свой алгоритм словесно, то буду очень благодарен.

Вот это действие удивило:
  vec[vec.size()-1]=vec[vec.size()-1];


Сообщение отредактировал AD - 19.10.2010, 19:50
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- 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 Текстовая версия Сейчас: 29.4.2024, 2:45