Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/366: Рейтинг темы: голосов - 366, средняя оценка - 4.84
8 / 8 / 2
Регистрация: 10.07.2009
Сообщений: 206
1

Как вернуться в начало программы???

10.10.2010, 14:58. Показов 71362. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как сделать так, чтобы при наступления какого-либо условия программа прерывалась и начаналась заново???
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2010, 14:58
Ответы с готовыми решениями:

Как вернуться в начало цикла while?
У меня в коде такая структура while ( game == 1) //code// level = 2 while(game == 2 )...

Вернуться в начало файла
Нужно вернуться в начало, при чтении текстового файла fstream

Вернуться в определенное место программы
Здравствуйте! Есть ли возможность в С++ выполнить возврат к определенному месту в коде. Например у...

Не могу вернуться к тексту программы
Программа вобщем-то работает, но после выполнения компилятор (Borland C++ ) не возвращает к тексту...

27
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
10.10.2010, 15:01 2
Ну, например, засунуть всё в цикл и при наступлении условия сделать continue)
1
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
10.10.2010, 15:02 3
Бесконечный цикл допустим.
Или цикл do while.
Или просто while с определенным условием.

Например

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main()
{
    while(1)
    {
        int a=0;
        std::cin>>a;
        if(a!=5)
           continue;
        std::cout<<a<<'\n';
        break;
    }
    return 0;
}
0
8 / 8 / 2
Регистрация: 10.07.2009
Сообщений: 206
10.10.2010, 15:03  [ТС] 4
Но программа же снова не начнется, просто прервется и все.

Добавлено через 44 секунды
на С программа, С++ не понимаю
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
10.10.2010, 15:04 5
3 вaриант:
C++
1
goto
0
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
10.10.2010, 15:04 6
KamalovRadik, while и continue будут и в C работать)
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
10.10.2010, 15:05 7
dihlofos, Ну и тогда програма вийдет из етого цыкла но не и продолжыт виполнение кода который наисан уже после етого цыкла.

К примеру можно код засунуть в бесконечный цыкл и пры какомто условие написать continue;

Добавлено через 1 минуту
PointsEqual, тоже вариант,но пользоватсо без фанатизма
0
8 / 8 / 2
Регистрация: 10.07.2009
Сообщений: 206
10.10.2010, 15:06  [ТС] 8
На примере можно???
While(1) - это бесконечный цикл?
0
dihlofos
10.10.2010, 15:09
  #9

Не по теме:

Asics^, да я сам уже догнал, что бяку сначала написал) Поправил уже.

0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
10.10.2010, 15:09 10
Цитата Сообщение от KamalovRadik Посмотреть сообщение
While(1) - это бесконечный цикл?
Да,или же while(true)
0
8 / 8 / 2
Регистрация: 10.07.2009
Сообщений: 206
10.10.2010, 15:12  [ТС] 11
А если continue вставить, и условие обратное написать ничего же не получится, просто прервется и все
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
10.10.2010, 15:14 12
Пример использования:
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
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    long int a, b;
    for(;;)
    {
           cout << "Bedute 4uclo: ";
           cin >> a;
           cout << "Bedute deluTeLb: ";
           cin >> b;
           if(b == 0)
           {
              cout << "ERROR(HeLb39 deluTb Ha <0>)" << endl;
              continue;     
           }
           cout << "Result: " << a << " / " << b << " = " << a / b << endl;
           cout << "Octatok ot DeleHue: " << a % b << endl;
           break;
    }
getch();
return 0;    
}
Заметка: for( ; ; ) - тоже бесконечный.
1
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
10.10.2010, 15:14 13
KamalovRadik, а так пойдет?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
    while( true ){
        cout<<"Restart program"<<endl;
        int k = 0;
        int s = 0;
        while( true ){
            cout<<"Enter number: ";
            cin >> k;
 
            s += k;
 
            if (s>10) break;
        }
 
    }
 
 
    return 0;
}
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
10.10.2010, 15:14 14
KamalovRadik, continue - переводит цикл к следующей итерации
break - прекращает выполнение цикла.
Что вам конкретно нужно?
1
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
10.10.2010, 15:17 15
KamalovRadik, тот же пример Lavroff'а, только на C:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int main()
{
    while(true)
    {
        int a=0;
        scanf("%d",&a);
        if(a!=5)
           continue;
        printf("%d\n",a);
        break;
    }
    return 0;
}
Будет возвращаться к началу, пока не введём 5.
1
8 / 8 / 2
Регистрация: 10.07.2009
Сообщений: 206
10.10.2010, 15:46  [ТС] 16
Вот в игре "21" Как сделать так, тобы при вводе суммы большей чем есть на счету, выходило сообщение, "столько денег нет", и игра начаналась заново.
С помощью continue пробовал, цикл не заканчивается

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
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
 
int koloda[13] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 4, 11};
int karta() {return rand()%13;}
struct igr {
int kartas;
char znak;};
               struct igr kolod[13]=
               {
               {2, '2'},
               {3, '3'},
               {4, '4'},
               {5, '5'},
               {6, '6'},
               {7, '7'},
               {8, '8'},
               {9, '9'},
               {10, 'T'},
               {2, 'J'},
               {3, 'D'},
               {4, 'K'},
               {11, 'A'} } ;
 
 
int main()
{
    int igrok, komp, kart,c=0, h=10, baks,b=0;
    char  ans, buf;
 
    time_t t;
    srand((unsigned)time (&t));
while(1) {
    do
    { if(b!=0) printf("net stolko deneg");
    b=0;
     clrscr();
        printf("****************** Igra nachinaetsya... ***************\n\n");
        printf(" \n U vas %d baksov", h);
        printf(" \n Vvetite summu stavki");
        scanf("%d", &baks);
        if (baks>h) { b++; printf("\n net stolko babla"); continue;}
        komp=0;igrok=0;
          do
        {   c=0;
            kart=karta();
            printf("Vasha karta: %c ", kolod[kart].znak);
 
            if (kolod[kart].znak=='A') {
            printf("\n Kak '1' ? Da 'y', net 'n'");
            ans=getchar();
            buf=getchar();
            if (ans=='y') kolod[kart].kartas=1;}
            igrok+=kolod[kart].kartas;
            printf ("\tSumma = %d\n", igrok);
            if(igrok>21)
            {
                printf("U vas perebor\n ");
                break;
            }
 
            printf("vzyat eshe? ('y' - yes, 'n' - no) : ");
            ans = getchar();
            buf = getchar();
        } while(ans!='n');
 
        if(igrok <= 21)
        {
            printf("\nkarti komputera:");
            do
            {
                kart=karta();
                if (kolod[kart].znak=='A') c++;
                printf(" %c", kolod[kart].znak);
                komp+=kolod[kart].kartas;
 
            if(komp>21 && c>0) komp=komp-c*10;
            } while(komp<17)    ;
            printf("\t Summa = %d", komp);
            textcolor(YELLOW);
            if(igrok>komp) printf(" \npozdravlyem, vi vuugrali\n");
            if(igrok==komp) printf(" \nnichyia\n");
            if (igrok<komp && komp<=21)  printf(" \nti proigral\n");
            if(igrok<komp && komp>21) printf("\npobeda\n");
        }
        printf(" \n igrat eshe? ('y' - yes, 'n' - no) : ");
        ans = getchar();
        buf = getchar();
        if(ans=='n') break;
    } while(ans!='n');  }
 
     textcolor(GREEN);
    printf(" \n Spasibo za igru!!! \n ");
    getch();
}
Добавлено через 39 секунд
44я строчка
0
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
10.10.2010, 16:20 17
continue в 44 строке работает для цикла do (который начинается со стр. 36). Делает всё правильно - переходит к следующей итерации этого цикла - т.е. начинает новую игру. Почему не выводится сообщение - потому что оно стирается clrscr(), вот и всё. Зачем в этой ситуации ещё и цикл while(1), не совсем как-то понятно.
1
8 / 8 / 2
Регистрация: 10.07.2009
Сообщений: 206
10.10.2010, 16:29  [ТС] 18
принтф же до континуя стоит
0
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
10.10.2010, 16:35 19
Ну да, последовательность получается такая : напечатать->перейти на новый шаг-> очистить экран. Т.е. печать выполняется, и тут же всё стирается. Поставьте вывод сообщения об ошибке после clrscr() чтоли.
0
8 / 8 / 2
Регистрация: 10.07.2009
Сообщений: 206
10.10.2010, 17:02  [ТС] 20
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
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
 
int koloda[13] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 4, 11};
int karta() {return rand()%13;}
struct igr {
int kartas;
char znak;};
               struct igr kolod[13]=
               {
               {2, '2'},
               {3, '3'},
               {4, '4'},
               {5, '5'},
               {6, '6'},
               {7, '7'},
               {8, '8'},
               {9, '9'},
               {10, 'T'},
               {2, 'J'},
               {3, 'D'},
               {4, 'K'},
               {11, 'A'} } ;
 
 
int main()
{
    int igrok, komp, kart,c=0, h=10, baks,b=0;
    char  ans, buf;
 
    time_t t;
    srand((unsigned)time (&t));
 
    do
    { clrscr(); if(b!=0) printf("\n Net stolko deneg\n\n ");
 
    b=0;
 
        printf("****************** Igra nachinaetsya... ***************\n\n");
        printf(" \n U vas %d baksov", h);
        printf(" \n Vvetite summu stavki : ");
        scanf("%d", &baks);
        if (baks>h) { b++; printf("\n net stolko babla"); continue;}
        komp=0;igrok=0;
          do
        {   c=0;
            kart=karta();
            printf("Vasha karta: %c ", kolod[kart].znak);
 
            if (kolod[kart].znak=='A') {
            printf("\n Kak '1' ? Da 'y', net 'n'");
            ans=getchar();
            buf=getchar();
            if (ans=='y') kolod[kart].kartas=1;}
            igrok+=kolod[kart].kartas;
            printf ("\tSumma = %d\n", igrok);
            if(igrok>21)
            {
                printf("U vas perebor\n ");
                break;
            }
 
            printf("vzyat eshe? ('y' - yes, 'n' - no) : ");
            ans = getchar();
            buf = getchar();
        } while(ans!='n');
 
        if(igrok <= 21)
        {
            printf("\nkarti komputera:");
            do
            {
                kart=karta();
                if (kolod[kart].znak=='A') c++;
                printf(" %c", kolod[kart].znak);
                komp+=kolod[kart].kartas;
 
            if(komp>21 && c>0) komp=komp-c*10;
            } while(komp<17)    ;
            printf("\t Summa = %d", komp);
            textcolor(YELLOW);
            if(igrok>komp) printf(" \npozdravlyem, vi vuugrali\n");
            if(igrok==komp) printf(" \nnichyia\n");
            if (igrok<komp && komp<=21)  printf(" \nti proigral\n");
            if(igrok<komp && komp>21) printf("\npobeda\n");
        }
        printf(" \n igrat eshe? ('y' - yes, 'n' - no) : ");
        ans = getchar();
        buf = getchar();
 
    } while(ans!='n');
 
     textcolor(GREEN);
    printf(" \n Spasibo za igru!!! \n ");
    getch();
}
объясните плиз, почему getchar() не работает должностным образом, после вставки континуя, хотя может даже и не из-за этого

Добавлено через 14 минут
http://data.cod.ru/70744
Вот видео-отчет посмотрите
0
10.10.2010, 17:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2010, 17:02
Помогаю со студенческими работами здесь

Пролетает cin, после того как goto возвращается в начало программы
Мне нужно сделать программу, которая будет исключать варианты ввода не целых чисел. Если вводить...

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

Как вернуться в главное меню!
Всем привет!Я сделал простенькую программу,которая записывает что-то в файл и выводит то,что...

Как вернуться обратно в выбор
Есть код: #include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;conio.h&gt; #include &lt;fstream&gt;...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru