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

Класс-Контейнер Вектор - C++

Восстановить пароль Регистрация
 
*::Мария::*
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 4
13.03.2011, 17:46     Класс-Контейнер Вектор #1
I Дана последовательность целых чисел
Подсчитать сумму элиментов, расположенных между минимальным и максимальным элементами (минимальный и максимальный элемент в массиве единственные). Если минимальный элемент встречается позже максимального, то выдать сообщение об этом.

II Дана последовательность целых чисел
Удалить из массива все элементы, в записи которых все цыфры различны.

Помогите пожалуйста с решением .
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2011, 17:46     Класс-Контейнер Вектор
Посмотрите здесь:

C++ БД.Контейнер - Вектор.
Класс-Контейнер Вектор C++
C++ Класс-Контейнер Вектор
C++ Класс-Контейнер Вектор
Класс-Контейнер Вектор C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
13.03.2011, 18:01     Класс-Контейнер Вектор #2
Цитата Сообщение от *::Мария::* Посмотреть сообщение
Дана последовательность целых чисел
Удалить из массива все элементы, в записи которых все цыфры различны.
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <sstream>
#include <iterator>
#include <string>
 
bool chek(int num){
  std::ostringstream ost;
  ost << num;
  std::string num_str = ost.str(), _num_str = num_str;
  std::string::iterator it = std::unique(num_str.begin(), num_str.end());
  num_str.resize(it - num_str.begin());
  return num_str == _num_str;
}
 
int main(){
  std::vector<int> vec( (std::istream_iterator<int>(std::cin)), std::istream_iterator<int>() );
  for(std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it)
    if(chek(*it)){
      vec.erase(it);
      --it;
    }
  for(std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it)
    std::cout << *it << ' ';
  return 0;
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
13.03.2011, 19:16     Класс-Контейнер Вектор #3
Цитата Сообщение от *::Мария::* Посмотреть сообщение
II Дана последовательность целых чисел
Удалить из массива все элементы, в записи которых все цыфры различны.
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
#include <iostream>
#include <algorithm>
#include <sstream>
#include <vector>
#include <iterator>
#include <string>
 
struct isAllDigitsUnique
{
      bool operator()(int i) const
      {
     std::ostringstream iss;
     iss << i;
     std::string t = iss.str(); 
 
     std::sort(t.begin(), t.end());
         
     return std::adjacent_find(t.begin(), t.end()) == t.end();
      }
};
 
int main()
{
   std::istream_iterator<int> inputBegin(std::cin);
   std::istream_iterator<int> inputEnd;
         
   std::vector<int> v(inputBegin, inputEnd);    
 
   v.erase(std::remove_if(v.begin(), v.end(), 
              isAllDigitsUnique()), v.end());
 
   std::copy(v.begin(), v.end(), 
         std::ostream_iterator<int>(std::cout, " "));
 
   std::cout << '\n';
   
   return 0;
}
Saiberg
 Аватар для Saiberg
19 / 19 / 1
Регистрация: 23.09.2010
Сообщений: 193
13.03.2011, 20:24     Класс-Контейнер Вектор #4
Дана последовательность целых чисел
Подсчитать сумму элиментов, расположенных между минимальным и максимальным элементами (минимальный и максимальный элемент в массиве единственные). Если минимальный элемент встречается позже максимального, то выдать сообщение об этом.

решил попробывать поработать с STL.

Не нашел не какой функции для
"Если минимальный элемент встречается позже максимального, то выдать сообщение об этом."

Получился вот такой быдлокод
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
 
int main(int argc, char *argv[]) {
    
    const int forSortData[] = {100, 32, 71, 12, 45, 26, 80, 53, 33};
    std::vector<int> forSort(forSortData, forSortData + sizeof(forSortData) / sizeof(int));
    std::sort(forSort.begin(), forSort.end());
 
    const int* pMin = std::search_n(forSortData, 
                            forSortData + sizeof(forSortData) / sizeof(int),
                            1, 
                                forSort[0]);
 
    const int* pMax = std::search_n(forSortData, 
                             forSortData + sizeof(forSortData) / sizeof(int),
                             1, 
                             forSort[(sizeof(forSortData) / sizeof(int)) - 1]);
 
 
    if(pMin > pMax) std::cerr << "min pos > max" << std::endl;
 
    int init = 0;
    std::cout << std::accumulate(forSort.begin() + 1, forSort.end() - 1, init) << std::endl;
 
    system("pause");
    return 0;
}
*::Мария::*
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 4
13.03.2011, 21:25  [ТС]     Класс-Контейнер Вектор #5
спасибо вам Огромное!!!
Yandex
Объявления
13.03.2011, 21:25     Класс-Контейнер Вектор
Ответ Создать тему
Опции темы

Текущее время: 20:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru