Witam
Napisałem program pokazujący mój problem:
#include <iostream>
#include <cstdlib>
#include <stdio.h>
#include <cstring>
#include <string>
using namespace std;
bool isnumber( const std::string & v )
{
for( size_t i = 0; i < v.size(); ++i )
{
if( v[ i ] < '0' || v[ i ] > '9' ) return false;
}
return true;
}
bool isword( const std::string & v )
{
for( size_t i = 0; i < v.size(); ++i )
{
if( v[ i ] >= '0' && v[ i ] <= '9' ) return false;
}
return true;
}
int main()
{
string liczba;
long double liczbaprzecinek;
powrot:
cin >> liczba;
if (isword(liczba))
{
if (liczba == "back")
{
goto powrot;
}
}
else
{
liczbaprzecinek = stold(liczba);
}
if (isnumber(liczba))
{
cout << liczbaprzecinek << "*" << liczbaprzecinek << "=" << liczbaprzecinek * liczbaprzecinek << endl;
}
////liczbaprzecinek = stold(liczba);
cout << endl; cout << endl;
return 0;
}
Dla liczb normalnych np: 234, bez przecinka program działa, z moich badań wynika, że if działa tylko dla liczb bez przecinka, czyli problem może być w bool, tylko nie wiem jaki.

Natomiast gdy podam liczbę z przecinkiem to nie rozpisuje działania i nie podaje wyniku.

Sprawdzałem czy stold działa, działa poprawnie, nie wiem dlaczego if się wykonuje dla liczb bez przecinka a z przecinkiem już się nie wykonuje. Czy ktoś wie w czym jest problem?