Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 23.08.2019
Сообщений: 17
1

Найти индексы вхождения числа в последовательность

30.08.2019, 13:36. Показов 1332. Ответов 12

Всем привет. Помагите решить задачу.
Задана длина N последовательности целых чисел a и сама последовательность. После этого задается некоторое число х. Распечатать все индексы вхождения числа х в последовательность а, начиная с последнего. Если искомый элемент в последовательности вовсе отсутствует, вывести -1. В этой задаче элементы нумеруются с единицы!

Вход
5
1 2 3 4 5
2

10
1 2 3 4 5 6 1 1 2 1
1

2
1 2
3

3
5 5 5
5

Выход
2

10 8 7 1

-1

3 2 1

Добавлено через 9 минут
Использвав только <iostream> и <vector>
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.08.2019, 13:36
Ответы с готовыми решениями:

Распечатать все индексы вхождения числа х в последовательность а, начиная с последнего
Задана длина N последовательности целых чисел a и сама последовательность. После этого задается...

Найти индексы первого вхождения максимального элемента
Задача №1 Найдите индексы первого вхождения максимального элемента. Формат входных данных...

Найти индексы i и j для которых существует наибольшая последовательность a[i]-a[i+1]+a[i+2]-a[i+3]. +/-a[j]
Найти индексы i и j для которых существует наибольшая последовательность a-a+a-a... +/-a я...

В заданном массиве найти индексы элементов, формирующих монотонно неувеличивающуюся последовательность чисел -
В предоставленом одномерном масиве определить индексы елементов,которые формируют пследовательность...

12
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
30.08.2019, 17:16 2
А в чем, собственно, проблема? Вы не знаете как работает оператор сравнения?
0
170 / 122 / 61
Регистрация: 06.02.2015
Сообщений: 300
30.08.2019, 19:00 3
1 ПомОгите !
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
36
37
38
39
40
#include <iostream>
#include <vector>
 
using namespace std;
 
void myfunc(vector<int> vec,int x) {
    int flag = 0;
    
    for (size_t i = vec.size()-1; i >= 0; i--) {
        if (vec[i] == x) {
            cout << i+1  << " ";
            flag = 1;
        }
 
        if (i == 0) {
            break;
        }
    }
 
    if (flag == 0) {
        cout << "-1";
    }
 
    cout << endl;
}
 
int main() {
    vector <int> myvec1 = { 1, 2, 3, 4, 5 };
    vector <int> myvec2 = { 1, 2, 3, 4, 5, 6, 1, 1, 2, 1 };
    vector <int> myvec3 = { 1, 2 };
    vector <int> myvec4 = { 5, 5, 5 };
    
    myfunc(myvec1, 2);
    myfunc(myvec2, 1);
    myfunc(myvec3, 3);
    myfunc(myvec4, 5);
 
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 23.08.2019
Сообщений: 17
30.08.2019, 19:02  [ТС] 4
А зачем предлагать если это не че не даст
0
170 / 122 / 61
Регистрация: 06.02.2015
Сообщений: 300
30.08.2019, 19:06 5
чтобы навести на мысль как делать и чтобы написал своими силами
0
348 / 282 / 144
Регистрация: 08.04.2013
Сообщений: 1,230
30.08.2019, 19:32 6
Crips_Killers, не стоит оперировать терминами последовательность целых чисел, если ваши примеры таковыми не являются 1 2 3 4 5 6 1 1 2 1 и т.п.
0
6500 / 4422 / 2531
Регистрация: 18.12.2017
Сообщений: 13,827
30.08.2019, 20:41 7
Цитата Сообщение от marat_miaki Посмотреть сообщение
не стоит оперировать терминами последовательность целых чисел, если ваши примеры таковыми не являются 1 2 3 4 5 6 1 1 2 1 и т.п.
по каким таким соображениям не являются ?
Цитата Сообщение от Andrey B Посмотреть сообщение
if (i == 0) {
* * * * * * break;
* * * * }
это зачем ? цикл и так на нуле завершается

Crips_Killers,
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
#include <iostream>
using namespace std;
 
int main()
{
    int N, x, k=0;
    cin >> N;
 
    int*a = new int[N];
    
    for (int i = 0; i < N; i++)
        cin >> a[i];
        
    cin >> x;    
        
    for (int i = N-1; i >= 0; i--)
        if (a[i]==x) {k=1;cout << i+1 << " ";}
    cout << "\n";
    
    if(!k) cout << -1 << "\n";        
    
    delete[]a;
system("pause");
return 0;
}
1
170 / 122 / 61
Регистрация: 06.02.2015
Сообщений: 300
30.08.2019, 20:47 8
Yetty, ТС писал про использование <vector>. При моей реализации таким костылем "решил" проблему выхода за границы вектора. Подскажите для моего личного саморазвития как можно было исправить ? Спасибо.
0
6500 / 4422 / 2531
Регистрация: 18.12.2017
Сообщений: 13,827
30.08.2019, 20:52 9
Цитата Сообщение от Andrey B Посмотреть сообщение
При моей реализации таким костылем "решил" проблему выхода за границы вектора.
нет там никакой проблемы. определяется размер вектора и идёт цикл от vec.size()-1 до 0
0
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
30.08.2019, 21:01 10
Цитата Сообщение от Yetty Посмотреть сообщение
нет там никакой проблемы
На самом деле есть. Для переменной i Andrey B использовал тип size_t, из-за чего, при последнем прохождении цикла и дикрементации unsigned int переменная улетела в uint_max и цикла начался заново, запросив "плохой" индекс у вектора.

Andrey B, в таких случаях лучше использовать int, думаю, но, может быть, есть другой способ.
2
6500 / 4422 / 2531
Регистрация: 18.12.2017
Сообщений: 13,827
30.08.2019, 21:18 11
Цитата Сообщение от Cortas Посмотреть сообщение
На самом деле есть.
не заметил что там size_t. для корректной работы нужен int. разве цикл начнётся заново в случае size_t ?
0
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
30.08.2019, 21:59 12
Цитата Сообщение от Yetty Посмотреть сообщение
разве цикл начнётся заново в случае size_t ?
Ну, по сути, это UB
C++
1
2
3
size_t i = 0;
i--;
cout << i;
У меня, во всяком случае, переменная выставляет все биты в единицу. Если такое произойдет, то да, цикл будет вечным.
0
6500 / 4422 / 2531
Регистрация: 18.12.2017
Сообщений: 13,827
30.08.2019, 22:44 13
Цитата Сообщение от Cortas Посмотреть сообщение
может быть, есть другой способ
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>
using namespace std;
 
int main()
{
    size_t N;
    int x, k=0;
    cin >> N;
 
    vector <int> a(N);
    
    for (size_t i = 0; i < N; i++)
        cin >> a[i];
        
    cin >> x;    
        
    for (size_t i = N; i >= 1; i--)
        if (a[i-1]==x) {k=1;cout << i << " ";}    
    
    if(!k) cout << -1;     
    cout << "\n";
    
system("pause");
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.08.2019, 22:44

Массив A содержит только два одинаковых числа. Найти эти числа и указать их индексы ошибка
Массив А содержит только два одинаковых числа. Найти эти числа и указать их индексы. #include...

Задана последовательность слов. Определить частоту вхождения каждого слова в последовательность.
Доделать программу, чтобы работала как надо Задана последовательность слов. Определить частоту...

Найти номер первого вхождения заданного числа в массиве
1. Вычислить среднее арифметическое квадратов положительных элементов. 2. Определить количество...

Найти такие числа, десятичное представление которых содержит убывающую последовательность
Среди простых чисел, не превосходящих заданного числа N, найти такие, десятичное представление...


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

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

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