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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 64, средняя оценка - 4.61
KamalovRadik
7 / 7 / 2
Регистрация: 10.07.2009
Сообщений: 206
10.10.2010, 14:58     Как вернуться в начало программы??? #1
Как сделать так, чтобы при наступления какого-либо условия программа прерывалась и начаналась заново???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2010, 14:58     Как вернуться в начало программы???
Посмотрите здесь:

Не могу вернуться к тексту программы C++
C++ как перейти в начало цикла ?
Вернуться в начало файла C++
C++ Как вернуться к началу функции?
Арканоид. Вернуться в исходное состояние. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
10.10.2010, 15:01     Как вернуться в начало программы??? #2
Ну, например, засунуть всё в цикл и при наступлении условия сделать continue)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
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;
}
KamalovRadik
7 / 7 / 2
Регистрация: 10.07.2009
Сообщений: 206
10.10.2010, 15:03  [ТС]     Как вернуться в начало программы??? #4
Но программа же снова не начнется, просто прервется и все.

Добавлено через 44 секунды
на С программа, С++ не понимаю
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
10.10.2010, 15:04     Как вернуться в начало программы??? #5
3 вaриант:
C++
1
goto
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
10.10.2010, 15:04     Как вернуться в начало программы??? #6
KamalovRadik, while и continue будут и в C работать)
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
10.10.2010, 15:05     Как вернуться в начало программы??? #7
dihlofos, Ну и тогда програма вийдет из етого цыкла но не и продолжыт виполнение кода который наисан уже после етого цыкла.

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

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

Не по теме:

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

asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
10.10.2010, 15:09     Как вернуться в начало программы??? #10
Цитата Сообщение от KamalovRadik Посмотреть сообщение
While(1) - это бесконечный цикл?
Да,или же while(true)
KamalovRadik
7 / 7 / 2
Регистрация: 10.07.2009
Сообщений: 206
10.10.2010, 15:12  [ТС]     Как вернуться в начало программы??? #11
А если continue вставить, и условие обратное написать ничего же не получится, просто прервется и все
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
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( ; ; ) - тоже бесконечный.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
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;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
10.10.2010, 15:14     Как вернуться в начало программы??? #14
KamalovRadik, continue - переводит цикл к следующей итерации
break - прекращает выполнение цикла.
Что вам конкретно нужно?
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 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.
KamalovRadik
7 / 7 / 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я строчка
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
10.10.2010, 16:20     Как вернуться в начало программы??? #17
continue в 44 строке работает для цикла do (который начинается со стр. 36). Делает всё правильно - переходит к следующей итерации этого цикла - т.е. начинает новую игру. Почему не выводится сообщение - потому что оно стирается clrscr(), вот и всё. Зачем в этой ситуации ещё и цикл while(1), не совсем как-то понятно.
KamalovRadik
7 / 7 / 2
Регистрация: 10.07.2009
Сообщений: 206
10.10.2010, 16:29  [ТС]     Как вернуться в начало программы??? #18
принтф же до континуя стоит
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
10.10.2010, 16:35     Как вернуться в начало программы??? #19
Ну да, последовательность получается такая : напечатать->перейти на новый шаг-> очистить экран. Т.е. печать выполняется, и тут же всё стирается. Поставьте вывод сообщения об ошибке после clrscr() чтоли.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2010, 17:02     Как вернуться в начало программы???
Еще ссылки по теме:

Возвращение в начало программы из функции C++
C++ В конце программы условие, которое возвращает в начало
Вернуться в определенное место программы C++

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

Или воспользуйтесь поиском по форуму:
KamalovRadik
7 / 7 / 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
Вот видео-отчет посмотрите
Yandex
Объявления
10.10.2010, 17:02     Как вернуться в начало программы???
Ответ Создать тему
Опции темы

Текущее время: 03:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru