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

Как сделать правильный else - C++

Восстановить пароль Регистрация
 
Deniz_che
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 5
10.06.2013, 23:52     Как сделать правильный else #1
else в самом конце если место 1 2 3 0 введено другое число дает ошибку (так и надо), но если введена буква то дает полный бред, как это исправить


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
#include <cstdlib>
#include <iostream>
#include <locale.h>
 
using namespace std;
int gen_random( int range_min, int range_max );
int heal (int x, int y)
{
    return x+y;
}
 
int main(int argc, char *argv[])
{
   
    setlocale( LC_ALL, "Russian" );
    int hp=200,healpoints=25,text,mobhp=50,i,coins=0;
    b:
    printf("ГЌГ*ГЇГЁГёГЁГІГҐ Г*îìåð êîìГ*Г*äû\n");
    printf("Ëå÷åГ*ГЁГҐ Г§Г* 100 ìîГ*ГҐГІ  (1)\nГ€Г*ôîðìГ*öèÿ            (2)\nГЂГІГ*êîâГ*ГІГј ìîáГ*        (3)\nÂûõîä                 (0)\n");
    do {
    scanf("%d",&text);
     if ((text == 1)&(hp<200))
       {
        hp=heal(hp,healpoints);
        coins=coins-100;
            if (hp>200)
             hp=200;
        printf("-100 ГЊГ®Г*ГҐГІ\nГЋГ±ГІГ*ëîñü ìîГ*ГҐГІw=%d\nÂû âûëå÷åГ*Г»! òåïåðü ГўГ*ГёГЁ æèçГ*ГЁ=%d\n",coins,hp);
       }               //if 1
     if ((text == 1)&(hp>=200))
       printf("Âû çäîðîâû\n");
     if (text == 2)
     {
       printf("ÆèçГ*ГЁ=%d\nГЊГ®Г*ГҐГІГ»=%d\n",hp,coins);
     }
     if (text == 3)
     {
       mobhp=50;
       i=0;
       printf ("Âû Г*Г*øëè ñîêðîâèùГ*èöó ГҐВё îõðГ*Г*ГїГҐГІ öèêëîï, Г‚ ГЂГ’ГЂГЉГ“!\n");
       do{
    
              
          //RANDOM START
           int range_min, range_max, randdmg, randattack;
           srand( time( NULL ) );
           range_min= 5;
           range_max= 31;
          //RANDOM END
      
        randattack=gen_random( range_min, range_max );    
        
        mobhp=mobhp-randattack;
        printf("Âû Г*ГІГ*êîâГ*ëè ìîáГ*, óðîГ*=%d \n",randattack);
        if (mobhp<=0)
         {
          //RANDOM START
           int range_min, range_max, randcoins;
           srand( time( NULL ) );
           range_min= 100;
           range_max= 599;
           randcoins=gen_random( range_min, range_max ); 
          //RANDOM END
          coins=randcoins;
          printf("Ìîá óìåð\nÂû Г*Г*øëè %d ìîГ*ГҐГІ!\n",coins);
          mobhp=0;
         }
        else
         printf ("ÆèçГ*ГЁ ìîáГ*=%d\n",mobhp);
        if (mobhp>0)
        {
        randdmg= gen_random( range_min, range_max );
        hp=hp-randdmg;
           if (hp<=0)
            hp=0;
         printf("Ìîá ГўГ*Г± Г*ГІГ*êîâГ*Г«! ГЋГ* Г*Г*Г*ГҐГ± ГўГ*Г¬ %d óðîГ*Г*\nГ“ ГўГ*Г± îñòГ*ëîñü %d æèçГ*ГЁ\n",randdmg,hp);
           if (hp<=0)
            {
               printf("Âû ìåðòâû!\n");
               goto a;
            }                   
        }
        
       }while (mobhp>0) ;         // attack while mob is alive
     }                           //if 3
    else                       //===============!!!!!!!! Вот этот else
    {
    printf("\nГЌГҐ ГўГҐГ°Г*Г*Гї êîìГ*Г*Г¤Г*!\n\n");
    goto b;
    }
    }while ((text!=0)&(hp>0));  //exit
    a:
    system("PAUSE");
    return EXIT_SUCCESS;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 23:52     Как сделать правильный else
Посмотрите здесь:

C++ Правильный ли код?
C++ Доброго время суток. Как выбрать правильный путь?
C++ Правильный ответ?
Правильный ответ? C++
C++ Правильный ли цикл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Khelleos
37 / 37 / 7
Регистрация: 13.05.2010
Сообщений: 283
Записей в блоге: 1
11.06.2013, 00:36     Как сделать правильный else #2
Используй лучше оператор switch case. Сравниваешь сначала text c 1, 2, 3, 0, а значение default поставь то, что в последнем else.
IronnMann
 Аватар для IronnMann
6 / 6 / 1
Регистрация: 21.05.2013
Сообщений: 36
11.06.2013, 00:53     Как сделать правильный else #3
Deniz_che, а не лучше воспользоваться оператором swich ?
(геморроя меньше, инфа 100%)
и насчет меток перехода:
делайте их в верхнем регистре, с осмысленными названиями, например : "BLOCK_A", "BLOCK_B" ...
это просто совет. так реально удобнее
вот пример использования оператора:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <locale.h>
 
int main()
{setlocale( LC_ALL, "Russian" );
int os;
std::cout<<"выбери свою ОС\n Windows XP - 1 \n Windows NT - 2 \n Linux - 3 \n Mac OS - 4 \n";
std::cin>>os;
switch(os){ //--переменная os служит для выбора пункта из switch 
case 1: std::cout<<"ваш выбор - windows xp"; break;
case 2: std::cout<<"ваш выбор - windows nt"; break;
case 3: std::cout<<"ваш выбор - linux"; break;
case 4: std::cout<<"ваш выбор - mac os"; break;
case defoult: std::cout<<"error !Не удалось определить вашу ОС!"; //--если значение не задано /некорректно 
}
 
}
Deniz_che
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 5
11.06.2013, 20:51  [ТС]     Как сделать правильный else #4
Спасибо, тема закрыта
Yandex
Объявления
11.06.2013, 20:51     Как сделать правильный else
Ответ Создать тему
Опции темы

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