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

Цикл-проверка на возрастание

20.04.2018, 17:38. Показов 3547. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сделал проверку на ввод чисел по возрастанию,вот только хотелось сделать так,чтобы если числа введены не по возрастанию,то ввести числа заново. У меня получилось,только не совсем корректно. Проблема с while(!(i == (dequeSize - 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
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
#include <iostream>
#include <deque>          
#include <string> 
#include <windows.h>
#include <cstdlib>
#include <algorithm>
#include <functional>
 
using namespace std;
 
 
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int i = 0;
int u = 0;
const int dequeSize = 10;
 
//Первый дек   
std::deque<int> myDeque(dequeSize);
 
cout << "Введите элементы дека" << endl;
for (i = 0; i<dequeSize; i++)
{
    cout << "Введенный дек [" << i << "] = ";
    while(!(cin>>myDeque[i])) 
{
    cout<<"~~~~~~~~~~~~~"<<endl;
    cout<<"ОШИБКА"<<endl;
    cout<<"Введите число:  ";
    cout<<endl<<endl<<endl<<endl;
    cin.clear(); 
    cin.sync();  
}
 
}
 
 
 
for (i = 0; i < (dequeSize - 1); i++)
 
    if (myDeque[i] > myDeque[i + 1])
        break;
 
if (i == (dequeSize - 1)){
 
    cout << "Sorted";
}else{
 
    cout << "Not Sorted";
 
}
 
//////Проблема Здесь//////
 
 
while(!(i == (dequeSize - 1))){
 
    cout << "Введите элементы дека" << endl;
for (i = 0; i<dequeSize; i++)
{
    cout << "Введенный дек [" << i << "] = ";
    while(!(cin>>myDeque[i])) 
{
    cout<<"~~~~~~~~~~~~~"<<endl;
    cout<<"ОШИБКА"<<endl;
    cout<<"Введите число:  ";
    cout<<endl<<endl<<endl<<endl;
    cin.clear(); 
    cin.sync();  
}
}
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2018, 17:38
Ответы с готовыми решениями:

Проверка на возрастание
Дана задача: Пользователь вводит последовательность температур. и нужно проверить яв-ся ли она...

Проверка числа на возрастание
Вот код: $c = 70; $var = 20; $f_1 = substr( $count, -1, 1 ); if(...

Проверка на возрастание числовой последовательности
доброго времени суток, возникает ошибка при решении задачи : сделал так :...

Смешанные алгоритмы. Проверка последовательности на возрастание
Здравствуйте, помогите, пожалуйста, решить. Дана последовательность вещественных чисел....

5
Заблокирован
20.04.2018, 18:34 2
Зачем вводить элементы, а потом проверять? Это можно делать сразу. Смотрим на текущий элемент и на предыдущий. При необходимости начинаем ввод заново.
0
3 / 3 / 2
Регистрация: 11.04.2018
Сообщений: 38
20.04.2018, 18:49 3
Цитата Сообщение от lkruk Посмотреть сообщение
Суть проблемы в бесконечности цикла.
Потому что в этом цикле нет проверки на возрастание. Лучше начать этот цикл до первого ввода данных, тогда ненужно будет повторять блок ввода данных. Программа станет короче. Можно использовать цикл do while.
0
0 / 0 / 0
Регистрация: 14.10.2017
Сообщений: 94
20.04.2018, 20:43  [ТС] 4
Цитата Сообщение от student8102 Посмотреть сообщение
Зачем вводить элементы, а потом проверять? Это можно делать сразу. Смотрим на текущий элемент и на предыдущий. При необходимости начинаем ввод заново.



Цитата Сообщение от Фортунатов Посмотреть сообщение
Потому что в этом цикле нет проверки на возрастание. Лучше начать этот цикл до первого ввода данных, тогда ненужно будет повторять блок ввода данных. Программа станет короче. Можно использовать цикл do while.
Попробую,отпишусь.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.04.2018, 21:28 5
Лучший ответ Сообщение было отмечено lkruk как решение

Решение

если строго по возрастанию можно так (если нужно по неубыванию уберите знак = в строке 20)

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
#include <iostream>
using namespace std;
 
int main()
{
    int n, i=0;
    cout << "Enter n: "; cin >> n;
 
    double*a = new double[n];
    
    while (i!=n)
    {
        
    cout <<"Enter elements:\n";
    cin >>a[0];
    
    for (i = 1; i < n; i++)
    {
      cin >>a[i];
      if (a[i]<=a[i-1]) break;      
    }      
    }
    
    for (i = 0; i < n; i++)
      cout <<a[i]<<" ";
      cout <<endl;
 
    delete[]a;
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 14.10.2017
Сообщений: 94
20.04.2018, 21:56  [ТС] 6
Спасибо
0
20.04.2018, 21:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2018, 21:56
Помогаю со студенческими работами здесь

Проверка сортировки массива на возрастание/убывание
Всем Привет! С Праздниками Всех! сделал программу и в ней 2 функции которые должны делать...

Цикл for проверка 0
Здравствуйте подскажите если не трудно. Пишу программу и нужно чтобы вводимые данные проверялись на...

Проверка графа на цикл
Как проверить графф на цикл? #define _CRT_SECURE_N0_WARNINGS #include &lt;stdio.h&gt; #include...

Создать программу по всем 3 видам циклов...цикл с параметром,цикл с условием,цикл,и цикл с предусловием...
Найти сумму чисел 1 в квадрате до 10 c квадрате...операцию возведению в степень не использовать...


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

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