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

Срочно !!!Строки С++!!С++!!

Дана строка. Если она представляет собой запись целого числа, то
вывести 1, если вещественного (с дробной частью) — вывести 2; если
строку нельзя преобразовать в число, то вывести 0. Считать, что
дробная часть вещественного числа отделяется от его целой части
десятичной точкой «.» С++
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
while (true) {
cout << ">>> ";
cin >> s;
int flag = 0;
char x = s.front();
bool num = isdigit(x);
if (x == '-' || x == '+' || x == '.' || num) {
int dot = x == '.' ? 1 : 0;
auto i = s.begin() + 1;
while (i != s.end()) {
if (*i == '.') ++dot;
else if (!isdigit(*i)) break;
if (!num) num = !num;
if (dot > 1) break;
++i;
}
if (i == s.end() && dot <= 1 && num) flag = dot? 2 : 1;
}
cout << "<<< " << flag << '\n';
}
}
Владимир Кладовщиков
Владимир Кладовщиков
79 706
Лучший ответ
dot=0;
for(i:str)switch(i){
case '+': if (str[0]!='+')return 0; break;
case '-': if (str[0]!='-')return 0; break;
case '.': dot++;if(dot>1)return 0; break;
case '0' ...'9': break;
default: return 0; // обработка экспоненциальной записи - самостоятельно
}
return dot+1;
Артём Лютый
Артём Лютый
88 239
qaru.site/questions/53207/how-to-convert-a-number-to-string-and-vice-versa-in-c
int result = 1;

for( int i = 0, sz = str.size(); i < sz; ++i )
{
auto ch = str[ i ];

if( ch == '.' )
{
result = 2;
}
else if( isalpha( ch ) )
{
result = 0;
break;
}
}
Маргулан Бакир
Маргулан Бакир
30 070
Артём Лютый 1.2.3.4.5 => результат 2 ?
cplusplus.com/reference/string/string/find/

Ищите точку, пробуйте преобразовать, ловите ошибку при преобразовании. Если поймали то 0, не поймали, то проверка на точку String::find..
Nodir Qoldibekov
Nodir Qoldibekov
2 782
вводишь строку + записываешь строку цифр
пробегаешься от 0 до длины строки
если символ строки равен запятой ретурн 2
если символ не равен ни одному символу из строки цифр ретурн 0
если вышел из всех циклов ретурн 1