PDA

View Full Version : سوال: چک کردن عدد بودن یک متن



Arashdn
پنج شنبه 02 آذر 1391, 11:43 صبح
سلام دوستان
من از این روش برای اینکه بفهمم رشته ام عدد هست یا نه استفاده کردم
bool temp;
for(int i = 0; i < s.length(); i++)
{
if(!isdigit(s[i])
temp = false;
}
به خوبی هم جواب داد.
الان اگر بخوام اعداد منفی یا اعشاری رو بگیرم چیکار باید بکنم؟
سعی کردم به شکل
if(!isdigit(s[i]) && s[i] != - )
بنویسمش ، ولی کامپایلر قبول نکرد ...
کسی ایده ای داره؟

ممنون

H_G_G_I
پنج شنبه 02 آذر 1391, 12:46 عصر
اول از همه این

s[i] != -

اشتباه هست .
شما باید با کاراکتر مقایسه کنی منفی باید بین ' ' باشه !

s[i] != '-'

ساده ترین راه اینه که اول ببینی s[0] عدده یا کاراتر منفیه یا چیز دیگه !
بعد شروع کنی به بررسی بقیه !
من اینو نوشتم !
برای اعشاری هم خودتون سعی کنید می شه !
بهتره همه چیز تو تابع باشه ! این طوری هم نظم داره هم قابل فهم تره !:لبخندساده:


#include <iostream>

void digitCheck(std::string& _str)
{
if(_str[0] == '-')
{
for(int i = 1; i < _str.length(); i++)
{
if(!isdigit(_str[i]))
{std::cout << "addad nist\n"; return;}
}
std::cout << "manfiye\n";
}
else if(isdigit(_str[0]))
{
for(int i = 1; i < _str.length(); i++)
{
if(!isdigit(_str[i]))
{std::cout << "addad nist\n"; return;}
}
std::cout << "mosbate\n";
}
else
{
std::cout << "addad nist\n";
}
}

int main(int argc, char* argv[])
{
std::string s1 = "123";
std::string s2 = "-123";
std::string s3 = "a123";
std::string s4 = "a12g";
digitCheck(s1);
digitCheck(s2);
digitCheck(s3);
digitCheck(s4);
system("PAUSE");
}

مسعود اقدسی فام
پنج شنبه 02 آذر 1391, 13:00 عصر
bool temp;
if(!isdigit(s[0]) && s[0] != '-' )
{
temp = false;
}
else
{
for(int i = 1; i < s.length(); i++)
{
if(!isdigit(s[i])
temp = false;
}
}