0 / 0 / 0
Регистрация: 11.11.2019
Сообщений: 29
1

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

11.11.2019, 22:03. Показов 2552. Ответов 3
Метки c++ (Все метки)

Разработать программу, которая в одномерном массиве действительных чисел (размер задайте произвольно) проводит заданные операции:
Вывести начальные индексы всех непрерывных последовательностей чисел со значениями, которые не увеличиваются.

Я правильно сделал ? Помогите пожалуйста)

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
#include <iostream>
#include <ctime>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
    //srand(time(0));
 
    const int size = 15;
    int arr[size];
    for (int i = 0; i < size; i++)
    {
        arr[i] = rand() % 17 -10 ;
        cout << "Начальный массив\t" << arr[i] << endl;
    }
    putchar('\n');
    putchar('\n');
    putchar('\n');
    putchar('\n');
    putchar('\n');
    for (int i = 0; i < size - 1; i++)
    {
        if (i == 0)
        {
            {
                if (arr[i + 1] >= arr[i])
                    printf("%d\n", i);
            }
        }
        else if (arr[i] < arr[i - 1] && arr[i] <= arr[i + 1])
        {
            {
            
                    printf("%d\n", i);
            }
        }
    }
 
    
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.11.2019, 22:03
Ответы с готовыми решениями:

Вывести начальные и конечные индексы индексы всех непрерывных знакопеременных последовательностей чисел
Даны 3 массива.Вывести начальные и конечные индексы индексы всех непрерывных знакопеременных...

Вывести начальные индексы всех непрерывных знакочередующихся последовательностей чисел
Объявить массив целых чисел и заполнить его случайными значениями с помощью функций srand() и...

Вывести начальные индексы всех непрерывных последовательностей неотрицательных чисел
Дан массив размером 100. Заполнить его случайными числами в диапазоне от -100 до 100. Вывести...

Вывести начальные индексы всех непрерывных знакопеременных последовательностей чисел
Объявить массив целых чисел и заполнить его случайными значениями. Размерность массива – 100,...

3
Мозгоправ
1729 / 1023 / 468
Регистрация: 01.10.2018
Сообщений: 2,137
Записей в блоге: 2
11.11.2019, 23:37 2
Цитата Сообщение от basddff Посмотреть сообщение
Я правильно сделал ?
Не-а. Неправильно. Вы её запускали? А с разными наборами данных?

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
#include <iostream>
#include <iomanip>
#include <ctime>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    srand((unsigned int)time(NULL));
 
    const int size = 15;
    int arr[size];
    cout << "Начальный массив\n";
    for (int i = 0; i < size; i++)
    {
        arr[i] = rand() % 17 - 10;
        cout << setw(4) << arr[i];
    }
    cout << endl;
    for (int i = 0; i < size; i++)
    {
        cout << setw(4) << i;
    }
    cout << "\t - индексы";
    puts("\n\n\n\n\n");
 
    bool up_seq = false;             // если true - последовательность возрастающая
    bool start_seq = true;           // флаг начала невозрастающей последовательности
    for (int i = 1; i < size; i++)
    {
        if (arr[i - 1] >= arr[i])    // если не возрастает
        {
            if (up_seq)              // но перед этим была возрастающая последовательность
            {
                up_seq = false;      // теперь началась невозрастающая последовательность
                start_seq = true;    // установить флаг
            }
        }
        else
        {
            up_seq = true;           // последовательность возрастающая
            start_seq = false;
        }
 
        if (start_seq)
        {
            cout << i - 1 << ' ';
            start_seq = false;
        }
    }
    cout  << endl;
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 11.11.2019
Сообщений: 29
12.11.2019, 17:06  [ТС] 3
L0M, Так у меня тоже самое что и у вас, только я не вывел индексы правильно понимаю? "Вы её запускали?" - конечно да. Ах да, еще я такого не учил bool up_seq = false; // если true - последовательность возрастающая
bool start_seq = true; // флаг начала невозрастающей последовательности
и все что дальше поэтому не до конца понимаю что написано а нужно обьяснить свою работу
Спасибо вам за ответ) В общем я сделал с числами которые не совсем случайные ( без srand(time(0)); ) и у меня последнее число
не 10, а 11 выходит. ( 0 3 5 7 10 ) а у меня 0 3 5 7 11

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
#include <iostream>
#include <ctime>
#include <stdio.h>
#include <stdlib.h>
#include <iomanip>
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
    //srand(time(0));
 
    const int size = 15;
    int arr[size];
    cout << "Начальный массив\n";
    for (int i = 0; i < size; i++)
    {
        arr[i] = rand() % 17 -10 ;
        cout << setw(4) << arr[i];
    }
    cout << endl;
    for (int i = 0; i < size; i++)
    {
        cout << setw(4) << i;
    }
    cout << "\t - индексы";
    putchar('\n');
    putchar('\n');
    putchar('\n');
    putchar('\n');
    putchar('\n');
    for (int i = 0; i < size - 1; i++)
    {
        if (i == 0)
        {
            {
                if (arr[i + 1] >= arr[i])
                    cout << i;
            }
        }
        else if (arr[i] <= arr[i - 1] && arr[i] <= arr[i + 1])
        {
            {
                cout << i - 1 << ' ';
            }
        }
    }
 
    cout << endl;
    return 0;
}
С типом данных bool не изучали
0
Мозгоправ
1729 / 1023 / 468
Регистрация: 01.10.2018
Сообщений: 2,137
Записей в блоге: 2
12.11.2019, 17:50 4
Лучший ответ Сообщение было отмечено basddff как решение

Решение

basddff, не может быть, что бы не изучали тип bool

Но, тем не менее...

Я вам там подправил. Теперь вроде работает.
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
#include <iostream>
#include <ctime>
#include <stdio.h>
#include <stdlib.h>
#include <iomanip>
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
    srand((unsigned int)time(NULL));
 
    const int size = 15;
    int arr[size];
    cout << "Начальный массив\n";
    for (int i = 0; i < size; i++)
    {
        arr[i] = rand() % 17 - 10;
        cout << setw(4) << arr[i];
    }
    cout << endl;
    for (int i = 0; i < size; i++)
    {
        cout << setw(4) << i;
    }
    cout << "\t - индексы";
    putchar('\n');
    putchar('\n');
    putchar('\n');
    putchar('\n');
    putchar('\n');
    for (int i = 0; i < size - 1; i++)
    {
        if (i == 0)
        {
            if (arr[i] >= arr[i + 1])
                cout << i << ' ';
        }
        else if (arr[i - 1] < arr[i] && arr[i] >= arr[i + 1])
        {
            cout << i << ' ';
        }
    }
 
    cout << endl;
    return 0;
}
Но тестировать надо обязательно на различных наборах данных. Не полагайтесь на rand(). Подбирайте различные варианты тестовых данных вручную. Особо уделяйте внимание граничным случаям.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2019, 17:50

В одномерном массиве вывести начальные индексы всех непрерывных знакопеременных последовательностей чисел
1. В одномерном массиве вывести начальные индексы всех непрерывных знакопеременных...

Вывести начальные индексы всех непрерывных последовательностей
(С)Вывести начальные индексы всех непрерывных последовательностей чисел с неувеличивающимися...

Вывести начальные индексы всех непрерывных последовательностей чисел с неувеличивающимися значениями
(СИ)Вывести начальные индексы всех непрерывных последовательностей чисел с не увеличивающимися...

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

Вывести начальные индексы всех непрерывных последовательностей отрицательных чисел
Вывести начальные индексы всех непрерывных последовательностей отрицательных чисел, длинна которых...

Вывести начальные индексы всех непрерывных последовательностей неотрицательных чисел, длина которых больше 5
Размерность массива 100 Диапазон значений -100 - 100 Что нужно сделать Вывести начальные индексы...


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

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

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