Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Легкий Вопрос!!! (http://forum.oszone.net/showthread.php?t=65868)

ZekOm 18-05-2006 13:39 439444

Легкий Вопрос!!!
 
Подскажите пожалуйста как можно проверить являится ли числом введенная строка!!!???

cout<<"Vvedite zna4enie per "<<p[i].sumboli<<": ";

/////////////тут надо проверить являится введенное пользователем значение числом!!//////////////////////
////////////если да то выполняется записть, если нет то возврошает назат для ввода!!///////////////////

cin>>p[i].znach;

Arrest 18-05-2006 14:42 439472

Есть 2 выхода: первый собственный, второй из библиотеки C.
Я опишу ситуацию, когда строка введена в char* in;
Способ 1:
PHP код:

...
const 
int err_code=-//значение для возврата
int cnt=0;
bool flag=true;
int forfor=0;
while(
in[cnt]!="\0" && flag){
 for(
forfor=0forfor<10forfor++){
  if(
in[cnt]!==forfor){flag=!flag; break;}
 }
}
...
if(!
flag)return(err_code); 

Способ 2:
PHP код:

#include <ctype.h>
...
const 
int err_code=-//значение для возврата
bool flag=true;
while(
in[cnt]!="\0" && flag)flag=isdigit(in[cnt]);
...
if(!
flag)return(err_code); 


ZekOm 18-05-2006 15:37 439507

Спасибо!за помошь но я чтото не разобрался и решил етоу проблему вот так!!!

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;
}

pva 21-05-2006 17:25 440617

Товарищи, будьте проще!
Код:


double val = double();
do
{
    std::cin.flags(std::ios::goodbit); // иначе цикл заглючит, когда там встанет std::ios::failbit
    std::cout << "ну типа введите там ";
}
while(!(std::cin >> val));

std::cout << "вы ввели: " << val << endl;



Время: 03:48.

Время: 03:48.
© OSzone.net 2001-