Как переделать простой код с If на switch - вопрос №1646762

Производится одиночный выстрел по мишени в виде круга, разделенного на пять колец, с шагом в 1 сантиметр. За попадание в «яблочко» начисляется 10 баллов, за попадание в каждое очередное
кольцо соответственно 8, 6, 4, 2, 1 балл. За попадание в «молоко» — 0 баллов. Определить количество баллов, набранных после выстрела.

#include <iostream>
#include <windows.h>
using namespace std;

int main(){
system(«chcp 1251>text»);
int x,
y,
sumXY;
cout<<"Ââåäèòå x:";
cin>>x;
cout<<"Ââåäèòå y:";
cin>>y;
sumXY=x*x+y*y;

if(sumXY<=1){
cout<<«points 10»;
}
else if(sumXY<=4){
cout<<«points 8»;
}
else if(sumXY<=9){
cout<<«points 6»;
}
else if(sumXY<=16){
cout<<«points 4»;
}
else if(sumXY<=25){
cout<<«points 2»;
}
else if(sumXY<36){
cout<<«points 1»;
}
else if(sumXY==36){
cout<<"Ïîïàäàíèå â ãàáàðèò";
}
else {
cout<<"Íå ïîïàë";
}

return 0;

}

30.09.15
1 ответ

Ответы

Здравствуйте.
Как вариант, вот:
#include <iostream>
#include <windows.h>
using namespace std;
int main() {
    system(«chcp 1251>text»);
    int x,
            y,
            sumXY;
    cout << «Vvedite x:»;
    cin>>x;
    cout << «Введите y:»;
    cin>>y;
    sumXY = x * x + y*y;

    switch(sumXY)
    {
        case 0… 1: cout << «points 10»; break;
        case 2… 4: cout << «points 8»; break;
        case 5… 9: cout << «points 6»; break;
        case 10… 16: cout << «points 4»; break;
        case 17… 25: cout << «points 2»; break;
        case 26… 35: cout << «points 1»; break;
        case 36: cout << «попадание в габарит»; break;
        default: cout << «не попал»; break;
    }
    return 0;
}
Однако, есть вероятность что не все компиляторы смогут собрать это.
Данный пример собирал gcc 4.7.1
03.10.15
Посмотреть всех экспертов из раздела Технологии > C/C++
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store