Решение задачи (praktikum)
Решил задачу, по всем нормам, но система ругается, в чем может быть ошибка? Задачка:
Вы узнали, как сравнивать неравные объекты. С равными объектами то же самое, только оператор сравнения будет ==. Напишите код, который сравнивает половины апельсина. Программа считывает два вещественных числа — размеры половинок. Если числа равны, программа должна выводить на экран The orange is divided into two equal parts. Если первое число больше, пусть программа выводит Cut off X from the first part. Если больше второе число — пусть выводит Cut off X from the second part. Вместо X подставьте разницу в размере.
Код:
#include <iostream>
#include <string>
using namespace std;
int main() {
double x, z, rf;
cin >> x >> z;
rf = x - z;
if (x == z) {
cout << "The orange is divided into two equal parts" << endl;
return 0;
}
if (x > z) {
string msg1 = "Cut off ";
string msg2 = " from the first part";
cout << msg1 + to_string(rf) + msg2 << endl;
return 0;
}
if (x < z) {
string msg1 = "Cut off ";
string msg2 = " from the second part";
cout << msg1 + to_string(rf) + msg2 << endl;
return 0;
}
}
Ошибка:
Задача прошла 10/31 проверок Возможные проблемы:
- Вы не считаете размер половинок вещественным числом
- Вы неправильно обрабатываете случай, когда первая часть больше
- Вы неправильно обрабатываете случай, когда первая часть меньше
Ответы (2 шт):
Вы считаете разницу в самом начале, не узнав, какое число больше - x или z. Соответственно, может получиться отрицательное число, а разница должна быть положительной. Либо используйте функцию abs() (оптимальный вариант), либо считайте разницу по разному для каждого случая (либо из большего вычитайте меньшее, либо выводите -rf).
yusup.abzui!
Мне удалось решить задание, пусть и не идеально:
#include <iostream>
#include <string>
using namespace std;
int main() {
// считайте два размера и определите, какой из них больше
//Объявляем переменные
double a, b, x;
string text1 = "Cut off ";
string text2 = " from the first part";
string text3 = " from the second part";
// считываем все вводимые числа
cin >> a >> b;
//Проверяем через условия
if ( a == b )
{
cout << "The orange is divided into two equal parts" << endl;
}
else if ( a > b )
{
x = a - b; // От большего вычесть меньшее
cout << text1; cout << x; cout << text2 << endl; // Выводим результат
}
else if ( b > a )
{
x = b - a; // От большего вычесть меньшее
cout << text1; cout << x; cout << text3 << endl;// Выводим результат
}
}