Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2012, 20:26   #1
ZoomHz
Пользователь
 
Аватар для ZoomHz
 
Регистрация: 25.06.2011
Сообщений: 37
По умолчанию Проблема с программой

Код:
#include <iostream>
using namespace std;


class Weapon
{
   public:
   Weapon(int pAtack, int mAtack) {its_pAtack = pAtack; its_mAtack = mAtack;}
   ~Weapon(){};
   int GetpAtack() {return its_pAtack;}//выводит физ атаку
   int GetmAtack() {return its_mAtack;}//выводит м атаку
   private:
   int its_pAtack;
   int its_mAtack;
   };
//прототипы
int DoMenu();
int Sgrade (Weapon);
int CalcStat(Weapon,int);

int main()
{
   Weapon Statistics(0,0);
   int choice;
   int Quit = false;
   while(!Quit)
   {
      choice=DoMenu();//выводит меню
      switch(choice)
      {
         case 1:
            Sgrade(Statistics);//открывает функцию
            break;
         case 2:
            Weapon Statistics(26,10);
            cout<<Statistics.GetpAtack();
            break;
         }//end switch
      }//end while
   }
   
int DoMenu()//меню
{
   int choice;
   cout<<"(1) S grade\n"; 
   cout<<"(2) A grade\n"; 
   cout<<"(3) B grade\n"; 
   cout<<"(4) C grade\n";
   cin>>choice;
   return choice;
   }

int Sgrade(Weapon Statistics)
{
   int choice;
   int enchant;
   cout<<"(1) Gods Blade\n";
   cout<<"(2) Heaven's Divider\n";
   cin>>choice;
   cout<<"How many enchanted weapons?\n+";
   cin>>enchant;
   
   switch(choice)
   {
         case 1:
         Weapon Statistics(257,124);//задает значение переменным, которые изначально задались в конструкторе
         cout<<CalcStat(Statistics,enchant)<<endl;
         break;
         case 2:
         Weapon Statistics(342,132);//задает значение переменным, которые изначально задались в конструкторе
         cout<<CalcStat(Statistics,enchant)<<endl;
         break;
         }
   }

int CalcStat(Weapon Statistics, int a)
{
   int result;
   int result1;
   result1=(a*0.02)* Statistics.GetpAtack();
   result=result1+Statistics.GetpAtack();
   return result;

   }
Код:
     case 2:
         Weapon Statistics(257,124);//задает значение переменным, которые изначально задались в конструкторе
         cout<<CalcStat(Statistics,enchant)<<endl;
         break;
Компилятор ругается на строку case 2:
В чем проблема?

Последний раз редактировалось ZoomHz; 13.03.2012 в 20:55.
ZoomHz вне форума Ответить с цитированием
Старый 13.03.2012, 21:39   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
Компилятор ругается на строку case 2:
В чем проблема?
Какая ошибка?
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 13.03.2012, 21:40   #3
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
Компилятор ругается на строку case 2:
В чем проблема?
Какая ошибка?
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 13.03.2012, 21:47   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Granus
объявляет переменную внутри case без добавления нового блока. да и вообще, объекты создает на стеке, передает по значению. так что весь код ошибка
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 13.03.2012, 21:49   #5
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

В одной области видимости имеется переопределение переменной Statistics.
Можно взять в блок { ... } код после case.
EUGY вне форума Ответить с цитированием
Старый 13.03.2012, 22:10   #6
ZoomHz
Пользователь
 
Аватар для ZoomHz
 
Регистрация: 25.06.2011
Сообщений: 37
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2Granus
объявляет переменную внутри case без добавления нового блока. да и вообще, объекты создает на стеке, передает по значению. так что весь код ошибка
Как можно написать эту программу лучше если я остановился в изучении с++ на циклах?
ZoomHz вне форума Ответить с цитированием
Старый 13.03.2012, 22:15   #7
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2ZoomHz
продолжить изучать язык, очевидно же
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с программой crazyW Помощь студентам 0 17.01.2012 20:15
Проблема с программой Aleks2215 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 26.10.2010 22:56
Проблема с программой. elDiablo Паскаль, Turbo Pascal, PascalABC.NET 2 17.08.2010 21:59
Проблема с программой bboba Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 18.06.2009 19:50
Проблема с программой eks-s Общие вопросы Delphi 9 06.02.2008 09:47