Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
 Аватар для xadjek
36 / 36 / 14
Регистрация: 05.06.2011
Сообщений: 306

Контейнеры и итераторы

06.06.2011, 19:01. Показов 4002. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Нужна помощь в написании лабораторной работы
задание
1. Контейнеры. Создать контейнер, добавить в него следующий обьект: расклад карт для 1 руки (12 карт 4 мастей от 1 до Т)
Протестировать методы контейнера, скопировать его элементы в другой контейнер.

2. Итераторы. Протестировать работу итераторов различного типа., например, при вводе
и просмотре всех элементов контейнера, добавлении, поиске, удалении и пр.

3. Алгоритмы. Протестировать по 2 алгоритма каждой из 4 групп стандартной библиотеки алгоритмов. Указать, где используются стандартные объекты-функции (взять по 2 согласно вариантам). Обязательно использовать функциональный объект из п 1.
Контейнер-vector
обьекты функции: plus
Немодифицирующие алгоритмы:mismatch, count
Модифицирующие алгоритмы: remove_copy_if, rotate
Алгоритмы, связанные с сортировкой: sort_heap
Численные алгоритмы: adjacent_difference
из всего имеется свой написанный класс(сам расклад карт)
Code
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include<vector>
#include<algorithm>
#include<iterator>
#include<set>
using namespace std;
class Rasclad
{
private:
    string S[2][6];
    int N;
public:
    Rasclad() {};
    ~Rasclad() {};
 
    int Find(string str)
         {
          for(int i=0;i<N;i++)
           {
            if(!strcmp(S[i],str))
            return i;
           }
           return -1;
         }
       bool Add(char*str)
          {
           if(N<20)
            {
            strcpy(S[N],str);
            N++;
            return true;
           }
          else return false;
         }
       bool Del(char*str)
        {
          int k=Find(str);
          cout<<k<<endl;
          if(k>=0)
           {
           for(int i=k+1;i<N;i++)
            strcpy(S[i-1],S[i]);
           N--;
          return true;
           }
          return false;
         }
       void View()
         {
          for(int i=0;i<N;i++)
          cout<<S[i]<<endl;
         }
       bool Filter()
         {
          int k=0;
           for(int i=0;i<N;i++)
           {
             if((atoi(S[i])%2)==1)//преобразует строку, адресуемую параметром str, в значение типа int
             {
              cout<<S[i]<<endl;
              k++;
             return false;
             }
             else return true; 
          }
       int Sort(char*str);
         { 
           char*str;
           for ( int i=0;i<N-1;i++)
           for (int j=N-1;j>i;j--)
            { 
             if(strlen(S[j])>strlen(S[j-1]))//возвращает в  байтах  длину  строки  string
                
                strcpy(str,S[j]);
                strcpy(S[j],S[j-1]);
                strcpy(S[j-1],str);
            }
         }
 
          bool operator==(Rasclad T, Rasclad T2)
      {if(N==T.N)
      return true;
      if(!N==T.N)
      return false; };
       bool operator<(Set T)
     {
      if(N<T.N)
      return true;
      else false;
      };
      
      
      char* operator[](int i)
      { 
       return S[i];
      };
      
      friend Set operator<<(Set,char*str)
      {cout<<str<<"";};
      bool operator>(Set T)
     {
      if(N>T.N)
      return true;
      else false;
      };
       };
буду весьма благодарен в оказании любой помощи
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.06.2011, 19:01
Ответы с готовыми решениями:

Контейнеры и итераторы
Тема: иерархия объектов и группа. Итераторы. Задание: Имена всех монархов на заданном континенте.

STL. Итераторы и последовательные контейнеры
Немогу решить эти задачки: 1 Написать экземпляр класса queue на основе элементов типа string. 2.Написаты программу, которая использует...

Двусвязный список контейнеры и итераторы
#include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;list&gt; using namespace std; class List { private: int...

7
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
07.06.2011, 01:22
Посмотрите вот этот топик: Списки, стеки, очереди
0
 Аватар для xadjek
36 / 36 / 14
Регистрация: 05.06.2011
Сообщений: 306
08.06.2011, 00:55  [ТС]
Возник еще один вопрос-написал код, но он не компилируется т.к. выдается куча ошибок которые я не могу понять как исправить
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
 
class Rasclad
{
char* S[2][6];
int N, M;
public:
Rasclad() {};
~Rasclad() {};
int Find(char* str)
{
for(int i=0;i<2;i++)
for(int j=0;j<6;j++)
{
if(!strcmp(S[i][j],str))
{return i;}
else {return -1;}
}
 
}
bool Add(char*str)
{
if(N<6)
{
strcpy(S[N][M],str);
N++;
M++;
return true;
}
else return false;
}
bool Del(char*str)
{int j;
int k=Find(str);
cout<<k<<endl;
if(k>=0)
{
for(int i=k+1;i<2;i++)
for(int j=k+1;j<6;j++)
strcpy(S[i-1][j-1],S[i][j]);
N--;
M--;
return true;
}
return false;
}
void View()
{
for(int i=0;i<2;i++)
for(int j=0;j<4;j++)
 
cout<<S[i][j]<<endl;
}
 
bool operator==(Rasclad T)
{
bool localResult = true;
bool result = true;
{for(int i=0;i<2;i++)
for(int j=0;j<6;j++)
{ char* tmp=T.getRasclad(i,j);
localResult = strcmp(tmp,S);
if(!localResult)
result = localResult;
}
}
}
bool operator>(Rasclad T)
{
if(N>T.N)
return true;
else 
{return false;}
}
char* getRasclad(int i,int j)
{
return S[i][j];
}
friend ostream &operator<<(ostream &stream, Rasclad obj)
{ for(int i=0;i<2;i++)
for(int j=0;j<6;j++)
{stream<<obj[i][j];}
}
};
 
int main()
{
vector<Rasclad>cont;//создание вектора нулевой длинны
vector<Rasclad>cont2;
unsigned int i,j;
cout<<"Container size"<<cont.size()<<endl;
vector<Rasclad>::iterator p=cont.begin();
for(i=0;i<2;i++)
{for(j=0;j<cont.size();j++)
{
Rasclad* tmp = new Rasclad();   
    cont.insert(p,tmp);
}
}
 
cont2.insert(cont.begin(),cont.end());
for(i=0;i<cont.size();i++)
{for(j=0;j<cont.size();j++);//отобрaжаем содержимое множества
cout<<cont[i][j]<<endl;
}
for(int i=0;i<cont.size();i++)
for(j=0;j<cont.size();j++)
cont[i][j]=cont[i][j]+cont2[i][j];//изменяем содержимое множества
cout<<"content doubled:\n"<<endl;
cout<<cont[i][j]<<endl;
 
char*s[2][6];
vector<Rasclad>::iterator p;
p= cont.begin();
while(p!=cont.end())
{
cout<<*p;
p++;
}
 
char*S[2][6];
vector<Rasclad>::iterator p=cont.begin();
p+=2;//указатель на 3-й элемент
cont.insert(p,4,S[1][3]);//вставляем 10 символов
cout<<"size of the vector after insert="<<cont.size()<<endl;
cout<<"content of the vector after insert:\n";
for(int i=0;i<cont.size();i++)
{for(int j=0;j<cont.size();j++)
{cout<<cont[i][j];}
}
p= cont.begin();
p+=2;
cont.erase(p,p+5);//удаление 5 элементов подряд
cout<<"size of the vector after insert"<<cont.size()<<endl;
т.е. то и есть та программа из шапки, но уже которую я начал писать потихоньку но пока неудачно(
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
08.06.2011, 12:15
Цитата Сообщение от xadjek Посмотреть сообщение
Создать контейнер,
Контейнер надо свой написать или использовать STL контейнер?

Цитата Сообщение от xadjek Посмотреть сообщение
12 карт 4 мастей от 1 до Т
Эээ... 2,3,4,5,6,7,8,9,10,В,Д,К,Т -- тринадцать (не 12) карт. Какую-то надо выбросить?

И дальше по заданию непонятно, где надо использовать свой самописный контейнер, а где -- STL контейнеры.

Если надо создать свой контейнер для хранения набора карт (выборка N из 52), я бы предложил создать контейнер-множество. Причем его совершенно не обязательно строить на базе дерева, это может быть просто массив из 7 байт, где каждый бит обозначает соответствующую карту. (7*8 = 56 бит, а карт всего 52, так что хватит и еще останется).
0
 Аватар для xadjek
36 / 36 / 14
Регистрация: 05.06.2011
Сообщений: 306
08.06.2011, 15:57  [ТС]
Цитата Сообщение от lemegeton Посмотреть сообщение
Контейнер надо свой написать или использовать STL контейнер?


Эээ... 2,3,4,5,6,7,8,9,10,В,Д,К,Т -- тринадцать (не 12) карт. Какую-то надо выбросить?

И дальше по заданию непонятно, где надо использовать свой самописный контейнер, а где -- STL контейнеры.

Если надо создать свой контейнер для хранения набора карт (выборка N из 52), я бы предложил создать контейнер-множество. Причем его совершенно не обязательно строить на базе дерева, это может быть просто массив из 7 байт, где каждый бит обозначает соответствующую карту. (7*8 = 56 бит, а карт всего 52, так что хватит и еще останется).
1. надо использовать STL контейнер
причины использования 12 карт проста-там обьявлен массив 2х6, т.е. получить таким образом 13 карт даже обьявив другой массив мы не можем
причина использования вектора в виде контйнера обуславливается тем что по варианту задания так надо, но если реализовать через множество(выполнить чужой вариант) думаю проблем с преподом не будет все равно...
0
 Аватар для xadjek
36 / 36 / 14
Регистрация: 05.06.2011
Сообщений: 306
12.06.2011, 22:07  [ТС]
в общем код почти дописан но возник такой вопрос, вот например идет работа с одним и тем же контейнером
C++
1
2
3
4
5
6
7
8
9
10
11
12
cout<<"Randomnaya sortirovka"<<endl;
random_shuffle(cont.begin(),cont.end());//рандомная сортировка, модифицирующий алгоритм #2
for_each(cont.begin(),cont.end(),show);
 
cout<<"sort_heap"<<endl;
sort_heap (cont.begin(),cont.end());//сортировка кучи #1
p= cont.begin();
while(p!=cont.end())
{
cout<<*p;
p++;
}
вот тут продемонстрировано 2 алгоритма работающих с контейнером cont
вопрос-нужно ли после каждого действия алгоритма писать return 0? т.к. после действия алгоритма контейнер(содержимое) то изменяется а мне нужен изначальное содержимое перед каждым новым алгоритмом...
0
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.06.2011, 22:18
Оо передавай в отдельные функции этот контейнер по значению. Тогда он будет один и никаких модификаций.
а каждая фукнция - демонстрация какого-либо алгоритма
0
 Аватар для xadjek
36 / 36 / 14
Регистрация: 05.06.2011
Сообщений: 306
12.06.2011, 22:26  [ТС]
а можно на данном примере показать? а то я что-то не сильно понял...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.06.2011, 22:26
Помогаю со студенческими работами здесь

C++: итераторы по умолчанию, пустые итераторы, end()
Всем добра! Вопрос на тему итераторов в плюсах: 1. какие значения имеют итераторы без инициализации например,...

Итераторы и обратные итераторы
У вектора есть два типа итераторов, обычные и обратные итераторы произвольного доступа... Обычные реализовал, осталось обратные. Решил...

итераторы си++
подскажите пожалуйста какие существуют методы итераторов? и что они делают?

Итераторы
Добрый день! Начал изучать классы в C++ параллельно с итераторами. Решил сделать простенькую программу, которая создаёт список классов....

Итераторы
Всем добрый вечер! Есть небольшие затруднения , вот например фрагмент кода: //... multimap&lt;int,Point&gt; divisionP; ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru