Skrócenie zapisu porównywania liczb

0

Dopiero zacząłem swoją przygodę z programowaniem i mam pytanie, bardzo możliwe że odpowiedź jest banalna, ale nie mogę jej znaleźć:

W programie chce użyć formuły

while(klawisz!='1' && klawisz!='2' && klawisz!='3') 
	{
		klawisz=_getch();
	}

Moje pytanie brzmi, czy da się skrócić zapis

klawisz!='1' && klawisz!='2' && klawisz!='3'
1

Chyba, że tak:

(!(c >= 49 && c <= 51))
0

To zależy, jakie wartości może przyjmować klawisz

1

(c < 49 || c > 51) ?

0

W tym przypadku tylko te trzy wartości, aż się dziwię że nie wpadłem na rozwiązanie które zaproponował lion137.
Czyli rozumiem, że jeżeli liczby będą np 13, 49,50,51 to nie ma możliwości aby przyrównać zmienną do zbioru tych liczb?

0

Nie dokładnie rozumiem, tak wygląda ASCII: http://www.asciitable.com/

0

Chodzi mi o skrócenie zapisu

while(klawisz!=13 && klawisz != 27)

Do czegoś w postaci (wiem że to jest niepoprawne)

while(klawisz!=(13 && 27))
albo
while(klawisz!={13 && 27})
albo
while(klawisz!={13 , 27})

W tym poście chodzi mi o to czy jest jakiś rodzaj zapisu na taką sytuację, albo inny sposób na zapisanie dłuższego warunku, np

if (wybor==72 || wybor==119|| wybor==77|| wybor==100|| wybor==75|| wybor==97|| wybor==80|| wybor==115|| wybor==13)
0

Może rzuć okiem, czy to Ci pasuje - https://pl.wikibooks.org/wiki/C%2B%2B/Set

1

Pierwszy listing jest poprawny, drugi niepoprawny (składniowo). Rozwiązaniem byłoby nie robić takich warunków:) Tylko takie które są przedziałem w Ascii. A jak już Musisz, to Utwórz std::unordered_set ze wszystkimi znakami, których nie chcesz i Sprawdzaj tylko warunek należenia do zbioru (O(1)).
https://en.cppreference.com/w/cpp/container/unordered_set

0

Dla zakresu unsigned char możesz zrobić odpowiednią tablicę i sprawdzać np:

while(allowed[c])
0

Można umieścić liczby w tablicy i sprawdzić czy wszystkie spełniają warunek:
http://www.cplusplus.com/reference/algorithm/all_of/

0
lion137 napisał(a):

Chyba, że tak:

(!(c >= 49 && c <= 51))

Raczej tak:

(c < '1' || c > '3')

Ew. można użyć bitset: https://owlcation.com/stem/C-bitset-with-example

1 użytkowników online, w tym zalogowanych: 0, gości: 1