С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 36

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

21.09.2015, 21:21. Показов 6985. Ответов 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.09.2015, 21:21
Ответы с готовыми решениями:

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

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

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

8
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
21.09.2015, 21:22
циклы? goto?
0
1615 / 1181 / 552
Регистрация: 08.01.2012
Сообщений: 4,558
21.09.2015, 21:28
моветон конечно себя цитировать: Защита от введения отрицательных чисел
0
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 36
21.09.2015, 22:01  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
циклы? goto?
Цитата Сообщение от MansMI Посмотреть сообщение
Защита от введения отрицательных чисел
Для крошечных программ конечно оптимальное решение. Но для той огромной лабораторной работы, которую я состряпал, так не пойдет - теряется смысл. Хотел узнать, есть ли такая команда, которая именно переносит исполнение на определенную строку.

Добавлено через 24 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
goto?
Разобрался: это goto спсибо
Оказывается, надо создавать метки для перехода к ней
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
21.09.2015, 22:07
Цитата Сообщение от Wishmaster94 Посмотреть сообщение
Оказывается, надо создавать метки для перехода к ней
Для Вашего случая лучше цикл goto - зло, если его неправильно использовать
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
21.09.2015, 22:10
Цитата Сообщение от Wishmaster94 Посмотреть сообщение
Разобрался: это goto
Ужас
Цитата Сообщение от Wishmaster94 Посмотреть сообщение
Но для той огромной лабораторной работы, которую я состряпал,
про структурное программирование слышал?
программа бьется на модули(функции), и каждая выполняет свою сущность
и чт такого сложного в цикле do-while, по крайней мере лучше Гото
0
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 36
21.09.2015, 22:32  [ТС]
Цитата Сообщение от 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
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
21.09.2015, 22:57
Цитата Сообщение от Wishmaster94 Посмотреть сообщение
Разобрался: это goto
жессть.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
21.09.2015, 23:16
Цитата Сообщение от Wishmaster94 Посмотреть сообщение
Почему? весьма удобненько
1) Читать неудобно. В нормальном цикле, тело этого самого цикла четко видно по дополнительным отступам внутри {}. В цикле собранном на goto ничего такого нет. Так что где цикл начинается, где кончается, без лупы и не разберешь.
2) Если вы допустите ма-а-аленькую опечатку и напишите goto t1 вместо goto t4, последствия будут ну очень веселые.
3) По мнению британских ученых, квалификация программиста обратно пропорциональна числу goto в его коде.
Цитата Сообщение от Wishmaster94 Посмотреть сообщение
А вот мой код:
Осваивайте ветвление switch, цикл while(true) и его прерывание по break (вместо goto в начало цикла).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.09.2015, 23:16
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru