Другие языки программирования и технологии

Как сделать условие в C++?

Добрый день! Как сделать вот такое условие в C++:

int num1;
float num2;
cin >> num1;

если num1 имеет плавающую точку, то num1 = num2

иначе если num1 не имеет плавающую точку, то num1 остается num1
// лично я бы сделал через строку потом эту строку преобразовывал в число
// Но ладно делаем по твоему
// у тебя ошибка изначально есть
// ввод от пользователя должен быть в float или double переменную --
// потом эту переменную Округляешь с функцией floor
// и раскидываешь по нужным переменным

#include
#include // не забываем подключить библиотеку math.h - математических функций

using namespace std;

int main()
{
float fnum = 0;
cin >> fnum;

if( floor(fnum) < fnum ) /* округляем и проверяем */
{ /* делай что надо */
cout << "число с точкой" << endl;
}
else
{ /* делай что надо */
cout << "целое чило" << endl;
}

cout << fnum << endl;

return 0;
}
Алексей Шуйков
Алексей Шуйков
16 208
Лучший ответ
#include <iostream>
#include <string>
using namespace std;
class init {
public:
explicit init(string num) : n(num) { parse(); }
bool is_integer()const { return flag; }
int integer()const { return is_integer() ? i : INT_MIN; }
float real()const { return f; }
private:
void parse() {
auto index = n.find(".");
if (index == string::npos) {
i = stoi(n);
flag = true;
} else flag = false;
f = stof(n);
}
string n;
int i;
float f;
bool flag;
};
int main() {
cout << "number: ";
string num;
cin >> num;
init number(num);
if (number.is_integer()) {
auto i = number.integer();
cout << "Integer: " << i << endl;
} else {
auto f = number.real();
cout << "Real: " << f << endl;
}
cin.ignore();
cin.get();
}
Как num1 может "иметь плавающую точку", если это целочисленная переменная?
Андрей Дурасов
Андрей Дурасов
58 065
операторы if и else
Денис Чижевский Спасибо, капитан очевидность! А как всунуть в эти операторы условия? Так чтоле:

if (num1 have plavat point = num2)

?
а смысл в int записывать число с плавающей?
Базилио ))))
Базилио ))))
239
Денис Чижевский Я просто делаю калькулятор. Все операции с числами без плавающей точки сделал. Но пользователь же может ввести число с плавающей точки.
Не правильное условие. Возможно вместо типа int должен стоять float или double?
Shota Gagashvili
Shota Gagashvili
141
Денис Чижевский Что за double? Про такое я еще не слыхал .-.