PDA

View Full Version : مبتدی: نحوه ی استفاده از Boolean:



senator0
دوشنبه 15 خرداد 1396, 00:25 صبح
سلام

کدی که نوشتم با if و if else به این صورت هست که اگر کاربر:
عدد وارد کند، خروجی num باشه
حرف وارد کند، خروجی id باشه
عملگر وارد کند، خروجی خود عملگر باشه
عبارات ثابت مثل if وارد کنه خود عبارت رو از خروجی بگیره.

اما با دوتا مشکل روبرو شدم:
1: عددهای دو رقمی رو به جای num در خروجی numum میزنه!!
2: عبارت های ثابت مثل if رو در خروجی بصورت idid میزنه!!
به پیشنهاد استادم بهتره چهارتا boolean بگیرم که ورودی رو false بزنم و... اما متاسفانه من تا الان با boolean و این شیوه ای که استاد گفته کار نکردم و از طریق سرچ اینترنت هم مطلبی پیدا نکردم که بتونم بخوبی یاد بگیرم!!

ممنون میشم اگر کمک کنید که بدون boolean ِیا با boolean چطوری می تونم به نتیجه دلخواه برسم.

عکس کدی که نوشتم:
145412

علی بهمنی جلالی
سه شنبه 16 خرداد 1396, 19:59 عصر
سلام
من کد شما را به شکل زیر تغییر دادم. کد زیر دو مشکلی را که شما به آن اشاره کرده بودید برطرف می‌سازد اما کد زیر یک مشکل هم دارد. به عنوان مثال اگر بنویسید 123asd خروجی num را نمایش می‌دهد. (البته asd123 درسته، یعنی خروجی asd123 را نمایش می‌دهد.) اگر با عدد شروع شود و در ادامه حرف هم با آن بی‌آید آن را به عنوان «عدد» در نظر می‌گیرد، نه به عنوان «عبارت ثابت».

#include <iostream>
using namespace std;


int main()
{
bool isConstantExpresstion = false;
bool isOneCharacter = true;
bool isMultiDigit = false;
char variable[100] = {'\0'}; // important


cout << "Please enter your phrase...";
cout << '\n';
cin >> variable;


if (variable[1] != '\0')
{
isOneCharacter = false;
}


cout << "Scanner from is..." << '\n';


for (int i = 0; variable[i] != '\0'; ++i)
{
if ( (variable[i] >= 'a' && variable[i] <= 'z') && isOneCharacter == true)
{
cout << "id";
}


else if (variable[i] == '+' || variable[i] == '-' ||
variable[i] == '*' || variable[i] == '/' || variable[i] == '%')
{
cout << variable[i];
}


else if (variable[i] >= '0' && variable[i] <= '9' &&
isMultiDigit == false && isConstantExpresstion == false)
{
cout << "num";
isMultiDigit = true;
}


else if (isMultiDigit == false)
{
cout << variable[i];
isConstantExpresstion = true;
}
}


cout << '\n';
}

senator0
پنج شنبه 18 خرداد 1396, 20:31 عصر
سلام
من کد شما را به شکل زیر تغییر دادم. کد زیر دو مشکلی را که شما به آن اشاره کرده بودید برطرف می‌سازد اما کد زیر یک مشکل هم دارد. به عنوان مثال اگر بنویسید 123asd خروجی num را نمایش می‌دهد. (البته asd123 درسته، یعنی خروجی asd123 را نمایش می‌دهد.) اگر با عدد شروع شود و در ادامه حرف هم با آن بی‌آید آن را به عنوان «عدد» در نظر می‌گیرد، نه به عنوان «عبارت ثابت».

#include <iostream>
using namespace std;


int main()
{
bool isConstantExpresstion = false;
bool isOneCharacter = true;
bool isMultiDigit = false;
char variable[100] = {'\0'}; // important


cout << "Please enter your phrase...";
cout << '\n';
cin >> variable;


if (variable[1] != '\0')
{
isOneCharacter = false;
}


cout << "Scanner from is..." << '\n';


for (int i = 0; variable[i] != '\0'; ++i)
{
if ( (variable[i] >= 'a' && variable[i] <= 'z') && isOneCharacter == true)
{
cout << "id";
}


else if (variable[i] == '+' || variable[i] == '-' ||
variable[i] == '*' || variable[i] == '/' || variable[i] == '%')
{
cout << variable[i];
}


else if (variable[i] >= '0' && variable[i] <= '9' &&
isMultiDigit == false && isConstantExpresstion == false)
{
cout << "num";
isMultiDigit = true;
}


else if (isMultiDigit == false)
{
cout << variable[i];
isConstantExpresstion = true;
}
}


cout << '\n';
}

سلام
خیلی ممنون از وقتی که گذاشتین. خدا خیرتون بده
کدی که زحمت کشیدین برای وقتی که کاربر تنها یک کاراکتر وارد میکنه درست عمل می کنه و خروجی رو میده اما اگر یه عبارت رو وارد کنه خیر...
مثلا اگر کاربر وارد کنه:
if(a>2)then 2+a
به جای اینکه خروجی به این شکل باشه:
if(id>num)then num+a
همون عبارت رو عینا تکرار می کنه.
ممنون میشم بفرمایید، باید چه کاری انجام بدم.

علی بهمنی جلالی
سه شنبه 23 خرداد 1396, 16:24 عصر
سلام
خیلی ممنون از وقتی که گذاشتین. خدا خیرتون بده
کدی که زحمت کشیدین برای وقتی که کاربر تنها یک کاراکتر وارد میکنه درست عمل می کنه و خروجی رو میده اما اگر یه عبارت رو وارد کنه خیر...
مثلا اگر کاربر وارد کنه:
if(a>2)then 2+a
به جای اینکه خروجی به این شکل باشه:
if(id>num)then num+a
همون عبارت رو عینا تکرار می کنه.
ممنون میشم بفرمایید، باید چه کاری انجام بدم.
سلام
امیدوارم کد زیر بتواند تا حد بسیار زیادی مشکل شما را برطرف کند:

#include <iostream>
using namespace std;


int main()
{
char variable[100] = {'\0'}; // important
bool isMultiDigit = false;
bool isConstantExpresstion = false;


cout << "Enter your expresstion: ";
cin >> variable;


if ( (variable[1] >= '0' && variable[1] <= '9') &&
( (variable[0] >= 'a' && variable[0] <= 'z') || (variable[0] >= 'A' && variable[0] <= 'Z') )
)
{
isConstantExpresstion = true;
}


else
{
for (int i = 1; i < 100; ++i)
{
if ( (variable[i] >= 'a' && variable[i] <= 'z') ||
(variable[i] >= 'A' && variable[i] <= 'Z') ||
variable[i] == '+' ||
variable[i] == '-' ||
variable[i] == '*' ||
variable[i] == '/' ||
variable[i] == '%'
)
{
isConstantExpresstion = true;
}
}
}


for (int i = 0; i < 100; ++i)
{
if (isConstantExpresstion == false)
{
if (isMultiDigit == false && variable[i] >= '0' && variable[i] <= '9')
{
cout << "num";
isMultiDigit = true;
}


else if ( (variable[i] >= 'a' && variable[i] <= 'z') || (variable[i] >= 'A' && variable[i] <= 'Z') )
{
cout << "id";
}


else if ( variable[i] == '+' ||
variable[i] == '-' ||
variable[i] == '*' ||
variable[i] == '/' ||
variable[i] == '%'
)
{
cout << "Operator: " << variable[i];
}
}


else if (isConstantExpresstion == true)
{
cout << variable[i];
}
}


cout << endl;
}