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

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

21.09.2015, 21:21. Показов 7000. Ответов 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
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,560
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
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,856
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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru