Что не так с кодом?
#include
#include
using namespace std;
int main()
{int m, a, b, x;
cout << "Vvedite a: " ;
cout << "Vvedite b: " ;
cin >> a ;
cin >> b ;
if (x < 1) m = x + 1;
else if (x = 1) m = a - x + b; // виконується, якщо х = 1
else if (x > 1) m = x- (b/a);
cout << "m=" << m << endl;
return 0;}
Answers & Comments
Ответ:
Спробуй так
cout << "Vvedite a: " ;
cin >> a ;
cout << "Vvedite b: " ;
cin >> b ;
cout << "Vvedite x: " ;
cin >> x ;
if (x < 1) {
m = x + 1;
}
else if (x == 1) {
m = a - x + b;
}
else if (x > 1 && a != 0) {
m = x - (b/a);
}
else {
cout << "Divide by zero error." << endl;
return 1;
}
cout << "m=" << m << endl;
return 0;
Объяснение:
Змінна x не була оголошена або не була присвоєна значення, але вона використовується в умові if. Це може привести до непередбачуваної поведінки програми.
Умова if містить порівняння <, але змінна x не була присвоєна значення. Це також може привести до непередбачуваної поведінки програми.
Умова if містить присвоєння =, але має бути порівняння ==, щоб перевірити, чи рівні змінні x і 1.
Вираз x- (b/a) може привести до ділення на нуль, якщо змінна a дорівнює 0.
Відповідь:
Виправлений код:
#include <iostream>
using namespace std;
int main()
{
int m, a, b, x;
cout << "Vvedite a: " ;
cin >> a ;
cout << "Vvedite b: " ;
cin >> b ;
cout << "Vvedite x: " ;
cin >> x ;
if (x < 1) m = x + 1;
else if (x == 1) m = a - x + b;
else if (x > 1) m = x - (b/a);
cout << "m=" << m << endl;
return 0;
}
Пояснення:
У коді не ініціалізована змінна x перед перевіркою на значення у if...else if. Також у другому умовному операторі умість порівняння (==) використовується операція присвоєння (=), що може призвести до непередбачуваної поведінки програми. Варто замінити "=" на "==" у цьому операторі.