Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
b_d
4 / 2 / 0
Регистрация: 27.01.2014
Сообщений: 114
#1

Объясните мне, что же такого плохого в goto? - C++

05.03.2014, 19:13. Просмотров 479. Ответов 7
Метки нет (Все метки)

Виталян, открой спойлер!

код
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <iostream>
#include <ostream>
 
using namespace std;
 
int matrix[9999][9999], i, j, a, b, dlin, vis, xod, vibor, n, n2,n3,tm;
 
int main()
 
{
    setlocale(0, "");
 
   l3:
    cout << "1 - двигать кубики;" << endl << "2 - редактор;" << endl << "3 - тест;" << endl;
    cin >> vibor;
 
    if (vibor == 3)
    {
        tm = 1;
        dlin = 5;
        vis = 5;
        a = 2;
        b = 2;
        n2 = 1;
        goto L4;
    }
 
    if ((vibor != 1) & (vibor != 2) & (vibor != 3)){
        cout << "!!! ТАКОГО ПУНКТА НЕТ !!!" << endl << endl;
        goto l3;
    }
 
    if (vibor == 1)
    {
        cout << "пока не готово;" << endl << endl;
        goto l3;
    }
 
    for (int q = 0; q<150; q++) cout << endl;
 
    if (vibor == 2)
    {
        cout << "установите размер поля на своё усмотрение," << endl << "однако длина не должна превышать 79" << endl << "(по краёней мере для windows 7)" << endl<< endl << "(если вы псих или просто супермэн, то вот вам на заметку:" << endl << "максимальный размер поля 9999x9999)"<< endl<< endl;
    l1:
        cout << "длина поля = ";
        cin >> dlin;
 
        if (dlin<1)
        {
            cout << endl << "!!! ДЛИНА НЕ МОЖЕТ БЫТЬ МЕНЬШЕ ЕДИНИЦЫ !!!" << endl << endl;
            goto l1;
        }
 
    l2:
        cout << "высота поля = ";
        cin >> vis;
 
        if (vis<1)
        {
            cout << endl << "!!! ВЫСОТА НЕ МОЖЕТ БЫТЬ МЕНЬШЕ ЕДИНИЦЫ !!!" << endl << endl;
            goto l2;
        }
 
        for (int q = 0; q<150; q++) cout << endl;
 
    L5:
        cout << "0 - пустое место;" << endl << "1 - чубрик;" << endl << endl;
                                                               
    L4:
 
        for (i = 0; i<vis; i++)
        {
            for (j = 0; j<dlin; j++)
            {                                                  
                if ((a == j)&(b == i)) matrix[j][i] = 1;
                else matrix[j][i] = 0;
                                                               
                if (matrix[j][i] == 0) cout << "0";
                if (matrix[j][i] == 1) cout << "1";
                if (j == dlin - 1) cout << endl;
            }
        }
 
            
 
            cout << endl << endl << a+1 << " " << b+1 << endl << endl;
        
        if (n2 == 0 & tm == 0)
        {
            cout << endl << "куда поставить чубрика?" << endl << "номер строки = ";
            cin >> a;
            if ((a<1) || (a>vis))
            {
                for (int q = 0; q < 150; q++) cout << endl;
                cout << "!!! ЭТО ВНЕ ПОЛЯ !!!" << endl << endl;
                goto L5;
            }
            a = a - 1;
 
            cout << "номер столбца = ";
            cin >> b;
            if ((b<1) || (b>dlin))
            {
                for (int q = 0; q < 150; q++) cout << endl;
                cout << "!!! ЭТО ВНЕ ПОЛЯ !!!" << endl << endl;
                goto L5;
            }
            b = b - 1;
            
            for (int q = 0; q < 150; q++) cout << endl;
            n2 = 1;
            goto L4;
        }
 
        if (tm == 0) cout << endl << "4 - влево;" << endl << "6 - вправо;" << endl << "2 - вниз;" << endl << "8 - вверх;" << endl << endl;
        cin >> xod;
        cout << endl;
        if (xod == 4) if (a >= 1) a = a - 1;
        if (xod == 6) if (a<dlin - 1) a = a + 1;
        if (xod == 2) if (b<vis - 1)b = b + 1;
        if (xod == 8) if (b >= 1) b = b - 1;
        goto L4;
 
        cout << endl << endl;
    }
 
    if (vibor = 1)
    {
 
    }
 
    return 0;
}


"запретный плод сладок". чуваки, может объясните мне, что же такого плохого в goto?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2014, 19:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объясните мне, что же такого плохого в goto? (C++):

Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала - C++
Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для...

Объясните мне что от меня требуется! Спасибо за отклик - C++
Квадрат разбит на 4^k равновеликих квадратных клеток. Квадрат перегибается поочередно относительно вертикальной (правая половина...

Что плохого в явном написании условия в if? - C++
Вы не погорячились? что такого плохого в if (a==0) или if (a==false) ?

что плохого если я делаю ф-ю main типа void - C++
привет всем, кто может объяснить, что плохого если я делаю ф-ю main типа void ?

Объясните мне - C++
Объясните мне, пожалуйста, зачем нужна функция print и как она работает?

объясните мне безтолковаму - C++
что бы создать виндовское окно я должен создать проект и внём должно содержаться 2 файла или это ре так и что дальше?кто знает опишите этот...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
magirus
05.03.2014, 19:18
  #2

Не по теме:

Цитата Сообщение от b_d Посмотреть сообщение
Виталян, открой спойлер!
это к кому обращение?
Цитата Сообщение от b_d Посмотреть сообщение
чуваки,
на кортах семки плюють.

0
b_d
05.03.2014, 19:24  [ТС]
  #3

Не по теме:

другу моему код хочу показать

0
Megabar
05.03.2014, 19:34
  #4

Не по теме:

Извините, но название темы и содержание чем-то смахивает на страницу в ВК/FB

0
gunslinger
случайный прохожий
1134 / 752 / 192
Регистрация: 20.07.2013
Сообщений: 2,077
05.03.2014, 20:00 #5
Ничего плохого в goto нет, если использовать его с умом.
Но говорят, что в "хорошем обществе" делать это не рекомендуется, иначе могут потом косо смотреть.
0
b_d
4 / 2 / 0
Регистрация: 27.01.2014
Сообщений: 114
05.03.2014, 20:12  [ТС] #6
понятненько
0
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
05.03.2014, 23:30 #7
понимание читаемого кода с goto сильно усложняется, если этим пользоваться как попало.
вот в вашей многокилометровой функции все прыгает туда сюда и чтобы понять
все ветвления программы нужно сидеть и долго втыкать в код. и то наверно не поможет.
нужно на бумажке рисовать когда делается при каких условиях.
0
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
05.03.2014, 23:47 #8
Присоединюсь к ответам, действительно отследить ошибку в коде неимоверно в этом случае (опыт был)... На моей памяти я его всего то в 2-3 местах использовал, и то из-за того что перед глазами был уже отлаженный рабочий код функции на фортране, а адаптировать ни времени да и ни желания не было (поэтому чуть ли ни дословно и перевел на C++), а один лишь раз сам его ввел: в случае некорректной отработки промежуточных вызовов (сообщение об ошибки) пропустить дальнейший код и перейти сразу к концу функции (очистке выделенной памяти) миную промежуточный код. И то потому что на тот момент ничего лучше придумать не смог... Сейчас бы скорее всего сделал бы по другому, но в принципе алгоритм бы тот же остался бы, поэтому и не трогаю...
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2014, 23:47
Привет! Вот еще темы с ответами:

Объясните мне пожалуйста - C++
Написать функцию, подсчитывающую количество слов, заканчивающихся на гласную букву. Программу писать не надо, просто объясните...

Что то типа goto - C++
Мне нужно что нибудь похожее на goto... Только мне нужно перескочить из функции в одном файле в функцию другого файла

Объясните мне неактуальность MFC весомыми аргументами - C++
Объясните мне неактуальность MFC весомыми аргументами. Не могу определиться пройти мимо него или...? Добавлено через 2 минуты ...

Я не прошу писать мне код, я прошу подсказать мне, что за структура требуется в задании - C++
Написать программу для работы по запросам оператора с приоритетной очередью запросов. Куча отображается в память двоичным деревом. ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.03.2014, 23:47
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru