singlepost

Блок исключения << На главную или назад  

Vu vvely Strenght menshe 23 vidkruite programu shche raz i vvedit pravulni dani
Как сделать что после етого программи не виходила а запрашивала еще раз ввести правильние дание Please input 1 dlja vvedennja danuh pro ArmoredDoor Please input 2 dlja vvedennja danuh pro WoodenDoor ..?.
#include<iostream>
#include <string>
using namespace std;
const int N=3;
class Door
{
public:
class Empty
{
public:
string func;
Empty(string f)
{func = f;}};
int height;
int width;
int price;
public:
Door():price(200)
{}
virtual void input();
virtual void print();

};
}
class ArmoredDoor: virtual public Door
{
public:
int Strength;
public:
virtual void input()
{
cout << "Input: "<< endl;
cout << "height: ";
cin >> height;
cout << "width: ";
cin >>width;
cout<<"Strength:";
cin>>Strength;
if (Strength > 23)
price += 10 ;
else
{
if(Strength<=23)
throw Empty("vunna funkcija Strenght");
}

}
virtual void print();
};
void ArmoredDoor::print()
{
cout << "height: " << height << endl;
cout << "width: " << width << endl;
cout<<"price: "<<price<<endl;
}
class WoodenDoor:virtual public Door
{
public:
char Type_of_wood;

public:
virtual void input();
virtual void print();

};

}
class doubleDoor:public ArmoredDoor,public WoodenDoor
{
private:
char color[20];
public:
virtual void input();
virtual void print();
};
void doubleDoor::input()
{
cout << "Input: "<< endl;
cout << "height: ";
cin >> height;
cout << "width: ";
cin >>width;
cout<<"Strength:";
cin>>Strength;
if (Strength > 23)
price += 10 ;
else
{
if(Strength<=23)
throw Empty("vunna funkcija Strenght");
}
Type_of_wood = 0;
while((Type_of_wood!='1')&&(Type_of_wood!='2'))
{
cout << "Please input 1 dlja vubory pershogo sorty derevuny" << endl;
cout << "Please input 2 dlja vubory drygogo sorty derevuny" << endl;
cout<<"Type_of_wood:";
cin>>Type_of_wood;
}
if (Type_of_wood == '1' )
price += 10 ;
else price += 20;
cout<<"color:";
cin>>color;
if (!strcmp(color, "red") ) price += 15;
}
void doubleDoor::print()
{
}
void main()
{
Door *mas[N];
int s = 0;
try
{
for(int i=0;i<N;i++)
{
char k;
do
{
cout << "Please input 1 dlja vvedennja danuh pro ArmoredDoor" << endl;
cout << "Please input 2 dlja vvedennja danuh pro WoodenDoor" << endl;
cout << "Please input 3 dlja vvedennja danuh pro doubleDoor" << endl;
cin >> k;
}while(!( k=='1' || k=='2' || k=='3'));
switch(k)
{
case '1':mas[i]=new ArmoredDoor; break;
case '2': mas[i]=new WoodenDoor; break;
case '3': mas[i]=new doubleDoor; break;
}
mas[i]->input();
throw;
}
cout<<""<<endl;
cout<<"Check: "<<endl;
cout << endl;
for(int i=0;i<N;i++)
{
mas[i]->print();
cout << endl;
}
for(int i=0; i < N; i++)
s += mas[i]->price;
cout <<"Total_price:" << s << endl;
for(int i=0;i>N;i++)
{
delete mas[i];
}
}
catch(ArmoredDoor::Empty a)
{
cout<<"Vu vvely Strenght menshe 23 vidkruite programu shche raz i vvedit pravulni dani "<<a.func<<endl;
}
cin.get();
cin.get();
}

2 ответов в теме “Блок исключения”

  1. 2
    Quizful Team ответил:

    #1 Нужно сделать цикл, который внутри будет запрашивать данные, проверять их и если данные не верные, то переходить к следующей итерации. Если же данные введены корректно, то осуществить выход из цикла и выполнение остальной логики программы.

  2. 1
    Алексей Злобин ответил:

    Ты искренне надеешься, что кто-то попробует понять эту хрень без форматировнаия и с комментариями транслитом?

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.