Witam. Ciekawi mnie czy jest jakiś sposób sprawdzenia, czy liczba jest dwucyfrowa za pomocą chara, czy coś takiego, tak jak np. przy zliczaniu ilości liter w słowie. Nie interesuje mnie rozwiązanie najprostsze, że if liczba>9 lub liczba<100.
Jest, Adrianie.
adrian.widzew napisał(a):
czy liczba jest dwucyfrowa za pomocą chara
Znaczychar*
? To będzie
const char *num = "12";
if(strlen(num) == 2) {}
Nie wiem jak rozumiesz "za pomocą chara". Ale jeśli chodzi Ci o to, że char jest jakąś liczbą, jak int (char 'A' == 65) to problem sprowadza się do sprawdzenia czy int jest dwucyfrowy. Na podstawie tego, co napisałeś if liczba>9 lub liczba<100
oraz tego, iż char przyjmuje wartości całkowite wnioskuję, że w naszych rozważaniach przyjmujemy, że sprawdzaną liczą jest liczba całkowita.W innym przypadku rozwiązań jest wiele, w zależności od przyjętych ograniczeń (np. http://b.agilob.net/ile-jest-liczb-dwucyfrowych-i-dlaczego-360/ (art nie mój)). Ale jeśli rozpatrujemy tylko liczby całkowite to istnieją różna sposoby.
Np. dla rozpatrywanej zmiennej x floor(abs(x)/10)!=0 && floor(abs(x)/100)==0
jest spełnione tylko, gdy x jest w podanym przez Ciebie zakresie. Można to sprowadzić do bardziej ogólnej postaci, gdzie n jest oczekiwaną liczbą cyfr w zapisie dziesiętnym ''floor(abs(x)/10(n-1))!=0 && floor(abs(x)/10n)==0", można też to rozwiązać inaczej. Przykładem może być po prostu obliczenie liczby cyfr w systemie dziesiętnym. (x!=0 && (floor(log10(abs(x)))+1)==n)||(x==0 && n==1), tylko trzeba pamiętać, że wrzucenie tego w ifa może dać różne skutki (logarytm z zera), zapis tylko schematyczny.