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

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

26.11.2017, 01:42. Показов 12985. Ответов 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...

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

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

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

16
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
26.11.2017, 01:51 2
Лучший ответ Сообщение было отмечено 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
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
26.11.2017, 02:26 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
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  [ТС] 4
Еще не разобралась как тут можно вставлять код, так что просто напишу, у меня не получается тогда соединить две части.

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
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
27.11.2017, 19:21 5
STerr, почитайте об области видимости в C++ и возьмите готовую программу с поста №3.
0
1375 / 519 / 72
Регистрация: 21.07.2015
Сообщений: 1,304
27.11.2017, 19:26 6
Цитата Сообщение от 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
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
27.11.2017, 19:30 7
Цитата Сообщение от shmkv Посмотреть сообщение
Так-то все делается одной строчкой:
Только вот преподаватели в ВУЗах до сих пор не в курсе, что появился C++ и его уже даже стандартизировали. Так что одной строчкой им правоту не доказать.
0
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
27.11.2017, 19:32 8
Лучший ответ Сообщение было отмечено 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
1375 / 519 / 72
Регистрация: 21.07.2015
Сообщений: 1,304
27.11.2017, 19:33 9
Цитата Сообщение от Nishen Посмотреть сообщение
Только вот преподаватели в ВУЗах до сих пор не в курсе, что появился C++ и его уже даже стандартизировали
Если вы учились в таком вузе, то я лишь могу посочувствовать.
0
Nishen
27.11.2017, 19:36
  #10

Не по теме:

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

0
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 7
27.11.2017, 19:53  [ТС] 11
Цитата Сообщение от 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
1375 / 519 / 72
Регистрация: 21.07.2015
Сообщений: 1,304
27.11.2017, 19:54 12
Цитата Сообщение от STerr Посмотреть сообщение
Возможно ли подобное сделать с помощью bool?
Я тебе привел решение с bool.
0
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
27.11.2017, 20:08 13
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 14
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
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
27.11.2017, 20:11 15
del
0
1375 / 519 / 72
Регистрация: 21.07.2015
Сообщений: 1,304
27.11.2017, 20:15 16
Цитата Сообщение от QuakerRUS Посмотреть сообщение
господа, я конечно все понимаю, но ТС не нужна сортировка.


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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала согласования+ стартер fast регистров. Файлы прилагаю. . . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru