Решил изучать C++ и написал первый простенький калькулятор. Он то работает, но проблема вот в чем: когда ввожу первое десятичное число через запятую (например 14,34
) то консоль выдает непонятные значения. А когда ввожу это же десятичное число через точку (например 14.34
) , то все правильно считает. Подскажите в чем проблема, уже весь интернет перерыл, найти ничего не смог.
Вот код:
#include <iostream>
using namespace std;
int main()
{
setlocale (LC_ALL, "Rus");
float a, b;
cout << "Введите первое число" << endl;
cin >> a;
cout << "Введите второе число" << endl;
cin >> b;
float c = a + b;
float d = a - b;
float f = a * b;
float g = a / b;
cout << "Сумма чисел:" << c << endl;
cout << "Разность чисел:" << d << endl;
cout << "Умножение чисел:" << f << endl;
cout << "Деление чисел:" << g << endl;
system("pause");
return 0;
}
Нужно как то заставить программу вводить то, что вам нужно. Это можно делать по разному. Вот один из вариантов:
float a;
float fraction = .0;
cin >> a;
if (cin.peek() == ',') { //если следующий символ запятая
cin.ignore(); //пропускаем запятую
cin >> fraction; // вводим дробную часть
}
while (int(fraction)) // пока дробная часть не меньше 1
fraction /= 10;
a += fraction;
cout << a;
Поток ввода не должна понимать ваши намерения. Он работает так, как ему "велено "...
Да простят меня за это боги...
#include <algorithm>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
int main() {
setlocale(LC_ALL, "Rus");
std::string a_s, b_s;
cout << "Введите первое число" << endl;
cin >> a_s;
cout << "Введите второе число" << endl;
cin >> b_s;
std::replace(a_s.begin(), a_s.end(), ',', '.');
std::replace(a_s.begin(), a_s.end(), ',', '.');
float a{std::stof(a_s.c_str())};
float b{std::stof(a_s.c_str())};
float c = a + b;
float d = a - b;
float f = a * b;
float g = a / b;
cout << "Сумма чисел:" << c << endl;
cout << "Разность чисел:" << d << endl;
cout << "Умножение чисел:" << f << endl;
cout << "Деление чисел:" << g << endl;
system("pause");
return 0;
}
В общем задача такая, что мне нужно проверить не перекрывает ли какое-нибудь окно моё приложениеДля этого я использую EnumDesktopWindows, в коллбеке...
Как можно определить в Makefile, под какую ОС компилируется программа? Желательно знать, хотя бы, в пределах IOS/Android/Windows/LinuxХотелось бы иметь общий...