C/C++

Помогите, пожалуйста, нужно решить задачи С++

1. Пользователь вводит два вещественных числа. Если первое превосходит второе более, чем а два раза, то найдите их произведение и разность первого и второго и выведите их на экран. В противном случае вычислите сумму их модулей и выведите их на экран.
2. Пользователь вводит два целых двузначных числа. Если большее из них чётное, то выведите на экран первую цифру максимального числа. В противном случае вычислите частное большего и меньшего и выведите его на экран.
Dmitriy Matus
Dmitriy Matus
64
#include <iostream>
#include <cmath>
using namespace std;
void first(const double a, const double b) {
cout << "Result: ";
if (a > b * 2) cout << a * b << ' ' << a - b;
else cout << abs(a) + abs(b);
puts("");
}
void second(const int a, const int b) {
cout << "Result: ";
if (a > b) cout << abs(a / 10);
else cout << b - a;
puts("");
}
double real(const char* msg) {
cout << msg;
double value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
int integer(const char* msg, const unsigned rank = 0U) {
auto flush = [] { cin.ignore(cin.rdbuf()->in_avail()); };
int value;
cout << msg;
cin >> value;
flush();
if (rank) {
while (static_cast<unsigned>(log10(abs(value)) + 1U) != rank) {
cout << msg;
cin >> value;
flush();
}
}
return value;
}
int main() {
puts("\tExercise #1");
auto a = real("First: ");
auto b = real("Second: ");
first(a, b);
puts("");
puts("\tExercise #2");
auto c = integer("First: ", 2);
auto d = integer("Second: ", 2);
second(c, d);
system("pause > nul");
}
Андрей Косенко
Андрей Косенко
68 084
Лучший ответ
cin>>a>>b;a>b*2?cout<<a*b<<","<<a-b:cout<<abs(a)+abs(b);
Oleg Kory
Oleg Kory
97 912
double fNum, sNum;
cout<<"Введите первое число= "; cin>>fNum;
cout<<"Введите второе число= "; cin>>sNum;

if (abs(fNum/sNum)>2.0 || abs(fNum/sNum)<0.5)
{ cout<<"Первое больше второго более, чем в 2 раза"<<endl;
cout<<fixed<<"Произведение их= "<<fNum*sNum<<""<<" а сумма= "<<fNum+sNum<<endl;}
else { cout<<"Первое не больше второго в 2 раза"<<endl;
cout<<fixed<<"Сумма их модулей= "<<abs(fNum)+abs(sNum)<<endl; }
Яша Кац
Яша Кац
21 700
Dmitriy Matus Полный вариант такой?

#include
using namespace std;
int x, y;
int main
{
double fNum, sNum;
cout<<"Введите первое число= "; cin>>fNum;
cout<<"Введите второе число= "; cin>>sNum;

if (abs(fNum/sNum)>2.0 || abs(fNum/sNum)<0.5)
{ cout<<"Первое больше второго более, чем в 2 раза"<<endl;
cout<<fixed<<"Произведение их= "<<fNum*sNum<<""<<" а сумма= "<<fNum+sNum<<endl;}
else { cout<<"Первое не больше второго в 2 раза"<<endl;
cout<<fixed<<"Сумма их модулей= "<<abs(fNum)+abs(sNum)<<endl;
}
Яша Кац это только первое. Второе позже
Яша Кац https://pastebin.com/EL5qQy8u это второе
Проверяй сама
Яша Кац кстати первое цифра в моём понимании это десятки. Если нужны единицы, то cout<<grt - grt / 10 * 10
Яша Кац а насчёт первого задания проверку на ноль сделай или оставь как есть - типа это системная ошибка будет всё равно перехвачена и аварийный выход из программы
Учи язык, может великим программистом станешь
сайт не дает писать библиотеки крч там впишешь iostream, cmath, alghoritm в вот таких скобках < > после #include

Первый код
#include
#include
#include
using namespace std;
int x,y;
int main
{
cin >> x >> y;
if(x > y * 2)
{
cout << x * y << " " << x - y;
}
else
{
cout << abs(x) + abs(y);
}
}

Второй код
#include
#include
#include
using namespace std;
int a,b;
int main
{
cin >> a >> b;
int m = max(a, b);
int r = min(a, b);
if(m % 2 == 0)
{
cout << m / 10;
}
else
{
cout << m / r;
}
}
Dmitriy Matus В первой программе много ошибок выдаёт
Павел Сергеев скобки там подправьте где то, а вы увидели что я отредактировал?
Яша Кац и учтите, что может быть -1.0 и -3.0 кто правильнее подсчитает
Яша Кац и проверку на ноль никто не учитывал )))
Яша Кац Если все несуразности поправить, то там долго ещё править