A community for students.
Here's the question you clicked on:
 0 viewing
timo86m
 one year ago
In c++
lets say i have a variable char lets call it
char variable;
and i want to test it if it is any of these
'a', 'b', or 'c'
after the user inputs a char
will the below snip of code work as a shorcut
if(variable== 'a' 'b'  'c') cout << "your variable is one of those";
or do i have to do it the long way like below
if(variable== 'a' variable =='b'  variable== 'c') cout << "your variable is one of those";
timo86m
 one year ago
In c++ lets say i have a variable char lets call it char variable; and i want to test it if it is any of these 'a', 'b', or 'c' after the user inputs a char will the below snip of code work as a shorcut if(variable== 'a' 'b'  'c') cout << "your variable is one of those"; or do i have to do it the long way like below if(variable== 'a' variable =='b'  variable== 'c') cout << "your variable is one of those";

This Question is Open

timo86m
 one year ago
Best ResponseYou've already chosen the best response.0Or lets say i made this function that takes char c and returns true if it is a number 09. Do I absolutely have to write it like that? all of it on the if statement? bool boolisnum( char c) { if (c=='0'c=='1'c=='2'c=='3'c=='4'c=='5'c=='6'c=='7'c=='8'c=='9') return true; else return false; }; can if (c=='0'c=='1'c=='2'c=='3'c=='4'c=='5'c=='6'c=='7'c=='8'c=='9') be reduced to if (c=='0' '1''2''3''4''5''6''7''8''9')

bibby
 one year ago
Best ResponseYou've already chosen the best response.1char c = 'a'; if (c=='0' '1''2''3''4''5''6''7''8''9') cout << "test"; that code segment still outputs "test" no matter what value c is. I think the reasoning behind this is that you can think of characters as integers. if(CONSTANT) executes the conditional as long as the number doesn't evaluate to 0 (false). if('6') is the same thing as saying if(54). Look at the ascii table: http://www.asciitable.com/ bool b = true; if(1) and if(54) and if(1) and if(b) all execute the conditional. Use a switch or the conditional operator. Either way, write it out.

timo86m
 one year ago
Best ResponseYou've already chosen the best response.0I know for sure works. bool boolisnum( char c) { if (c=='0'c=='1'c=='2'c=='3'c=='4'c=='5'c=='6'c=='7'c=='8'c=='9') return true; else return false; }; if i where to type in main boolisnum('4'); it will evaluate to true Note that idk what boolisnum(4); would do. It probably would not compile since 4 is of type int not char. I am just looking to make my code shorter by not putting all those c==' 's. oh and if boolisnum('b'); it evaluates as false.

bibby
 one year ago
Best ResponseYou've already chosen the best response.1#include <cctype> isdigit() http://www.cplusplus.com/reference/cctype/isdigit/

bibby
 one year ago
Best ResponseYou've already chosen the best response.1or, switch(c){ case '1': case '2': ... case '0': etc. break; }

timo86m
 one year ago
Best ResponseYou've already chosen the best response.0switch makes it longer. The whole point is to make my code shorter. Oh and os is messing up.

bibby
 one year ago
Best ResponseYou've already chosen the best response.1I literally just gave you a single function. It doesn't get shorter than that

bibby
 one year ago
Best ResponseYou've already chosen the best response.1bool boolisnum( char c){ if (isdigit(c)) return true; return false; }

timo86m
 one year ago
Best ResponseYou've already chosen the best response.0yes thank you that does work now i wanna know is if (c=='0' '1''2''3''4''5''6''7''8''9') same as if (c=='0'c=='1'c=='2'c=='3'c=='4'c=='5'c=='6'c=='7'c=='8'c=='9')

bibby
 one year ago
Best ResponseYou've already chosen the best response.1I explained it in my first post. It isn't the same thing

bibby
 one year ago
Best ResponseYou've already chosen the best response.1It'll always evaluate to true no matter what

timo86m
 one year ago
Best ResponseYou've already chosen the best response.0darn so i do gotta use c=='0'c=='1'c=='2'c=='3'c=='4'c=='5'c=='6'c=='7'c=='8'c=='9'

bibby
 one year ago
Best ResponseYou've already chosen the best response.1You don't gotta use anything when there's a function written for you. If you refuse to use perfectly find functions, yeah, you have to do that...

timo86m
 one year ago
Best ResponseYou've already chosen the best response.0I am just saying as an example. I know there is one that checks for if its upper of lower case. BUt There wont be one for every single one of my needs :).

bibby
 one year ago
Best ResponseYou've already chosen the best response.1lol the STL is pretty comprehensive check http://www.cplusplus.com/reference/cctype/ for more. Read about how chars/ascii work in relation to integers. remember if(some constant that isn't 0) always evaluates to true

timo86m
 one year ago
Best ResponseYou've already chosen the best response.0it is a huge library. And sometimes it be quicker making my function instead of looking for it :P

timo86m
 one year ago
Best ResponseYou've already chosen the best response.0and it's a great learning experience :D

TuringTest
 one year ago
Best ResponseYou've already chosen the best response.1to reiterate why if (c=='0' '1''2''3''4''5''6''7''8''9') will always evaluate to "true", is because c++ interprets zero as false, and all nonzero values as true. No char has an ascii value of zero, as binary zero in ascii is the NUL value. For instance if (false  1) will always evaluate to "true", since the second statement, 1, counts as true. equally it could be any nonzero number. if (false  534.7) will also evaluate to "true" As far as the compiler is concerned, this is the same as if (false  true) only something like if (false  0) will evaluate to "false", since zero counts as false. Since the char '0' has an ascii value of 48 in decimal, the statement if (false  '0') is equivalent to if (false  48) which, as I explained above, is equivalent to if (false  true) which will, of course, evaluate to "true"

timo86m
 one year ago
Best ResponseYou've already chosen the best response.0'a'=='d' will evaluate as false 'a'=='a' will evaluate as true i know that much.

bibby
 one year ago
Best ResponseYou've already chosen the best response.1there's no equivalence being done here. The characters are getting interpreted by their INTEGER ascii values. if('a') is the same thing as if(65) or whatever

timo86m
 one year ago
Best ResponseYou've already chosen the best response.0idk what it does but those statements will work i have compiled them and it does work.

bibby
 one year ago
Best ResponseYou've already chosen the best response.1use full sentences because I don't understand you. if(c=='0''1'...) will not work...

wio
 one year ago
Best ResponseYou've already chosen the best response.0Okay, ASCII was ordered the way it was for a reason. ``` # is digit if '0' <= variable <= '9': # is a,b, or c if 'a' <= variable <= 'c': ``` Look at the chart.

wio
 one year ago
Best ResponseYou've already chosen the best response.0I suppose since this is C++ you should be using `if (` ... `) {` ... `}` instead, but the point still stands.

seandisanti
 one year ago
Best ResponseYou've already chosen the best response.0Why reinvent the wheel? Regex is a great way to check input against a pattern in any language. http://www.cplusplus.com/reference/regex/regex_search/
Ask your own question
Sign UpFind more explanations on OpenStudy
Your question is ready. Sign up for free to start getting answers.
spraguer
(Moderator)
5
→ View Detailed Profile
is replying to Can someone tell me what button the professor is hitting...
23
 Teamwork 19 Teammate
 Problem Solving 19 Hero
 Engagement 19 Mad Hatter
 You have blocked this person.
 ✔ You're a fan Checking fan status...
Thanks for being so helpful in mathematics. If you are getting quality help, make sure you spread the word about OpenStudy.