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

Интересная сортировка - C++

Восстановить пароль Регистрация
 
chk.dsk
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 36
05.10.2010, 23:30     Интересная сортировка #1
Дан вектор.Сжать существующий вектор,удалив все отрицательные элементы,не используя дополнительный вектор.

Огромная,просьба напишите,как можно проще,просто начинающий.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2010, 23:30     Интересная сортировка
Посмотрите здесь:

C++ интересная головоломка
C++ Интересная сортировка
C++ Интересная головоломка
C++ Интересная задачка
Интересная сортировка массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
05.10.2010, 23:34     Интересная сортировка #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
#include <iostream>
#include <vector>
 
int main()
{
 
    std::vector<int> arr;
 
    arr.push_back(1);
    arr.push_back(-2);
    arr.push_back(3);
    arr.push_back(-4);
    arr.push_back(5);
    arr.push_back(-6);
    arr.push_back(7);
 
 
    for (int i = 0; i < arr.size(); ++i)
     if (arr[i] < 0) arr.erase(arr.begin()+i);
 
     for (int i = 0; i < arr.size(); ++i)
      std::cout << arr[i];
 
 
    return 0;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.10.2010, 23:34     Интересная сортировка #3
chk.dsk, Вроде типа такого
C++
1
2
std::vector<int> Vec;
Vec.erase(remove_if(Vec.begin(), Vec.end(), std::bind2nd(std::less<int>(), 0)), Vec.end());
chk.dsk
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 36
05.10.2010, 23:36  [ТС]     Интересная сортировка #4
Цитата Сообщение от PointsEqual Посмотреть сообщение
arr.push_back(1);
arr.push_back(-2);
arr.push_back(3);
arr.push_back(-4);
arr.push_back(5);
arr.push_back(-6);
arr.push_back(7)
обьясни пожалуйста действия
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
05.10.2010, 23:37     Интересная сортировка #5
Цитата Сообщение от chk.dsk Посмотреть сообщение
обьясни пожалуйста действия
заполняем массив arr
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.10.2010, 23:40     Интересная сортировка #6
PointsEqual, Таки глупо. Лучше уж переменную в цикле вводить и писать в вектор... Ну это чуть придирки
chk.dsk
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 36
05.10.2010, 23:41  [ТС]     Интересная сортировка #7
Цитата Сообщение от Lavroff Посмотреть сообщение
std::bind2nd(std::less<int>()
а можете это обьяснить тоже?

Добавлено через 58 секунд
Lavroff, а можна просто размерность "n" же использовать в цикле и при вводе?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.10.2010, 23:41     Интересная сортировка #8
chk.dsk, Легко. Функтор.
Можно.
Bind2nd
less
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
05.10.2010, 23:43     Интересная сортировка #9
Цитата Сообщение от Lavroff Посмотреть сообщение
PointsEqual, Таки глупо. Лучше уж переменную в цикле вводить и писать в вектор... Ну это чуть придирки
заполнять он его может как хочет, просто пример
ForEveR
05.10.2010, 23:43
  #10

Не по теме:

PointsEqual, Ну да. Извиняюсь)

chk.dsk
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 36
05.10.2010, 23:54  [ТС]     Интересная сортировка #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
 
int main()
{
   double a[10]
   int i
   cout<<"вв.размер";
   cin>>n
  for (cout<<"vv.elementi massiva";
   i=0;i<n;i++,cin>>a[i]); 
for (int i = 0; i < arr.size(); ++i)
     if (a[i] < 0) a[i]erase(a[i]begin(+i);
 
     for (int i = 0; i < a[i]; ++i)
      cout << arr[i];
 
 
    return 0;
}
так можно?
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
05.10.2010, 23:57     Интересная сортировка #12
Цитата Сообщение от chk.dsk Посмотреть сообщение
так можно?
неа .
chk.dsk
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 36
05.10.2010, 23:58  [ТС]     Интересная сортировка #13
PointsEqual, а что не так?
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
06.10.2010, 00:02     Интересная сортировка #14
нет ; в конце
Цитата Сообщение от chk.dsk Посмотреть сообщение
double a[10]
int i
Добавлено через 18 секунд
это не знаю что такое)
Цитата Сообщение от chk.dsk Посмотреть сообщение
for (cout<<"vv.elementi massiva";
Добавлено через 1 минуту
erase - метод применяемый для контейнера а не для отдельного элемента
Цитата Сообщение от chk.dsk Посмотреть сообщение
a[i]erase
chk.dsk
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 36
06.10.2010, 00:05  [ТС]     Интересная сортировка #15
Цитата Сообщение от chk.dsk Посмотреть сообщение
double a[10]
int i
тут надо

C++
1
2
double a[10]
 int i;
и в конце

C++
1
cout << a[i]
Добавлено через 1 минуту
Цитата Сообщение от PointsEqual Посмотреть сообщение
for (cout<<"vv.elementi massiva";
вводим "n"

Добавлено через 21 секунду
а как заменить erase?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2010, 00:08     Интересная сортировка
Еще ссылки по теме:

Интересная штука C++
C++ Одна интересная задачка
C++ Интересная конструкция в C++

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

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
06.10.2010, 00:08     Интересная сортировка #16
Как минимум так. И то это хрень. Читайте мат. часть.

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
#include <iostream>
#include <vector>
 
int main()
{
   const int n=10;
   double a[n];
   int i;
   cout<<"вв.размер";
   cin>>n;
  for (i=0;i<n;i++)
  {
       std::cout<<"Enter el: ";
       std::cin>>a[i];
  }
  //for (int i = 0; i < n; ++i)
     // if (a[i] < 0) a.erase(a.begin()+i);
 
     for (int i = 0; i < n; ++i)
      cout << arr[i];
 
 
    return 0;
}
Yandex
Объявления
06.10.2010, 00:08     Интересная сортировка
Ответ Создать тему
Опции темы

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