Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
na3ar1y
48 / 4 / 1
Регистрация: 14.11.2010
Сообщений: 163
#1

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

05.03.2012, 12:51. Просмотров 1043. Ответов 15
Метки нет (Все метки)

найти в массиве отрицательный элемент и записать его в другой массив...не умею записать отрицательный элемент массива в другой массив то есть не знаю как из одной строчки данного массива записать в нужный нам массив больше 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];//?????
        }}
...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2012, 12:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массивы, нахождение отрицательного элемента! (C++):

Нахождение последнего отрицательного элемента массива - C++
Программа ищет последний отрицательного элемент массива. Не могу понять ошибки программы: 3 from F:\...\2_17.C In file included from...

Найти номер минимального по модулю элемента массива и сумму модулей после первого отрицательного элемента - C++
1.В одномерном массиве, состоящем из n вещественных элементов, вычислить: а)номер минимального по модулю элемента массива; б)сумму...

Нахождение максимального элемента в массиве и его индекс (элемента) - C++
Доброго времени суток. Вот исходный код поиска максимального элемента массива: #include&quot;stdafx.h&quot; #include&quot;stdio.h&quot; ...

Индекс второго отрицательного элемента в массиве - C++
Вывести индекс 2 отрицательного элемента в массиве

Найти значение последнего отрицательного элемента - C++
Дана последовательность из n вещественных чисел. Найти значение последнего отрицательного элемента. Массив от -5 до 4, уже дан,при...

Упорядочение массива по возрастанию до первого отрицательного элемента - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; using namespace std; int main() { int n=8,...

15
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 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/2dd8d4769937412e457d61c57f0acc90
0
na3ar1y
48 / 4 / 1
Регистрация: 14.11.2010
Сообщений: 163
05.03.2012, 12:59  [ТС] #3
ForEveR сложноватый у тебя синтаксис написания программы ....
0
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
05.03.2012, 13:06 #4
Цитата Сообщение от na3ar1y Посмотреть сообщение
ForEveR сложноватый у тебя синтаксис написания программы ....
Наоборот, правильный. Ничего лишнего.
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 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/b5df44c71178df0d289dea5bdf1c28a0
2
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,044
Записей в блоге: 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;});

А что это за запись такая? Ее вроде не все компиляторы поддерживают?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
05.03.2012, 13:37 #7
Avazart, Не все. Список инициализации и лямбда-функция.
0
diagon
Higher
1930 / 1196 / 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) );
Тогда и устаревшие компиляторы будут понимать.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 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
1
diagon
Higher
1930 / 1196 / 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) );
1
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,044
Записей в блоге: 17
05.03.2012, 14:11 #11
Ну RAD 2009 ругается
0
Миниатюры
Массивы, нахождение отрицательного элемента!  
na3ar1y
48 / 4 / 1
Регистрация: 14.11.2010
Сообщений: 163
05.03.2012, 14:17  [ТС] #12
я новичок в программировании и понимаю только этот синтаксис программирования, но теперб буду и знать что есть и такой)

Добавлено через 1 минуту
что за тип size_t ???? впервые слышу о таком
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,044
Записей в блоге: 17
05.03.2012, 14:20 #13
А Visual ругается на инициализацию
0
Миниатюры
Массивы, нахождение отрицательного элемента!  
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
05.03.2012, 14:31 #14
Avazart, Ну не особо они пока поддерживают C++0x. На данный момент лучше всего поддерживает gcc. Хотя студия 11 вроде как реализует все, что заложено в новом стандарте (или почти все).

na3ar1y, typedef на unsigned int.
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,044
Записей в блоге: 17
05.03.2012, 14:31 #15
Интересно как дело обстоит с XE,Qt
И списки инициализации как я пологаю перекочевали из boost-a.
0
05.03.2012, 14:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2012, 14:31
Привет! Вот еще темы с ответами:

Найти номер первого отрицательного элемента массива - C++
найти номер первого отрицательного элемента массива. не могу написать программу))) вот кое что сделал, но работает неправильно: ...

Найти: Номер первого отрицательного элемента массива - C++
написать такую же программу используя функции //Задача №1 Дан массив элементов длины N. Найти: Номер первого отрицательного элемента...

Определить значение и номер максимального отрицательного элемента. - C++
Заданный одномерный массив, состоящий из N действительных элементов. Определить значение и номер максимального отрицательного элемента.

Найти номер последнего отрицательного элемента массива - C++
# include &lt;iostream&gt; using namespace std; void main () { int i=0; int p; setlocale(LC_ALL, &quot;rus&quot;); cout&lt;&lt;&quot;Введите числа...


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

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

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