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

Не выполняется условие в цикле while

16.10.2021, 14:27. Показов 732. Ответов 2

Author24 — интернет-сервис помощи студентам
не понимаю почему while(p ==! 5) (в 17 строке) исполняется только 1 раз, когда я использую void enter_user() (в 51 строке) код завершаеться когда должен возвращаться к int main() (в 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
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <iostream>   
#include <vector>     
#include <string>
#include <Windows.h>
using namespace std;  
 
 
int n = 0;
int m = 7;
void output_number();
void enter_user();
vector < vector <string> > a(1, vector <string>(m));
int main()
{
    SetConsoleOutputCP(1251);
    int p = 0;
    while(p ==! 5){
    cout << "Виберіть одне з запропонованих:" << endl;
    cout << "1) Вписати нового користувача" << endl;
    cout << "2) Знайти користувача за номером телефону" << endl;
    cout << "3) Знайти користувачів за місяцем їх народження" << endl;
    cout << "4) Знайти користувача за прізвищем" << endl;
    cout << "5) Вихід" << endl;
    cout << "для відповіді впишіть відповідну цифру" << endl;
    cin >> p;
 
    switch (p) {
    case 1:
        enter_user();
        break;
    case 2:
        output_number();
        break;
    case 3:
        break;
    case 4:
        break;
    case 5:
        cout << "Кінець програми" << endl;
        break;
    default:
        cout << "Невірна цифра" << endl;
        //break;
        
        }
    }
    
}
 
 
void enter_user()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    n++;
    vector < vector <string> > a(n, vector <string>(m)); // Объявление вектора на n строк по m элементов 
 
    for (int i = 0; i < n; i++) {
        // cout << "Впишіть прізвище, ім'я, по батькові, номер телефону та дату народження через пробіл чи Enter" << endl;
        for (int j = 0; j < 7; j++)
        {
            if (j == 0) {
                cout << "Впишіть прізвище, ім'я та по батькові через пробіл чи Enter" << endl;
 
            }
            if (j == 3) {
                cout << "Впишіть номер телефону" << endl;
 
            }
            if (j == 4) {
                cout << "Впишіть дату народження через пробіл чи Enter" << endl;
 
            }
            cin >> a[i][j];
        }
    }
    for (int i = 0; i < n; i++) // Цикл, который идёт по строкам
    {
        for (int j = 0; j < m; j++) // Цикл, который идёт по элементам
            cout << a[i][j] << ' '; // Вывод элементов i строки вектора
        cout << endl;
    }
}
    
void output_number() {
    string f;
    int k = 0;
    cin >> f;
    for (int i = 1; i < n; i++) {
        if (f == a[i][3]) {
            for (int j = 0; j < m; j++)
                cout << a[i][j] << ' ';
            cout << endl;
            k = 1;
        }
    }
    if (k == 0) {
        cout << "Користувача не найденно" << endl;
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2021, 14:27
Ответы с готовыми решениями:

Не выполняется условие в while цикле
Привет, пытаюсь протестировать код из книги, но у меня внезапно перестал правильно работать цикл. ...

Не выполняется условие в цикле for
Доброго времени суток. Почему не выполняется код в цикле for? #include &lt;iostream&gt; using...

Выполняется ли условие в цикле
Учебная программа взята из книги Шилдта. Программа определяет простые числа до 9 включительно, а...

Не выполняется условие в цикле
Доброго времени суток На форме &quot;Карточка занятий&quot; расположена кнопка, по нажатию которой...

2
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
16.10.2021, 14:31 2
Лучший ответ Сообщение было отмечено Zepopo как решение

Решение

Цитата Сообщение от Zepopo Посмотреть сообщение
p ==! 5
C++
1
!5
это ложь, т.е. ноль (любое значение не равное нулю - это истина, его отрицание - ложь).
Соответственно Вы проверяете условие p==0
Надо было писать
C++
1
p!=5
0
Заблокирован
16.10.2021, 14:32 3
Цитата Сообщение от Zepopo Посмотреть сообщение
while(p ==! 5)
как говорят в народе "эквивалентно" while(p ==0)
1
16.10.2021, 14:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2021, 14:32
Помогаю со студенческими работами здесь

Вывести на экран "условие выполняется", если все элементы массива положительные и "условие не выполняется", если это не так.
1)Тип массива вещественный.Число элементов 11. Вывести на экран &quot;условие выполняется&quot;, если все...

Если все элементы двумерного массива положительные, то вывести сообщение «УСЛОВИЕ ВЫПОЛНЯЕТСЯ», иначе «УСЛОВИЕ НЕ
3) Если все элементы двумерного массива положительные, то вывести сообщение «УСЛОВИЕ ВЫПОЛНЯЕТСЯ»,...

Написать λ -выражение, описывающее условие, которое проверяет список и выдает истину, если выполняется условие
Здравстуйте! Решите, пожалуйста, задачу на Lisp, не понимаю функциональный язык( А лабороторные...

Почему выполняется условие else, если выполнилось условие if?
При вводе буквы, которое есть в переменной word, по идеи, если такой буквы нету, то должно выдать...

Условие в цикле или цикл в цикле
При вводе данных в textbox2(Стоимость) и textbox1(Срок) и нажатии на кнопку формируется таблица...

Написать программу, которая в качестве результата дает истину, если выполняется заданное условие, или ложь, если условие
Написать программу, которая в качестве результата дает истину, если выполняется заданное условие,...


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

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

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