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

C++

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

Протестируйте функцию сортировки контейнера - C++

27.10.2015, 09:18. Просмотров 246. Ответов 1
Метки set, с++ (Все метки)

У set контейнера странная сортировка, решил написать функцию которая увеличивала на одну единицу значение вектора. Вектор выступает как "виртуальное целое число". Так как стандартный обход char от 0 до -128 и увеличить переменную со значением -128 приведет что переменная будет равна 0. А сортировка у set контейнера от -128 до 127. Вопрос правильно ли работает моя функция. Я просто не знаю как писать автономные тесты.
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <fstream>
#include <iterator>
#include <algorithm>
#include <sstream>
#include <string>
#include <set>
#include <vector>
using namespace std;
 
typedef set<vector<char> > myset;
 
void mysetadd(vector<char> &m,vector<char> &p,vector<char> &first, vector<char> &result){
    result.resize(first.size());
    result=first;
    vector<char>::iterator it;
 
    auto it_f=first.rbegin();
    auto it_r=result.rbegin();
    bool flag=0;
    do{
        flag=0;
        if(*it_f<0){
            it=find(m.begin(),m.end(),*it_f);
            if(*it==-1){
 
                *it_r=0;
            }else{
                if(it_f!=first.crend()) ++it;
 
                *it_r=*it;
            }
        }else{
            it=find(p.begin(),p.end(),*it_f);
            if(*it==127){
 
                *it_r=-128;
                flag=1;
            }else{
                if(it_f!=first.crend()) ++it;
 
                *it_r=*it;
            }
        }
        if(it_f!=first.crend()){
            ++it_r;
            ++it_f;
        }else{
            flag=0;
        }
    }while(flag);
}
// ...
// ...
int main(){
 
    vector<char> m;
    m.resize(128);
    for(unsigned int i=0;i<128;++i){
        m[i]=(m.size()-(m.size()*2))+i;
    }
    vector<char> p;
    p.resize(128);
    for(unsigned int i=0;i<128;++i){
        p[i]=i;
    }
    vector<char> first={126,127,127};
    vector<char> result;
 
    mysetadd(m,p,first,result);
    copy ( result.begin(),result.end(), ostream_iterator<int> (std::cout," "));
    cout<<"End"<<endl;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2015, 09:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Протестируйте функцию сортировки контейнера (C++):

Является ли адаптер контейнера контейнером - C++
75%, но некоторые вопросы вызывают недоверие. Например вопрос про стандартные контейнеры (нужно выбрать стандартные контейнеры из списка),...

Написать функцию для сортировки столбцов матрицы по убыванию - C++ Builder
Пусть пользователь вводит динамическую матрицу размером n*n написать функцию длЯ сортировки столбцов матрицы по убыванию

Создание контейнера для картинки - C++ Builder
В программе нужно во время исполнения создавать контейнеры TImage, помещать в них картинку и изменять параметры, как это можно сделать, я...

Составить функцию сортировки значений трех переменных - Visual C++
Задание 3. Составить функцию сортировки значений трех переменных а, b, с в порядке возрастания. Задание 4. Составить функцию...

Разработка контейнера типа Карта (Map) - Visual C++
Приветсвую всех форумчан! Имеется задача разработать решение реализующее динамическую структуру данных (контейнер) типа «Карта»(map,...

Инициализация виртуального списка из контейнера list - C++ WinAPI
инициализирую виртуальный список из контейнера типа List что делаю не так? case LVN_GETDISPINFO: { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
NoobCPP11
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 15
28.10.2015, 18:47  [ТС] #2
Забыл указать функция может записывать в другой вектор или считывать и записывать в один и тот-же. Пример:
C++
1
mysetadd(m,p,first,first); // будет read first и write first.
Надеюсь в функции я не ошибся и она работает должным образом. Может кто ошибку нашел, отпишитесь. А я потом посмотрю и исправлю, может кому функция понадобиться.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2015, 18:47
Привет! Вот еще темы с ответами:

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

Реализуйте и протестируйте функцию - C++
Реализуйте и протестируйте функцию: template &lt;class T&gt; void Rear2Head(Node&lt;T&gt; * &amp;head); перемещающую последний элемент связного...

Передача контейнера set в функцию - C++
Всем здравствуйте! Мне нужно написать функцию которая будет выводить всю информацию которая хранится в контейнере set. Пробовал передавать...

Передача в функцию двумерного контейнера - C++
Возникает ошибка при передачи в функцию minimuze двумерного вектора прошу показать правильный вариант. Заранее благодарю. #include...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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