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

Массивы, нахождение отрицательного элемента! - C++

Восстановить пароль Регистрация
 
na3ar1y
 Аватар для na3ar1y
48 / 4 / 1
Регистрация: 14.11.2010
Сообщений: 163
05.03.2012, 12:51     Массивы, нахождение отрицательного элемента! #1
найти в массиве отрицательный элемент и записать его в другой массив...не умею записать отрицательный элемент массива в другой массив то есть не знаю как из одной строчки данного массива записать в нужный нам массив больше 1-го значения

мой код;
C++
1
2
3
4
5
6
7
8
...
    int const k=5;
        int vid[k];
        for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(mas[i][j]<0) vid[i]=mas[i][j];//?????
        }}
...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.03.2012, 12:55     Массивы, нахождение отрицательного элемента! #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::vector<int> vec  = {-5, 1, -3, 4, -10, 2};
    std::vector<int> vec2;
    std::copy_if(vec.begin(), vec.end(), std::back_inserter(vec2), [](const int val) {return val < 0;});
    std::copy(vec2.begin(), vec2.end(), std::ostream_iterator<int>(std::cout, "\n"));
}
http://liveworkspace.org/code/2dd8d4...7d61c57f0acc90
na3ar1y
 Аватар для na3ar1y
48 / 4 / 1
Регистрация: 14.11.2010
Сообщений: 163
05.03.2012, 12:59  [ТС]     Массивы, нахождение отрицательного элемента! #3
ForEveR сложноватый у тебя синтаксис написания программы ....
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
05.03.2012, 13:06     Массивы, нахождение отрицательного элемента! #4
Цитата Сообщение от na3ar1y Посмотреть сообщение
ForEveR сложноватый у тебя синтаксис написания программы ....
Наоборот, правильный. Ничего лишнего.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.03.2012, 13:08     Массивы, нахождение отрицательного элемента! #5
na3ar1y, Элементарный. По мне такой синтаксис не в пример сложнее.
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
#include <iostream>
 
int main()
{
   int array[] = {-1, 2, 3, -5, 4, -10};
   size_t neg_cnt = 0;
   for (size_t i = 0; i < sizeof(array) / sizeof(*array); ++i)
   {
      if (array[i] < 0)
      {
         ++neg_cnt;
      }
   }
   int* result_array = new int[neg_cnt];
   for (size_t i = 0, j = 0; i < sizeof(array) / sizeof(*array); ++i)
   {
      if (array[i] < 0)
      {
         result_array[j] = array[i];
         ++j;
      }
   }
   for (size_t i = 0; i < neg_cnt; ++i)
   {
      std::cout << result_array[i] << " ";
   }
   std::cout << std::endl;
}
http://liveworkspace.org/code/b5df44...9dea5bdf1c28a0
Avazart
 Аватар для Avazart
6903 / 5143 / 253
Регистрация: 10.12.2010
Сообщений: 22,616
Записей в блоге: 17
05.03.2012, 13:30     Массивы, нахождение отрицательного элемента! #6
std::vector<int> vec = {-5, 1, -3, 4, -10, 2};
и
std::copy_if(vec.begin(), vec.end(), std::back_inserter(vec2), [](const int val) {return val < 0;});

А что это за запись такая? Ее вроде не все компиляторы поддерживают?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.03.2012, 13:37     Массивы, нахождение отрицательного элемента! #7
Avazart, Не все. Список инициализации и лямбда-функция.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.03.2012, 13:41     Массивы, нахождение отрицательного элемента! #8
Цитата Сообщение от Avazart Посмотреть сообщение
std::copy_if(vec.begin(), vec.end(), std::back_inserter(vec2), [](const int val) {return val < 0;});
Можно заменить на
C++
1
std::copy_if(vec.begin(), vec.end(), std::back_inserter(vec2), std::bind2nd(std::less< int >(), 0) );
Тогда и устаревшие компиляторы будут понимать.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.03.2012, 13:45     Массивы, нахождение отрицательного элемента! #9
diagon, Не учтена только 1 проблема... std::copy_if включен ТОЛЬКО в стандарт C++11. Раньше в стандарте его не было.

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <algorithm>
#include <iterator>
#include <functional>
 
int main()
{
   int array[] = {-1, 1, -3, 2, -4, 3};
   std::copy_if(array, array + sizeof(array) / sizeof(*array), std::ostream_iterator<int>(std::cout, "\n"), 
         std::bind2nd(std::less<int>(), 0));
}
Bash
1
2
3
forever@pterois:~/My_pro1/cpp_pro$ g++ -o new new.cpp
new.cpp: В функции «int main()»:
new.cpp:9:4: ошибка: «copy_if» не является элементом «std»
Bash
1
2
3
4
5
forever@pterois:~/My_pro1/cpp_pro$ g++ -o new new.cpp -std=c++0x
forever@pterois:~/My_pro1/cpp_pro$ ./new 
-1
-3
-4
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.03.2012, 13:48     Массивы, нахождение отрицательного элемента! #10
Цитата Сообщение от ForEveR Посмотреть сообщение
diagon, Не учтена только 1 проблема... std::copy_if включен ТОЛЬКО в стандарт C++11. Раньше в стандарте его не было.
Да, не заметил.
Тогда так
C++
1
std::remove_copy_if(vec.begin(), vec.end(), std::back_inserter(vec2), std::bind2nd(std::greater_equal< int >(), 0) );
Avazart
 Аватар для Avazart
6903 / 5143 / 253
Регистрация: 10.12.2010
Сообщений: 22,616
Записей в блоге: 17
05.03.2012, 14:11     Массивы, нахождение отрицательного элемента! #11
Ну RAD 2009 ругается
Миниатюры
Массивы, нахождение отрицательного элемента!  
na3ar1y
 Аватар для na3ar1y
48 / 4 / 1
Регистрация: 14.11.2010
Сообщений: 163
05.03.2012, 14:17  [ТС]     Массивы, нахождение отрицательного элемента! #12
я новичок в программировании и понимаю только этот синтаксис программирования, но теперб буду и знать что есть и такой)

Добавлено через 1 минуту
что за тип size_t ???? впервые слышу о таком
Avazart
 Аватар для Avazart
6903 / 5143 / 253
Регистрация: 10.12.2010
Сообщений: 22,616
Записей в блоге: 17
05.03.2012, 14:20     Массивы, нахождение отрицательного элемента! #13
А Visual ругается на инициализацию
Миниатюры
Массивы, нахождение отрицательного элемента!  
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.03.2012, 14:31     Массивы, нахождение отрицательного элемента! #14
Avazart, Ну не особо они пока поддерживают C++0x. На данный момент лучше всего поддерживает gcc. Хотя студия 11 вроде как реализует все, что заложено в новом стандарте (или почти все).

na3ar1y, typedef на unsigned int.
Avazart
 Аватар для Avazart
6903 / 5143 / 253
Регистрация: 10.12.2010
Сообщений: 22,616
Записей в блоге: 17
05.03.2012, 14:31     Массивы, нахождение отрицательного элемента! #15
Интересно как дело обстоит с XE,Qt
И списки инициализации как я пологаю перекочевали из boost-a.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2012, 15:56     Массивы, нахождение отрицательного элемента!
Еще ссылки по теме:

Нахождение максимального элемента в массиве и его индекс (элемента) C++
Индекс второго отрицательного элемента в массиве C++
C++ Упорядочение массива по возрастанию до первого отрицательного элемента

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
05.03.2012, 15:56     Массивы, нахождение отрицательного элемента! #16
Цитата Сообщение от ForEveR Посмотреть сообщение
na3ar1y, typedef на unsigned int.
определяется реализацией
Yandex
Объявления
05.03.2012, 15:56     Массивы, нахождение отрицательного элемента!
Ответ Создать тему
Опции темы

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