Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 37

Не выполняется логический оператор &&

28.06.2017, 10:39. Показов 3738. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. В данном коде
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
#include <iostream>
#include <string>
#include <cstdlib>
 
 
using namespace std;
int main(){
    setlocale (LC_ALL, "");
    system ("color 0a");
 
    // ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ;
    string approve;
    char log;
    char pass;
    int count = 0; //счетчик кол-ва попыток входа;
 
Begin1:
    std::cout << "+---------------------------------------------+" << endl;
    std::cout << "|    ПРОГРАММА ВВОДА ДАННЫХ ОБ КОМПЬЮТЕРАХ    |" << endl;
    std::cout << "+---------------------------------------------+" << endl;
    std::cout << endl;
    std::cout << ">> LARSSON Ltd.," << endl;
    std::cout << "Пожалуйста авторизуйтесь в системе!";
    std::cout << endl;
    log = '1';
    std::cout << "Вы согласны? (yes/no): ";
    std::cin >> approve;
    if (approve == "yes" || approve=="y") {goto yes;}
    if (approve == "no" || approve=="n")  {goto no;}
    if (!(approve == "yes" || approve == "y" || approve == "no" || approve == "n")) {goto eRo1;}
    if ((!(approve == "yes" || approve == "y" || approve == "no" || approve == "n")) && (count > 4)) {goto eRo2;}
eRo1:
        cout << endl;
        system ("cls");
        cout << "******************************************" << endl;
        cout << "**** СООБЩЕНИЕ ОБ ОШИБКЕ ВВОДА ДАННЫХ ****" << endl;
        cout << "******************************************" << endl;
        cout << endl;
        cout << "ВЫБРАН НЕСУЩЕСТВУЮЩИЙ ВАРИАНТ ОТВЕТА" << endl;
        cout << endl << endl;
        count ++;
        cout << "Количество попыток ввода данных: " << count << endl;
        goto Begin1;
eRo2:
        system ("cls");
        cout << ">>>>>>> Сообщене о превышении числа счетчика";
        cout << endl;
        cout << "Вы превысили допустимое количество попыток ввода данных" << endl;
        system ("echo Нажмите любую клавишу");
        system ("pause");
        count = 0;
        goto Begin1;
 
yes: {
        cout <<" Вы выбрали " << approve << endl << log << endl;
        return 0;
        }
no: {
        cout << "Вы отказались " << approve << endl;
        return 0;}
}
не выполняется строка
C++
1
if ((!(approve == "yes" || approve == "y" || approve == "no" || approve == "n")) && (count > 4)) {goto eRo2;}
По идее, если вводить неправильное значение, а так же при достижении числа попыток 4 (count =4) программа должна передавать управление на eRo2, а count должен быть снова равен 0. Но управление переходит на eRo1, а count постоянно увеличивается.

Добавлено через 7 минут
Нашел в чем причина. Я поменял местами
C++
1
2
 if (!(approve == "yes" || approve == "y" || approve == "no" || approve == "n")) {goto eRo1;}
 if ((!(approve == "yes" || approve == "y" || approve == "no" || approve == "n")) && (count > 4)) {goto eRo2;}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.06.2017, 10:39
Ответы с готовыми решениями:

Ошибка: multiple definition of `void std::swap<A>(A&amp;, A&amp;)
Хочу специализировать swap для своего класса. Получаю ошибку. Вот код:#ifndef A_H #define A_H #include &lt;string&gt; class A ...

Чем оператор || отличается от оператора && ?
Приведите простые примеры, никак до мозгов не доходит)

Оператор if и логическая операция И (AND) &&
Вод подскажите что будет быстрей обрабатываться процессором: if(!a&amp;&amp;!b) { a+b; } или

33
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 37
28.06.2017, 15:20  [ТС]
Студворк — интернет-сервис помощи студентам
Я учусь по книге Герберта Шильдта (второе издание). Это хорошая книга?...

Добавлено через 30 секунд
в ней 663 страницы
0
68 / 51 / 27
Регистрация: 27.04.2015
Сообщений: 203
28.06.2017, 15:28
Не читал. Но сейчас посмотрел и конкретно про goto он высказывается очень нейтрально, что неправильно. И не предлагает как Прата способы замены тех или иных приемов для которых такие люди, как ты, привыкли использовать goto.
Вот и делай выводы.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
28.06.2017, 15:42
Цитата Сообщение от alexey15 Посмотреть сообщение
Но тут уж как программист сам захочет, так и напишет.
В том случае, если больше этот код никто никогда использовать не будет. А то иногда приходилось "обновлять" программы, создавая их заново, приблизительно сохраняя внешний вид и примерную логику работы, и не копируя ни строчки кода (хотя он имелся и его разрешено было использовать).
0
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 37
28.06.2017, 15:44  [ТС]
Не понимаю, почему компилятор не принимает return 0? Если убрать 0 то все работает.
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <iostream>
#include <string>
#include <cstdlib>
 
void message ();
void eDText ();
using namespace std;
string approve;
int main(){
    string pC[5][5];
    setlocale (LC_ALL, "");
    system ("color 0a");
 
    // ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ;
    char log;
    char pass;
    int count = 0; //счетчик кол-ва попыток входа;
 
Begin1:
    message ();
    std::cout << "+---------------------------------------------+" << endl;
    std::cout << "|    ПРОГРАММА ВВОДА ДАННЫХ О КОМПЬЮТЕРАХ    |" << endl;
    std::cout << "+---------------------------------------------+" << endl;
    std::cout << endl;
    std::cout << ">> LARSSON Ltd.," << endl;
    std::cout << "Пожалуйста авторизуйтесь в системе!";
    std::cout << endl;
    log = '1'; // Метка для вставки в сбойные участки программы
    std::cout << "Вы согласны? (yes/no): ";
    std::cin >> approve;
    if (approve == "yes" || approve=="y") {goto sProg;} // Логическое или. Пользователь может ввести YES а может Y.
    if (approve == "no" || approve=="n")  {goto nProg;} // Логическое или. Пользователь может ввести NO а может N.
    if ((!(approve == "yes" || approve == "y" || approve == "no" || approve == "n")) && (count > 4)) {goto eRo2;} //Если более 4 раз ввесли неверно
    if (!(approve == "yes" || approve == "y" || approve == "no" || approve == "n")) {goto eRo1;} // Если до 4 раз ввели неверно
eRo1: // Подпрограмма вывода сообщения ошибки ввода данных до 4 раз
        cout << endl;
        system ("cls");
        cout << "******************************************" << endl;
        cout << "**** СООБЩЕНИЕ ОБ ОШИБКЕ ВВОДА ДАННЫХ ****" << endl;
        cout << "******************************************" << endl;
        cout << endl;
        cout << "ВЫБРАН НЕСУЩЕСТВУЮЩИЙ ВАРИАНТ ОТВЕТА" << endl;
        cout << endl << endl;
        count ++; // Счетчик, считает сколько раз ввод был неверным
        cout << "Количество попыток ввода данных: " << count << endl;
        goto Begin1;
eRo2: // Подпрограмма вывода сообщения ошибки ввода более 4 раз
        system ("cls");
        cout << ">>>>>>> Сообщене о превышении числа счетчика";
        cout << endl;
        cout << "Вы превысили допустимое количество попыток ввода данных" << endl;
        system ("echo Нажмите любую клавишу");
        system ("pause");
        count = 0;
        goto Begin1;
 
// Если ввели YES или Y
sProg: {
                    for (int i = 0; i < 5; i++){
                    for (int j = 0; j < 5; j++){
                    pC[i][j] = "String";
                    }
                    }
        system ("cls");
        system ("color 0f");
        cout << "####################################################################" << endl;
        cout << "####################################################################" << endl;
        cout << "LARSSON Co., " << endl;
        cout << endl << endl << endl;
        cout << "ОБОРУДОВАНИЕ\t ИНВ.НОМЕР\t КОЛИЧЕСТВО\t СТОИМОСТЬ\t СРОК СЛУЖБЫ\t" << endl;
                for (int i = 0; i < 5; i++){
                for (int j = 0; j < 5; j++){
            cout << pC[i][j] << "\t\t";
                }
                cout << endl;
                }
 
 
 
        return 0;
        }
// Если ввели NO или N
nProg: {
        string nProgApprove;
        system ("cls");
        cout << "Вы отказались " << approve << endl;
        cout << "Желаете произвести редактирование файла данных? (Y/N)" << endl;
        cout << endl;
        cin >> nProgApprove;
        if (nProgApprove == "Y" || nProgApprove == "YES" || nProgApprove == "yes" || nProgApprove == "y") {eDText();}
        if (!(nProgApprove == "Y" || nProgApprove == "YES" || nProgApprove == "yes" || nProgApprove == "y")) {goto Begin1;}
        return 0;
        }
}
 
void eDText ()
{
        system ("cls");
        cout << "Инициализация....." << endl;
        cout << endl;
        cout << "Что желаете редактировать?" << endl;
        cout << "1. ОБОРУДОВАНИЕ" << endl;
        cout << "2. ИНВ. НОМЕР " << endl;
        cout << "3. КОЛИЧЕСТВО" << endl;
        cout << "4. СТОИМОСТЬ" << endl;
        cout << "5. СРОК СЛУЖБЫ" << endl;
       [B][U][COLOR="Red"] return 0;[/COLOR][/U][/B]
}
// Подпрограмма для теста
void message ()
{
    std::cout << "+---------------------------------------------+" << endl;
    std::cout << "|    РАБОТАЕТ ПОДПРОГРАММА                    |" << endl;
    std::cout << "+---------------------------------------------+" << endl;
    std::cout << endl;
    std::cout << endl;
   }
Добавлено через 37 секунд
строчка 107
0
13 / 14 / 4
Регистрация: 10.10.2014
Сообщений: 109
28.06.2017, 15:45
Не стоит только думать о себе, если вы для себя программируете - пожалуйста, если хотите работать в будущем - потом будут просто переучивать насильно на функции и процедуры.
Тем более в ООП на goto точно не выживете)

Функции/процедуры - основа, которую знать необходимо. Не надо сейчас смотреть Бейсик или С++ или Java.. Просто поймите, что такое Функция и процедура - дальше проще будет)
0
68 / 51 / 27
Регистрация: 27.04.2015
Сообщений: 203
28.06.2017, 15:46
функция void на то и void, что она ничего не возвращает. Либо замени на int, либо убери return вообще.
0
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 37
28.06.2017, 15:49  [ТС]
А если бы у меня были аргументы
C++
1
void eDText (какие-то аргументы)
то return был бы нужен? По логике вроде как нет.
0
13 / 14 / 4
Регистрация: 10.10.2014
Сообщений: 109
28.06.2017, 15:51
Авввтоооор, призываю вас еще раз посмотреть уроки или прочитать материалы. Не путайте себя:
Пример:
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
28.06.2017, 15:53
Вот связался с функциями - и погряз в ретурнах. Говорили тебе - не используй функции, пиши с гоуту и джампами. Заодно и на колл-конвеншионах сэкономишь.
0
68 / 51 / 27
Регистрация: 27.04.2015
Сообщений: 203
28.06.2017, 15:53
нет, return нужен чтобы вернуть результат работы функции, если в объявлении ты указал что она возвращает что-то. При этом return должна возвращать именно тот тип данных, что указан в объявлении.
0
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 37
28.06.2017, 15:57  [ТС]
А что будет, если return во всех типах процедур ставить без значения?
0
68 / 51 / 27
Регистрация: 27.04.2015
Сообщений: 203
28.06.2017, 16:02
https://msdn.microsoft.com/ru-... ktdwf.aspx
Гугл фор ю. Не задавай глупых вопросов. Лучше иди читай книжки и пиши по новой простые программки, используя новый подход. А будут конкретные проблемы - возвращайся и спрашивай.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
28.06.2017, 16:03
alexey15, просто надо объявлять тип возвращаемого значения void, в этом случае в конце функции возвращать ничего не нужно, а при необходимости выхода посередине функции просто вызвать return;
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.06.2017, 16:11
Цитата Сообщение от alexey15 Посмотреть сообщение
А чем моя культура программирования плохая?
гугл подскажет, почему не любят goto

а так вкратце:
с вашим подходом любой, даже не сильно средненький проект
быстро достигнет состояния:
"говнокод в терминальной стадии".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.06.2017, 16:11

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration?
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp; outs, const Rational&amp;); - invalid function declaration. ...

Почему условие "a && b == 0" не выполняется?
решил вспомнить c++, начал что то писать и непонятка void __fastcall TForm1::Button1Click(TObject *Sender) { int a=0,b=0,s=0; ...

В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура x*x+y*y<25&&x*x+y*y>=9&
В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура...

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка?
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size; ix++) cout &lt;&lt; setw(5) &lt;&lt; ptr; // вывод элементов...

Оператор &&
В C# при использовании оператор &amp;&amp;, если первая операция будет false, то проверка второй операции не выполняется. А как записать на С++...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru