Дана строка. Если она представляет собой запись целого числа, то
вывести 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';
}
}
#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';
}
}
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;
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;
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;
}
}
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;
}
}
Артём Лютый
1.2.3.4.5 => результат 2 ?
cplusplus.com/reference/string/string/find/
Ищите точку, пробуйте преобразовать, ловите ошибку при преобразовании. Если поймали то 0, не поймали, то проверка на точку String::find..
Ищите точку, пробуйте преобразовать, ловите ошибку при преобразовании. Если поймали то 0, не поймали, то проверка на точку String::find..
Ильяс Имансериков
а можно код?
вводишь строку + записываешь строку цифр
пробегаешься от 0 до длины строки
если символ строки равен запятой ретурн 2
если символ не равен ни одному символу из строки цифр ретурн 0
если вышел из всех циклов ретурн 1
пробегаешься от 0 до длины строки
если символ строки равен запятой ретурн 2
если символ не равен ни одному символу из строки цифр ретурн 0
если вышел из всех циклов ретурн 1
Ильяс Имансериков
а можно код?
Похожие вопросы
- Дана матрица размером NxM. Упорядочить ее строки по неубыванию их наибольших элементов. в делфи помогите плиз срочно
- QBASIC сформировать мосив состоящая С М-строк,и М-столбцов
- ассемблер, проверка длины строки
- Напишите программу для С++, которая заменяет в символьной строке все буквы a на буквы b, буквы A на буквы B ...
- С++.Обработка строк при помощи указателей.
- FASM. Замена символов в строке, используя подпрограммы.
- Указатели на строки в C++
- простейший код в Делфи: проверка строки на корректность символов
- замена слов в строках С++
- Си работа со строками. Нужна помощь