@igoodmood

Почему срабатывает else?

При тестировании выводится два условия:92cf77e76ca641799c119df88946da6a.PNG
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
	setlocale(LC_ALL, "Russian");
	float a1,a2,a3,a4,a5,a6,d,z;
	cout<<"Введите стандартный диаметр вагонетки z=";
	cin>>z;
	cout<<"Введите диаметр шейки вагонетки d=";
	cin>>d;
	cout<<"Введите начальную границу погрешности первого сорта a1=";
	cin>>a1;
	cout<<"Введите конечную границу погрешности первого сорта a2=";
	cin>>a2;
	cout<<"Введите начальную границу погрешности второго сорта a3=";
	cin>>a3;
	cout<<"Введите конечную границу погрешности второго сорта a4=";
	cin>>a4;
	cout<<"Введите начальную границу погрешности третьего сорта a5=";
	cin>>a5;
	cout<<"Введите конечную границу погрешности третьего сорта a6=";
	cin>>a6;
	if (fabs(d-z)>a1 && fabs(d-z)<a2){cout<<"Деталь является первосортной"<<endl;}
	if (fabs(d-z)>a3 && fabs(d-z)<a4){cout<<"Деталь является второсортной"<<endl;} 
	if (fabs(d-z)>a5 && fabs(d-z)<a6){cout<<"Деталь является третьесортной"<<endl;} 
	else {cout<<"Деталь бракованная"<<endl;}
	system("pause");
	return 0;
}
  • Вопрос задан
  • 574 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Northsoft
Препод, программист, линуксоид
«else» всегда относится к одному ветвлению. Если вы написали «else» после последнего ветвления, то и вторая ветвь будет относиться к нему же.
При оформлении взаимоисключающих вариантов (например, когда деталь не может одновременно быть и первосортной и бракованной) рекомендуется использовать следующую конструкцию:
if (clause1) {
  action1;
} else if (clause2) {
  action2;
} else {
 action3;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы