Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 2
Регистрация: 18.05.2014
Сообщений: 203
1

Нужен совет по программе

24.01.2015, 02:16. Показов 432. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, есть задача, дано 2 массива, первый-упорядочен по возрастанию, второй-контейнер элементов, индексы нахождения которых в 1 массиве(начальный , конечный) нужно найти.

Вот код, вроде рабочий, но на деле нет:

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
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main()
{
    int N,K;
    int help;
 
    cin >> N >> K;
 
    vector <int> intN; //исходный контейнер
 
    vector <int> intK; //массив элементы которого ищутся в intN
 
    for(int i=0; i<N; i++)
    {
        cin >> help;
        intN.push_back(help);
    }
 
    for(int i=0; i<K; i++)
    {
        cin >> help;
        intK.push_back(help);
    }
 
    for(vector <int>::iterator i=intK.begin(); i<intK.end(); i++) //первый вариант поиска
 
    {
        vector<int>::iterator upperHelp=upper_bound(intN.begin(),intN.end(),*i);
        vector<int>::iterator lowerHelp=lower_bound(intN.begin(),intN.end(),*i);
        if(*i==intN[*upperHelp])
            cout <<*upperHelp << ends <<*lowerHelp << endl;
    }
 
    for (int i=0;i<intK.size();i++){    //второй вариант поиска
        vector<int>::iterator upperHelp=upper_bound(intN.begin(),intN.end(),intK[i]);
        vector<int>::iterator lowerHelp=lower_bound(intN.begin(),intN.end(),intK[i]);
        if(intK[i]==intN[*upperHelp])
            cout << cout << *upperHelp << ends << *lowerHelp << endl;
    }
 
 
}
Код аварийно завершается
Не могли бы вы ,пожалуйста, посоветовать что-нибудь?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2015, 02:16
Ответы с готовыми решениями:

Нужен совет в программе!
Програма такого типа: 1.Вивести в левый угол екрана компютера в столбик 5 слов разного цвета!...

Нужен совет по простенькой программе
Нужно открыть файл, записать туда 3 строки и закрыть файл. Препод сказал, что вместо cout должен...

Нужен совет, доработка по программе (матрица)
Задаём матрицу 6x6, заполняем числами, если есть повторяющиеся выводим максимальное из них на...

Очень нужен совет где найти ошибки в программе
//Obrabotka rezulitatov sessii s ispolizovaniem functii #include&lt;iostream&gt; #include&lt;iomanip&gt;...

2
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
24.01.2015, 02:33 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
28
29
30
31
32
33
34
35
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
#define size 30
int main()
{
    vector <int> all; 
    vector <int> lookingFor; 
 
    for ( int i = 0; i<size; i+= 2 )
    {       
        all.push_back(i);
    }
    lookingFor.push_back(8);
    lookingFor.push_back(16);
    lookingFor.push_back(24);
    lookingFor.push_back(244);
 
    
    
    if ( !lookingFor.empty() )
    {
        for ( auto it = lookingFor.begin(); it != lookingFor.end(); it++ )
        {
            auto tmp = find(all.begin(), all.end(), (*it));
            if ( tmp != all.end() )
            {
                //нашёлся
                cout << "Founded " << (*it) << " index " << std::distance(all.begin(), tmp) << endl;
            }
        }
    }
}
Первое вхождение.
1
3 / 3 / 2
Регистрация: 18.05.2014
Сообщений: 203
24.01.2015, 03:17  [ТС] 3
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
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main()
{
    int N,K;
    int help;
 
    cin >> N >> K;
 
    vector <int> intN; //исходный контейнер
 
    vector <int> intK; //массив элементы которого ищутся в intN
 
    for(int i=0; i<N; i++)
    {
        cin >> help;
        intN.push_back(help);
    }
 
    for(int i=0; i<K; i++)
    {
        cin >> help;
        intK.push_back(help);
    }
 
   /* for(vector <int>::iterator i=intK.begin(); i<intK.end(); i++) //ошибочный вариант
 
    {
        vector<int>::iterator upperHelp=upper_bound(intN.begin(),intN.end(),*i);
        vector<int>::iterator lowerHelp=lower_bound(intN.begin(),intN.end(),*i);
        if(*i==intN[*upperHelp])
            cout <<*upperHelp << ends <<*lowerHelp << endl;
    }
 
    for (int i=0;i<intK.size();i++){    //ошибочный вариант
        vector<int>::iterator upperHelp=upper_bound(intN.begin(),intN.end(),intK[i]);
        vector<int>::iterator lowerHelp=lower_bound(intN.begin(),intN.end(),intK[i]);
        if(intK[i]==*upperHelp)
            cout <<upperHelp-intN.begin() << ends << lowerHelp-intN.begin() << endl;
    }*/
 
     for(vector <int>::iterator i=intK.begin(); i<intK.end(); i++) //первый вариант поиска через разность ссылок
 
    {
        vector<int>::iterator upperHelp=upper_bound(intN.begin(),intN.end(),*i);
        vector<int>::iterator lowerHelp=lower_bound(intN.begin(),intN.end(),*i);
        if(*i==*lowerHelp)
        cout <<upperHelp-intN.begin() << ends << lowerHelp-intN.begin() << endl;
    }
 
 
    for(auto it=intK.begin();it<intK.end();it++){ //второй вариант через разность ссылок
        auto lowerHelp=lower_bound(intN.begin(),intN.end(),*it);
        auto upperHelp=upper_bound(intN.begin(),intN.end(),*it);
        if(*it==*lowerHelp)
            cout << lowerHelp-intN.begin()+1 << " " <<upperHelp-intN.begin()-1+1 <<endl;
        else
            cout << 0 <<endl;
    }
 
}
0
24.01.2015, 03:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2015, 03:17
Помогаю со студенческими работами здесь

Совет по программе
Здравствуйте! Так уж получилось, что никогда ничего такого не программировал, но сделать надо....

Нужен совет
Вообщем написал программу, вкратце : сущ-ет класс человек, а классы менеджер, рабочий и ученый...

Нужен совет!
Доброго времени суток! Возможно таких тем как эта было уже миллион.. но всё же, хотелось бы...

Нужен совет:
я учусь в 2-ом курсе на программиста у меня есть базовые знание c++,STL до сих пор работал...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru