Показать полную графическую версию : Легкий Вопрос!!!
Подскажите пожалуйста как можно проверить являится ли числом введенная строка!!!???
cout<<"Vvedite zna4enie per "<<p[i].sumboli<<": ";
/////////////тут надо проверить являится введенное пользователем значение числом!!//////////////////////
////////////если да то выполняется записть, если нет то возврошает назат для ввода!!///////////////////
cin>>p[i].znach;
Есть 2 выхода: первый собственный, второй из библиотеки C.
Я опишу ситуацию, когда строка введена в char* in;
Способ 1:
...
const int err_code=-1 //значение для возврата
int cnt=0;
bool flag=true;
int forfor=0;
while(in[cnt]!="\0" && flag){
for(forfor=0; forfor<10; forfor++){
if(in[cnt]!==forfor){flag=!flag; break;}
}
}
...
if(!flag)return(err_code);
Способ 2:
#include <ctype.h>
...
const int err_code=-1 //значение для возврата
bool flag=true;
while(in[cnt]!="\0" && flag)flag=isdigit(in[cnt]);
...
if(!flag)return(err_code);
Спасибо!за помошь но я чтото не разобрался и решил етоу проблему вот так!!!
do
{
char b[20];
double x;
cout<<"Vvedite zna4enie per : ";
cin>>b;
if(Proverka(b)==true)
{
x=atof(b);
}
else
{
cout<<"Vvedeno ne 4islo!";
}
}while(Proverka(b)!=true)
bool Proverka(char *a)
{
int k=0;
if(a[0]>='0' && a[0]<='9' || a[0]=='.' || a[0]=='-' || a[0]=='+')
{
for(int i=1;i<(int)strlen(a);i++)
{
if(a[i]>='0' && a[i]<='9' || a[i]=='.')
{}
else
{
return false;
}
if(a[i]=='.')
{
k++;
}
}
}
else
{
return false;
}
if(k>1)
{
return false;
}
return true;
}
Товарищи, будьте проще!
double val = double();
do
{
std::cin.flags(std::ios::goodbit); // иначе цикл заглючит, когда там встанет std::ios::failbit
std::cout << "ну типа введите там ";
}
while(!(std::cin >> val));
std::cout << "вы ввели: " << val << endl;
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.