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

Команда, переносящая выполнение программы на определенную строку

21.09.2015, 21:21. Показов 2855. Ответов 8
Метки нет (Все метки)

Есть ли в С++ такая команда, которая переносит выполнение программы на определенную строку в исходнике?
Например, при вводе числа, не соответствующему требованиям, программа просила нас повторить ввод и переносила на седьмую строку:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL,"Russian");
    cout << "Введите число от 0 до 5:" << endl;
        cin >> chislo;
        if (chislo>=0 || chislo<==5) cout<<"вы введи число от 0 до 5";
        else {cout<<"Введите число заново"; //здесь должна быть команда, переносящая исполнение кода на 7 строку//;
    system ("pause");
    return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2015, 21:21
Ответы с готовыми решениями:

Выполнение процедуры по нажатию на определенную строку в ListBox
Доброго времени суток. Снова столкнулся с проблемой: не могу выполнить процедуру по нажатию на...

При нажатии на строку компонента ListView перейти на определенную строку synedit
как при нажатии в программе на строку компонента listview перейти на определенную строку synedit

Необходимо в текстовом файле найти определенную строку, в которой имеется спец.символ и удалить строку
К примеру в файле есть записи: Привет Привет Хороший День Мне нужно, что бы запись с символом...

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

8
Don't worry, be happy
17004 / 9885 / 1903
Регистрация: 27.09.2012
Сообщений: 24,528
Записей в блоге: 1
21.09.2015, 21:22 2
циклы? goto?
0
1462 / 1170 / 551
Регистрация: 08.01.2012
Сообщений: 4,513
21.09.2015, 21:28 3
моветон конечно себя цитировать: Защита от введения отрицательных чисел
0
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 36
21.09.2015, 22:01  [ТС] 4
Цитата Сообщение от Croessmah Посмотреть сообщение
циклы? goto?
Цитата Сообщение от MansMI Посмотреть сообщение
Защита от введения отрицательных чисел
Для крошечных программ конечно оптимальное решение. Но для той огромной лабораторной работы, которую я состряпал, так не пойдет - теряется смысл. Хотел узнать, есть ли такая команда, которая именно переносит исполнение на определенную строку.

Добавлено через 24 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
goto?
Разобрался: это goto спсибо
Оказывается, надо создавать метки для перехода к ней
0
Don't worry, be happy
17004 / 9885 / 1903
Регистрация: 27.09.2012
Сообщений: 24,528
Записей в блоге: 1
21.09.2015, 22:07 5
Цитата Сообщение от Wishmaster94 Посмотреть сообщение
Оказывается, надо создавать метки для перехода к ней
Для Вашего случая лучше цикл goto - зло, если его неправильно использовать
0
Модератор
Эксперт по электронике
8406 / 6247 / 841
Регистрация: 14.02.2011
Сообщений: 21,672
21.09.2015, 22:10 6
Цитата Сообщение от Wishmaster94 Посмотреть сообщение
Разобрался: это goto
Ужас
Цитата Сообщение от Wishmaster94 Посмотреть сообщение
Но для той огромной лабораторной работы, которую я состряпал,
про структурное программирование слышал?
программа бьется на модули(функции), и каждая выполняет свою сущность
и чт такого сложного в цикле do-while, по крайней мере лучше Гото
0
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 36
21.09.2015, 22:32  [ТС] 7
Цитата Сообщение от Croessmah Посмотреть сообщение
Для Вашего случая лучше цикл goto - зло, если его неправильно использовать
Почему? весьма удобненько Да и программа работает именно так, как нужно, без ошибок.
Цитата Сообщение от ValeryS Посмотреть сообщение
про структурное программирование слышал?
программа бьется на модули(функции), и каждая выполняет свою сущность
и чт такого сложного в цикле do-while, по крайней мере лучше Гото
Я новичок, можно сказать, и это моя вторая большая программа вообще Может быть, вы правы. Однако мне легче будет объяснять свой код преподавателю, ведь я сам его написал

Если интересно, вот задание:
Кликните здесь для просмотра всего текста


А вот мой код:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
string name1 = "ivan", name2 = "vasia", name3 = "putin", name4 = "vin";
string c1 = "read", c2 = "write", c3 = "grant";
int main()
{
    setlocale(LC_ALL,"Russian");
    int x, y, z, r, u;
    string name, c;
    int m[4][6]= {  0,7,0,4,3,1,
                    0,3,6,3,1,2,
                    7,7,7,7,7,7,
                    1,6,5,0,5,3 };
    t6: cout << "Введите имя пользователя:" << endl;
    t1: cin >> name;
    if (name == name1) x=0;
    else if (name == name2) x=1;
    else if (name == name3) x=2;
    else if (name == name4) x=3;
    else {cout<<"В базе нет пользователя с таким именем"<<"\n"; goto t1;}
    cout<<"\n"<<"Идентификация прошла успешно, добро пожаловать в систему"<<"\n"<<"Перечень Ваших прав:"<<"\n";
 
    for (int j=0; j<6; j++)
        {cout<<"Объект "<<j+1<<": ";
         if (m[x][j]==0) {cout<<"Полный запрет"<<"\n";}
         else if (m[x][j]==1) {cout<<"Передача прав"<<"\n";}
         else if (m[x][j]==2) {cout<<"Запись"<<"\n";}
         else if (m[x][j]==3) {cout<<"Запись, Передача прав"<<"\n";}
         else if (m[x][j]==4) {cout<<"Чтение"<<"\n";}
         else if (m[x][j]==5) {cout<<"Чтение, Передача прав"<<"\n";}
         else if (m[x][j]==6) {cout<<"Чтение, Запись"<<"\n";}
         else if (m[x][j]==7) {cout<<"Полный доступ"<<"\n";}
        }
    cout<<"Жду ваших указаний"<<endl;
    t2: cin>>c;
    if (c == c1) y=0;
    else if (c == c2) y=1;
    else if (c == c3) y=2;
    else {cout<<"Такой команды не существует"<<"\n"; goto t2;}
    cout<<"Над каким объектом производится операция?"<<"\n";
    t5: cin>>z;
    z=z-1;
    if (y==0 && (m[x][z]==4 || m[x][z]==5 || m[x][z]==6 || m[x][z]==7)) {cout<<"Операция выполнена успешно."<<"\n";}    
    else if (y==1 && (m[x][z]==2 || m[x][z]==3 || m[x][z]==6 || m[x][z]==7)) {cout<<"Операция выполнена успешно."<<"\n";}   
    else if (y==2 && (m[x][z]==1 || m[x][z]==3 || m[x][z]==5 || m[x][z]==7)) 
            {
                cout<<"Какое право передается?";
                t3: cin>>c;
                if (c == c1 && (m[x][z]==5 || m[x][z]==7)) r=0;
                else if (c == c2 && (m[x][z]==3 || m[x][z]==7)) r=1;
                else {cout<<"Такой команды не существует, либо у вас нет прав на исполнение операции"<<"\n"; goto t3;}
                cout<<"Какому пользователю передается право?";
                t4: cin >> name;
                if (name == name1) u=0;
                else if (name == name2) u=1;
                else if (name == name3) u=2;
                else if (name == name4) u=3;
                else {cout<<"В базе нет пользователя с таким именем"<<"\n"; goto t4;}
                if (r==0) 
                    {
                    if (m[u][z]==0) {m[u][z]=4; cout<<"Операция выполнена успешно."<<"\n";}
                    else if (m[u][z]==1) {m[u][z]=5; cout<<"Операция выполнена успешно."<<"\n";}
                    else if (m[u][z]==2) {m[u][z]=6; cout<<"Операция выполнена успешно."<<"\n";}
                    else if (m[u][z]==3) {m[u][z]=7; cout<<"Операция выполнена успешно."<<"\n";}
                    else cout<<"У пользователя уже есть доступ к чтению данного файла";
                    }
                if (r==1) 
                    {
                    if (m[u][z]==0) {m[u][z]=2; cout<<"Операция выполнена успешно."<<"\n";}
                    else if (m[u][z]==1) {m[u][z]=3; cout<<"Операция выполнена успешно."<<"\n";}
                    else if (m[u][z]==4) {m[u][z]=6; cout<<"Операция выполнена успешно."<<"\n";}
                    else if (m[u][z]==5) {m[u][z]=7; cout<<"Операция выполнена успешно."<<"\n";}
                    else cout<<"У пользователя уже есть доступ к записи данного файла";
                    }
            }
    else {cout<<"Отказ в выполнении операции. У вас нет прав для ее осуществления."<<"\n"; goto t5;}
    goto t6;
    system ("pause");
    return 0;
}
0
Эксперт С++
8448 / 3976 / 871
Регистрация: 15.11.2014
Сообщений: 8,936
21.09.2015, 22:57 8
Цитата Сообщение от Wishmaster94 Посмотреть сообщение
Разобрался: это goto
жессть.
0
2713 / 1880 / 556
Регистрация: 05.06.2014
Сообщений: 5,475
21.09.2015, 23:16 9
Цитата Сообщение от Wishmaster94 Посмотреть сообщение
Почему? весьма удобненько
1) Читать неудобно. В нормальном цикле, тело этого самого цикла четко видно по дополнительным отступам внутри {}. В цикле собранном на goto ничего такого нет. Так что где цикл начинается, где кончается, без лупы и не разберешь.
2) Если вы допустите ма-а-аленькую опечатку и напишите goto t1 вместо goto t4, последствия будут ну очень веселые.
3) По мнению британских ученых, квалификация программиста обратно пропорциональна числу goto в его коде.
Цитата Сообщение от Wishmaster94 Посмотреть сообщение
А вот мой код:
Осваивайте ветвление switch, цикл while(true) и его прерывание по break (вместо goto в начало цикла).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2015, 23:16

Считать определенную строку из файла
У меня есть текст и я хочу чтоб читалось определенная строка этого файла, заранее спасибо

Считать определенную строку из файла
Второй вопрос: Как можно считать определенную строку из файла. Пример: У меня есть файл, в...

Считать определенную строку из файла
Такое дело. Пользователь вводит определенную команду в TextBox, и нужно что бы программа считала...

Считать определенную строку с файла QT
Доброго времени суток, возник вопрос, как можно считать их .тхт файла определенную строку, например...


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

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

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