Решение задачи (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 шт):

Автор решения: livefastdiewhenever

Вы считаете разницу в самом начале, не узнав, какое число больше - x или z. Соответственно, может получиться отрицательное число, а разница должна быть положительной. Либо используйте функцию abs() (оптимальный вариант), либо считайте разницу по разному для каждого случая (либо из большего вычитайте меньшее, либо выводите -rf).

→ Ссылка
Автор решения: AlexGyver

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;// Выводим результат
    }
}
→ Ссылка