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

Немного баг на с++

Раз интернет медленно работает решил чё то по быстренькому забабахать на с++,но проблема в том, что когда пишу дробные числа, то cout тупо бесконечно пишется, но то есть сообщения и исправить только перезапуском.
#include
using namespace std;

void sravnenie_func()
{
int k;
int a;
cout << "Введите первое число для сравнения: ";
cin >> k;
cout << "Введите второе число для сравнения: ";
cin >> a;
if (k > a) {
cout << "Первое число больше второго" << endl;
sravnenie_func();
}
else if (k == a) {
cout << "Оба числа равны" << endl;
sravnenie_func();
}
else {
cout << "Первое число меньше второго" << endl;
sravnenie_func();
}
}

int main()
{
setlocale(0, "");
sravnenie_func();
system("pause");
return 0;
}
#include <iostream>
#include <string>
using namespace std;
enum class Compare {
Less = -1,
Equality,
More
};
template<typename Type>
Compare compare(const Type& a, const Type& b) {
if (a < b) return Compare::Less;
if (a == b) return Compare::Equality;
return Compare::More;
}
double input(const char* msg) {
cout << msg;
double x;
cin >> x;
return x;
}
int main() {
string res;
while (true) {
const auto a = input("a: ");
const auto b = input("b: ");
switch (compare(a, b)) {
case Compare::Less: res = "a < b"; break;
case Compare::Equality: res = "a == b"; break;
case Compare::More: res = "b < a"; break;
default: exit(0);
}
cout << res << '\n';
system("pause");
}
}
ЖА
Животовский Алексей
53 436
Лучший ответ
зачем внутри sravnenie_func вызывать опять sravnenie_func? Лучше в функции main явно написать цикл вызова sravnenie_func.
Сергей Кузьмин я решил тупо сделать, что бы функция запускалась, после конца сравнения
Сергей Кузьмин рекурсия короче
#include < iostream >

using namespace std;

void sravnenie_func()
{
float k, a;

for (;;)
{
cout << "Введите первое число для сравнения: ";
cin >> k;
cout << "Введите второе число для сравнения: ";
cin >> a;
if (cin.rdbuf()->in_avail() != 1)
{
cin.clear();
cin.ignore(cin.rdbuf()->in_avail(), '/n');
cout << "Ошибка при вводе. Повторите ввод обоих чисел" << endl;
}
else
break;
}

if (k > a)
{
cout << "Первое число больше второго" << endl;
}
else if (k == a)
{
cout << "Оба числа равны" << endl;
}
else
{
cout << "Первое число меньше второго" << endl;
}

cout << "Желаете продолжить работать с программой? 1 - Да, 0 - Закрыть ";
int f;
for (;;)
{
cin >> f;
if (cin.rdbuf()->in_avail() != 1)
{
cin.clear();
cin.ignore(cin.rdbuf()->in_avail(), '/n');
cout << "Ошибка при вводе. Повторите" << endl;
}
else
break;
}
if(f == 1)
sravnenie_func();
}

int main()
{
setlocale(0, "");
sravnenie_func();
system("pause");
return 0;
}