Форум программистов, компьютерный форум, киберфорум С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/64: Рейтинг темы: голосов - 64, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 7

Проверить, больше ли каждый последующий элемент массива, чем предыдущий

26.11.2017, 01:42. Показов 13117. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста, уперлась в проблему понимания массивов. Точнее что такое массив я, вроде понимаю, понимаю как его вывести, посмотрела кучу видео, но вот задачи на взаимосвязи между элементами массива не идут никак(

Вот задача которая у меня не идет уже часов 7 (хотя чутье подсказывает что тут должно быть весьма простое решение):

Есть массив из 5 чисел. Пользователя просят ввести эти 5 чисел (до сюда у меня все работает). А потом программа должна проверить больше ли каждое последующее число предыдущего, к примеру, 2 5 11 14 20, или нет, то есть, 2 7 5 13 15 (5<7).

Я не знаю как это записать, я пробовала что то типо if (arr[i] < arr [i+1]), то cout << "" << endl;
но с этим есть проблема когда доходим до крайнего, и я не понимаю в какую часть кода это вставлять. Куда не пробовала вставить везде она в любом случае сразу выдавала cout << ""... не важно как выглядели цифры, условие просто пропускалось.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.11.2017, 01:42
Ответы с готовыми решениями:

Необходимо каждый элемент массива сравнить с его 8 соседями и если он больше, чем любой из элементов с которыми сравнивается, его распечатать.
Всем привет, помогите решить следующую задачу, есть массив: 3 4 5 6 7 8 9 4 2 10 44 2 2 3 4 5 6 1 2 9 2 2 42 0 1 4 5 8 7 2 9 1 2...

Каждый элемент массива модуль которого больше 10 обнулить
Ввести двумерный массив A(N*M). Каждый элемент, чей модуль больше 10 обнулить. Массив вывести до и после преобразования.

Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы
ребят не могу подобрать алгоритм ,такой что когда елемент одного массива больше елемента другого массива,то тот елемент что больше...

16
 Аватар для QuakerRUS
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
26.11.2017, 01:51
Лучший ответ Сообщение было отмечено STerr как решение

Решение

C++ Скопировано
1
2
3
4
5
6
7
8
9
if (i > 0)
{
    if (arr[i] > arr[i - 1])
        cout << ">";
    else if (arr[i] < arr[i - 1])
        cout << "<";
    else
        cout << "=";
}
1
 Аватар для Nishen
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
26.11.2017, 02:26
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
85
#include <iostream>
#include <random>
#include <vector>
 
void fillArray( std::vector<int>& array, int lowerBound, int upperBound );
void printArray( std::vector<int>& array );
bool isSorted( std::vector<int>& array );
 
int main( ) {
 
    std::size_t size { 10 };
    std::vector<int> array( size );
 
    std::cout
        << "Please, enter elements of array: ";
 
    for ( auto& element : array ) {
 
        std::cin
            >> element;
 
    }
 
    //fillArray( array, 0, 100 );
    printArray( array );
 
    std::cout
        << std::endl;
 
    if ( isSorted( array ) ) {
 
        std::cout
            << "This array sorted." << std::endl;
 
    } else {
 
        std::cout
            << "This array don't sorted." << std::endl;
 
    }
 
    return 0;
 
}
 
void fillArray( std::vector<int>& array, int lowerBound, int upperBound ) {
 
    std::random_device rd;
    std::mt19937 gen( rd( ) );
    std::uniform_int_distribution<int> dist( lowerBound, upperBound );
 
    for ( auto& element : array ) {
 
        element = dist( gen );
 
    }
 
}
 
void printArray( std::vector<int>& array ) {
 
    for ( const auto& element : array ) {
 
        std::cout
            << element << " ";
 
    }
 
}
 
bool isSorted( std::vector<int>& array ) {
 
    for ( std::size_t i { 0 }; i < array.size( ) - 1; ++i ) {
 
        if ( array.at( i ) > array.at( i + 1 ) ) {
 
            return false;
 
        }
 
    }
 
    return true;
 
}
1
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 7
27.11.2017, 19:16  [ТС]
Еще не разобралась как тут можно вставлять код, так что просто напишу, у меня не получается тогда соединить две части.

C++ Скопировано
1
2
3
4
5
const int n=5;
int a[n];
cout << "Please enter the elements of array: " << endl;
for (int i=0; i<n; i++)
cin >> a[n];
Это чисто чтобы заполнить массив. Если я потом вставляю ваше продолжение:

C++ Скопировано
1
2
3
4
5
6
if (arr[i] > arr[i - 1])
        cout << ">";
    else if (arr[i] < arr[i - 1])
        cout << "<";
    else
        cout << "=";
Он мне пишет ошибку типо : "i" undeclared identifier, хотя еще в первом for у меня уже написано int i=0. Он не относится к i как к индексу. Подскажите пожалуйста, что я не так делаю?)
0
 Аватар для Nishen
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
27.11.2017, 19:21
STerr, почитайте об области видимости в C++ и возьмите готовую программу с поста №3.
0
1377 / 521 / 72
Регистрация: 21.07.2015
Сообщений: 1,304
27.11.2017, 19:26
Цитата Сообщение от STerr Посмотреть сообщение
Он мне пишет ошибку типо : "i" undeclared identifier, хотя еще в первом for у меня уже написано int i=0. Он не относится к i как к индексу. Подскажите пожалуйста, что я не так делаю?)
1. int i внутри for виден только внутри for
2. код ниже проверяет только для одного элемента
3. если вынести i из цикла, то после for i==n, а это выход за пределы массива.

Добавлено через 4 минуты
Так-то все делается одной строчкой:
C++ Скопировано
1
std::cout << (std::is_sorted(&a[0], &a[n]) ? "YES": "NO");
еще вверху нужно
C++ Скопировано
1
#include <algorithm>
добавить.
0
 Аватар для Nishen
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
27.11.2017, 19:30
Цитата Сообщение от shmkv Посмотреть сообщение
Так-то все делается одной строчкой:
Только вот преподаватели в ВУЗах до сих пор не в курсе, что появился C++ и его уже даже стандартизировали. Так что одной строчкой им правоту не доказать.
0
 Аватар для QuakerRUS
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
27.11.2017, 19:32
Лучший ответ Сообщение было отмечено STerr как решение

Решение

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
#include <iostream>
 
using namespace std;
 
int main()
{
    const int n = 5;
    int a[n];
    cout << "Please enter the elements of array: " << endl;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
 
        if (i > 0)
        {
            if (a[i] > a[i - 1])
                cout << a[i] << " > " << a[i - 1] << endl;
            else if (a[i] < a[i - 1])
                cout << a[i] << " < " << a[i - 1] << endl;
            else
                cout << a[i] << " = " << a[i - 1] << endl;
        }
    }
    
    system("pause");
    return 0;
}
1
1377 / 521 / 72
Регистрация: 21.07.2015
Сообщений: 1,304
27.11.2017, 19:33
Цитата Сообщение от Nishen Посмотреть сообщение
Только вот преподаватели в ВУЗах до сих пор не в курсе, что появился C++ и его уже даже стандартизировали
Если вы учились в таком вузе, то я лишь могу посочувствовать.
0
27.11.2017, 19:36

Не по теме:

Цитата Сообщение от shmkv Посмотреть сообщение
Если вы учились в таком вузе, то я лишь могу посочувствовать.
Можете посочувствовать себе и перечитать форум.

0
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 7
27.11.2017, 19:53  [ТС]
Цитата Сообщение от Nishen Посмотреть сообщение
STerr, почитайте об области видимости в C++ и возьмите готовую программу с поста №3.
Спасибо, про области видимости обязательно прочитаю, но программу готовую брать не буду. Как я уже писала, мы проходим С++ меньше месяца, и 90% написанного в 3 посте в глаза не видывали, упражнения в Ctrl+C Ctrl+V принесут в данной ситуации не столько пользы, сколько хотелось бы.

Добавлено через 7 минут
Цитата Сообщение от QuakerRUS Посмотреть сообщение
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
#include <iostream>
 
using namespace std;
 
int main()
{
    const int n = 5;
    int a[n];
    cout << "Please enter the elements of array: " << endl;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
 
        if (i > 0)
        {
            if (a[i] > a[i - 1])
                cout << a[i] << " > " << a[i - 1] << endl;
            else if (a[i] < a[i - 1])
                cout << a[i] << " < " << a[i - 1] << endl;
            else
                cout << a[i] << " = " << a[i - 1] << endl;
        }
    }
    
    system("pause");
    return 0;
}

Большое спасибо, но если писать так, то получается что программа проверяет по If каждое число и о каждом мне сообщает. Например, после введение 5 возрастающих чисел я вижу:
increasing set
increasing set
increasing set
increasing set
Если есть одно число меньше, то так:
increasing set
increasing set
diminishing set
increasing set

А мне бы хотелось чтобы она мне не на каждое число отчитывалась, а в целом, мол если хоть 1 число есть что нарушает ряд, то diminishing set, все возрастают, так increasing set.
Возможно ли подобное сделать с помощью bool?
Или для решения такой задачи нужны более обширное использования сложных функций?
0
1377 / 521 / 72
Регистрация: 21.07.2015
Сообщений: 1,304
27.11.2017, 19:54
Цитата Сообщение от STerr Посмотреть сообщение
Возможно ли подобное сделать с помощью bool?
Я тебе привел решение с bool.
0
 Аватар для QuakerRUS
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
27.11.2017, 20:08
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
#include <iostream>
 
using namespace std;
 
int main()
{
    const int n = 5;
    int a[n];
    bool increasing = 1;
    cout << "Please enter the elements of array: " << endl;
    for (int i = 0; i < n; i++)
        cin >> a[i];
 
    for (int i = 1; i < n; i++)
    {
        if (a[i] <= a[i - 1])
            increasing = 0;
    }
 
    if (increasing)
        cout << "Increasing set" << endl;
    else
        cout << "Diminishing set" << endl;
 
    system("pause");
    return 0;
}
Добавлено через 6 минут
STerr

если хоть 1 число есть что нарушает ряд, то diminishing set
Только это уже будет не "diminishing set". Может быть вам надо, чтобы писало diminishing set, когда все члены уменьшаются?
0
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
27.11.2017, 20:09
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// ввод
//............
 
bool is_sorted = true;
// Пропускаем один элемент, потом следим, что у нас всё должно
// быть отсортированно c помощью выражения  is_sorted в условии цикла
// Следим, чтобы текущий элемент был меньше предыдущего
for (size_t i = 1; is_sorted && i < n; i++)
{
   is_sorted = arr[i]>arr[i-1]; // если тут false, цикл завершится
}
// На первом же элементе, который меньше предыдущего, is_sorted становиться ложью
// Если же таковых не оказалось, значит, массив был просмотрен весь
std::cout<<(is_sorted?"Increasing":"Not increasing"); //Тернарный оператор
Советую прочесть про циклы и массивы ещё раз.

Цитата Сообщение от shmkv Посмотреть сообщение
Так-то все делается одной строчкой:
Для уровня ТС такое бесполезно, при том, что она учится.
Вот в реальном промышленном коде однострочник лучше, но тут он не нужен.
0
 Аватар для QuakerRUS
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
27.11.2017, 20:11
del
0
1377 / 521 / 72
Регистрация: 21.07.2015
Сообщений: 1,304
27.11.2017, 20:15
Цитата Сообщение от QuakerRUS Посмотреть сообщение
господа, я конечно все понимаю, но ТС не нужна сортировка.


Добавлено через 1 минуту
Цитата Сообщение от New man Посмотреть сообщение
Для уровня ТС такое бесполезно, при том, что она учится.
Спорный вопрос, смотря что конкретно хотел препод.
0
 Аватар для QuakerRUS
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
27.11.2017, 20:17
shmkv, извините, невнимательно прочел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2017, 20:17
Помогаю со студенческими работами здесь

Списки, каждый последующий элемент на единицу больше предыдущего
Привет всем!Только начала изучать пролог,вроде получается,но вот с этими задачами не справляюсь!Помогите,пожалуйста,решить!Заранее всем...

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

Сформировать матрицу так, чтобы каждый последующий элемент начиная со ворого был больше придыдущего на 5
написать программу формирования и вывода двумерного массива произвольного размера так, чтобы каждый последующий элемент начиная со ворого...

Проверить является ли каждый четный элемент массива больше двух его соседних элементов
Дан произвольных массив.Проверить является ли каждый четный элемент массива больше двух его соседних элементов. Помогите написать код плз)

Каждый элемент массива на единицу больше, чем квадратный корень из предыдущего, найти сумму всех элементов
Помогите с решением задачи на C#. Каждый элемент массива на единицу больше, чем квадратный корень из предыдущего. Первый = 1. Найти сумму...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер