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

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

Войти
Регистрация
Восстановить пароль
 
 
Klun
1 / 1 / 0
Регистрация: 13.09.2012
Сообщений: 38
#1

Пары в векторе - C++

25.01.2013, 03:56. Просмотров 591. Ответов 16
Метки нет (Все метки)

Задан вектор в 200 чисел который рандомно заполнен в диапазоне от -50 до 50 . Нужно из этого безобразия получить количество отрицательных и положительных чисел, которые стоят рядом( пример - 9,14,(5,(-5),7),8,4 ). Я с трудом представляю , как это. Мож кто поможет?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2013, 03:56     Пары в векторе
Посмотрите здесь:

Можно ли разбить последовательность на пары так, чтобы произведение чисел любой пары было одинаковым? - C++
Помогите написать код задачи на с++ Дана последовательность целых чисел. Выяснить, можно разбить ее на пары таким образом , чтобы...

Вывести максимальный с каждой пары двух соседних елементов масива.Здесь выводит только с первой пары! - C++
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include<conio.h> ...

Число вершин, удаленных от пары вершин по кротчайшим маршрутам каждой из следующих длин: 1, 2, 3 и т.д., для каждой пары вершин. - C++
Число вершин, удаленных от пары вершин по кротчайшим маршрутам каждой из следующих длин: 1, 2, 3 и т.д., для каждой пары вершин. ...

Структуры в векторе - C++
struct Node { char ch; int parent; int zero; int one; bool branch; } ; ...

Сортировка в векторе - C++
Нужно отсортировать студентов в векторе по размеру стипендии от большей к меньшей. Для этого у меня есть френд функция в классе но как...

Поиск в векторе - C++
Есть вектор v Нужно задать поиск значения 6 и присвоить переменной i номер элемента вектора v, в котором найдена искомое значение 6. В...

Поиск в векторе - C++
Есть вектор v: v = 0; v = 1; v = 2; v = 4; v = 6; Как с помощью алгоритма find узнать есть ли в векторе число 8, между...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Модератор
Эксперт CЭксперт С++
7184 / 4350 / 634
Регистрация: 29.11.2010
Сообщений: 11,843
25.01.2013, 04:09     Пары в векторе #2
Обходите по вектору со 2 элемента до конца и, если знак текущего элемента отличается от знака предыдущего, то инкрементируете счетчик.
Klun
1 / 1 / 0
Регистрация: 13.09.2012
Сообщений: 38
25.01.2013, 10:39  [ТС]     Пары в векторе #3
Хм, как вариант стоит попробовать.

Добавлено через 6 часов 17 минут
Народ, а может кто помочь с кодом? Ничего не получается(((
MrGluck
Модератор
Эксперт CЭксперт С++
7184 / 4350 / 634
Регистрация: 29.11.2010
Сообщений: 11,843
25.01.2013, 11:58     Пары в векторе #4
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>
#include <random>
#include <algorithm>
#include <iterator>
 
 
int main()
{
    std::mt19937 gen {std::random_device()() };
    std::uniform_int_distribution<int> uid(-50, 50);
    const int N = 200;
    std::vector<int> v(N);
    std::generate(v.begin(), v.end(), [&uid, &gen] { return uid(gen); } );
    std::copy(v.begin(), v.end(), std::ostream_iterator<int> (std::cout, " ") );
    bool positive = (*v.begin() >= 0);
    int counter = 0;
    std::for_each(v.begin() + 1, v.end(), [&positive, &counter](int x)
    {
        bool tickPositive = (x >= 0);
        if (positive != tickPositive)
            counter++;
        positive = tickPositive;
    } );
    std::cout << std::endl << "Counter: " << counter << std::endl;
}
http://liveworkspace.org/code/h68Jg
sunny2013
0 / 0 / 0
Регистрация: 25.01.2013
Сообщений: 6
25.01.2013, 12:15     Пары в векторе #5
MrGluck, спасибо на ссылку на замечательный ресурс!
Klun
1 / 1 / 0
Регистрация: 13.09.2012
Сообщений: 38
25.01.2013, 19:09  [ТС]     Пары в векторе #6
А можно тоже самое , только при помощи функций "for"?
MrGluck
Модератор
Эксперт CЭксперт С++
7184 / 4350 / 634
Регистрация: 29.11.2010
Сообщений: 11,843
25.01.2013, 21:45     Пары в векторе #7
Klun, конечно.
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>
#include <random>
#include <algorithm>
#include <iterator>
 
 
int main()
{
    std::mt19937 gen {std::random_device()() };
    std::uniform_int_distribution<int> uid(-50, 50);
    const int N = 20;
    std::vector<int> v(N);
    std::generate(v.begin(), v.end(), [&uid, &gen] { return uid(gen); } );
    std::copy(v.begin(), v.end(), std::ostream_iterator<int> (std::cout, " ") );
    bool positive = (*v.begin() >= 0);
    int counter = 0;
    for (std::vector<int>::iterator it = v.begin() + 1; it != v.end(); ++it)
    {
        bool tickPositive = (*it >= 0);
        if (positive != tickPositive)
            counter++;
        positive = tickPositive;
    }
    std::cout << std::endl << "Counter: " << counter << std::endl;
}
http://liveworkspace.org/code/h68Jg
Klun
1 / 1 / 0
Регистрация: 13.09.2012
Сообщений: 38
25.01.2013, 22:36  [ТС]     Пары в векторе #8
Эм... Хэхэ. Я имел введу примерно в таком виде:
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
#include <iostream>
 
using namespace std;
 
 
int funsum1(int*, int*, int*, int*, int*);
int funsum2(int*, int*, int*, int*, int*);
int funsum3(int*, int*, int*, int*, int*);
int funmaxsum4(int*, int*, int*);
int main()
{
    int p1, p2, p3, p4, p5, sum1, sum2, sum3;
 
    cout<<"Vvedite 5 chisel cherez probel:"<<endl;
 
 
    cin>> p1 >> p2 >>  p3 >>  p4 >>  p5 ;
 
 
    sum1 = funsum1(&p1, &p2, &p3, &p4, &p5);
    sum2 = funsum2(&p1, &p2, &p3, &p4, &p5);
    sum3 = funsum3(&p1, &p2, &p3, &p4, &p5);
 
    cout<<funmaxsum4(&sum1, &sum2, &sum3);
 
return 0;
}
 
int funsum1(int*p1lok, int*p2lok, int*p3lok, int*p4lok, int*p5lok){
int sum1;
int pf1, pf2, pf3, pf4, pf5;
 
    pf1= *p1lok*2;
    pf2= *p2lok*2;
    pf3= *p3lok*2;
    pf4= *p4lok*2;
    pf5= *p5lok*2;
    sum1= pf1+pf2+pf3+pf4+pf5;
 
   return sum1;
}
 
int funsum2(int*p1lok, int*p2lok, int*p3lok, int*p4lok, int*p5lok){
int sum2;
int pf1, pf2, pf3, pf4, pf5;
 
    pf1= *p1lok*4;
    pf2= *p2lok*4;
    pf3= *p3lok*4;
    pf4= *p4lok*4;
    pf5= *p5lok*4;
    sum2= pf1+pf2+pf3+pf4+pf5;
 
    return sum2;
 
 
}
 
int funsum3(int*p1lok, int*p2lok, int*p3lok, int*p4lok, int*p5lok){
int sum3;
int pf1, pf2, pf3, pf4, pf5;
 
    pf1= *p1lok * *p1lok;
    pf2= *p2lok * *p2lok;
    pf3= *p3lok * *p3lok;
    pf4= *p4lok * *p4lok;
    pf5= *p5lok * *p5lok;
    sum3=pf1+pf2+pf3+pf4+pf5;
 
   return sum3;
}
 
int funmaxsum4(int*sum1, int*sum2, int*sum3){
int maxsum;
 
    if(*sum1>*sum2)
     maxsum= *sum1;
    if(*sum2>*sum1)
     maxsum= *sum2;
    if(*sum3>maxsum)
     maxsum= *sum3;
 
 return maxsum;
}
MrGluck
Модератор
Эксперт CЭксперт С++
7184 / 4350 / 634
Регистрация: 29.11.2010
Сообщений: 11,843
25.01.2013, 22:56     Пары в векторе #9
Klun, что в моем ответе не соответствует ТЗ?
Klun
1 / 1 / 0
Регистрация: 13.09.2012
Сообщений: 38
25.01.2013, 23:38  [ТС]     Пары в векторе #10
#include <vector>
#include <random>
#include <algorithm>
#include <iterator>

Возможно ли построение данной программы без данных библиотек и сопутствующих им функций?
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
25.01.2013, 23:49     Пары в векторе #11
Цитата Сообщение от Klun Посмотреть сообщение
Эм... Хэхэ. Я имел введу примерно в таком виде:
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
#include <iostream>
 
using namespace std;
 
 
int funsum1(int*, int*, int*, int*, int*);
int funsum2(int*, int*, int*, int*, int*);
int funsum3(int*, int*, int*, int*, int*);
int funmaxsum4(int*, int*, int*);
int main()
{
    int p1, p2, p3, p4, p5, sum1, sum2, sum3;
 
    cout<<"Vvedite 5 chisel cherez probel:"<<endl;
 
 
    cin>> p1 >> p2 >>  p3 >>  p4 >>  p5 ;
 
 
    sum1 = funsum1(&p1, &p2, &p3, &p4, &p5);
    sum2 = funsum2(&p1, &p2, &p3, &p4, &p5);
    sum3 = funsum3(&p1, &p2, &p3, &p4, &p5);
 
    cout<<funmaxsum4(&sum1, &sum2, &sum3);
 
return 0;
}
 
int funsum1(int*p1lok, int*p2lok, int*p3lok, int*p4lok, int*p5lok){
int sum1;
int pf1, pf2, pf3, pf4, pf5;
 
    pf1= *p1lok*2;
    pf2= *p2lok*2;
    pf3= *p3lok*2;
    pf4= *p4lok*2;
    pf5= *p5lok*2;
    sum1= pf1+pf2+pf3+pf4+pf5;
 
   return sum1;
}
 
int funsum2(int*p1lok, int*p2lok, int*p3lok, int*p4lok, int*p5lok){
int sum2;
int pf1, pf2, pf3, pf4, pf5;
 
    pf1= *p1lok*4;
    pf2= *p2lok*4;
    pf3= *p3lok*4;
    pf4= *p4lok*4;
    pf5= *p5lok*4;
    sum2= pf1+pf2+pf3+pf4+pf5;
 
    return sum2;
 
 
}
 
int funsum3(int*p1lok, int*p2lok, int*p3lok, int*p4lok, int*p5lok){
int sum3;
int pf1, pf2, pf3, pf4, pf5;
 
    pf1= *p1lok * *p1lok;
    pf2= *p2lok * *p2lok;
    pf3= *p3lok * *p3lok;
    pf4= *p4lok * *p4lok;
    pf5= *p5lok * *p5lok;
    sum3=pf1+pf2+pf3+pf4+pf5;
 
   return sum3;
}
 
int funmaxsum4(int*sum1, int*sum2, int*sum3){
int maxsum;
 
    if(*sum1>*sum2)
     maxsum= *sum1;
    if(*sum2>*sum1)
     maxsum= *sum2;
    if(*sum3>maxsum)
     maxsum= *sum3;
 
 return maxsum;
}
у меня кровь из глаз брызнула, когда я это увидел
Klun
1 / 1 / 0
Регистрация: 13.09.2012
Сообщений: 38
26.01.2013, 01:28  [ТС]     Пары в векторе #12
На данном этапе обучения я не умею строить программы по другому( и да, это не по этому заданию).
Я попросил помощи так как не представляю как написать код по данной задаче, но не могу принять вышеуказанное решение( за которое я очень благодарен - человек потратил время и старался) но я элементарно не пойму что к чему и при случае не смогу объяснить что и как работает.

Добавлено через 1 час 23 минуты
Люди, помогите плз. Срочно нужно...
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
26.01.2013, 01:43     Пары в векторе #13
попробуйте разобраться чтоли. там кода строчек 15 всего. генерация вектора и циклик.
не понимаете как заколняется вектор - сделайте по своему. цикл без изменений останется:

C++
1
2
3
4
5
6
7
8
9
10
11
12
  
   std::vector<int> v = myVectorGeneration(200);
   bool positive = (v[0] >= 0);
   int counter = 0;
   for (unsigned i = 1; i < v.size(); ++i)
   {
        bool tickPositive = (v[i] >= 0);
        if (positive != tickPositive)
            counter++;
        positive = tickPositive;
    }
    std::cout << std::endl << "Counter: " << counter << std::endl;
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,453
Записей в блоге: 17
26.01.2013, 01:49     Пары в векторе #14
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
#include <iostream>
#include <ctime>
 
using namespace std;
//-------------------------------------------------------
void my_generate(int A[], int size, int val1, int val2)
{
    srand(time(0));
    for(int i=0; i<size ; i++) A[i]= rand()%(val2-val1)+val1;
}
//-------------------------------------------------------
void my_print(int A[], int size)
{
    for(int i=0; i<size ; i++) cout<<A[i]<<"\t";
}
//-------------------------------------------------------
int main()
{
    const int size=10;
    int A[size];
    my_generate(A,10,-50,50);
    my_print(A,10);
 
    int counter=0;
    cout<<endl<<"pairs:"<<endl;
 
    for(int i=0; i<size-1 ; i++)
        {
            if( (A[i]>0 && A[i+1]<0) || (A[i]<0 && A[i+1]>0) )
                {
                    cout<<A[i]<<"\t"<<A[i+1]<<endl;
                    counter++;
                }
        }
 
    cout<<"count: "<<counter<<endl;
 
    getchar();
    return 0;
}
//-------------------------------------------------------
46 -42 44 -47 47 47 -13 -47 17 -8
pairs:
46 -42
-42 44
44 -47
-47 47
47 -13
-47 17
17 -8
count: 7
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2013, 01:55     Пары в векторе
Еще ссылки по теме:

insert в двухмерном векторе - C++
Доброго времени суток, тут возник вопрос. Вот сабж int main(){ vector&lt;vector&lt;int&gt; &gt; q; vector&lt;int&gt; qtemp; int...

size и capasity в векторе - C++
Всем привет, возникла такая проблема Делаю расчетную программу, использую вектор, возникла такая ситуация: в цикле делается вот такая...

Сравнение элементов в векторе - C++
Подскажите как проверить на равенство поля объектов в векторе: Делаю так: #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

N-мерный массив в векторе - C++
Здравствуйте. Можно ли в векторе хранить n-мерный массив. т.е. я с клавиатуры ввожу размерность n массива и потом заполняю сам массив.

Длина строки в векторе - C++
Здравствуйте! Как узнать длину строки в векторе? vector&lt;string&gt; v; v.push_back(&quot;a&quot;); v.push_back(&quot;aa&quot;); ...


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

Или воспользуйтесь поиском по форуму:
Klun
1 / 1 / 0
Регистрация: 13.09.2012
Сообщений: 38
26.01.2013, 01:55  [ТС]     Пары в векторе #15
Avazart , спасибо тебе огромное!!!
Yandex
Объявления
26.01.2013, 01:55     Пары в векторе
Ответ Создать тему
Опции темы

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