Strona 1 z 1

Wielkokrotna funkcja CASE lub IF

: 11 sie 2010 12:41
autor: teslabox
Witam!

Proszę o pomoc w utworzeniu struktury algorytmu wybierającego.
Program ma polegać na przypisaniu jednej wartości (wejściowej) (liczba typu "0.000") do konkretnego przedziału (jednego z trzynastu) i wystawić na wyjście inną liczbę (stałą i przypisaną tylko temu przedziałowi) (liczba typu "0.000").
W skrócie działanie algorytmu sprowadza się do: zobacz do którego przedziału należy pomiar i podaj przelicznik dla tego przedziału.
Próbowałem z wbudowaną funkcją CASE, ale ona nie umożliwia wielokrotnego wyboru. Jak to sprytnie rozwiązać?

Re: Wielkokrotna funkcja CASE lub IF

: 11 sie 2010 13:30
autor: m3wm3
Witaj,

co powiesz na takie rozwiązanie?

Re: Wielkokrotna funkcja CASE lub IF

: 11 sie 2010 13:45
autor: Pitol
m3wm3 zakładasz, że przedziały są połączone, tzn. 0-5, 5-10, itd. A co jeśli chciałby mieć różne przedziały, np. 0-5, 13-17, 145-200....

A teraz odpowiedź dla teslabox:
Do struktury CASE nie można podpinać liczb typu double czy single. W zasadzie można, ale zostanie przeprowadzona konwersja do I32 (chyba).

Jeśli już chciałbyś podpinać takie liczby do wejścia struktury CASE to najlepiej jest je... pomnożyć :) Tak, żeby uzyskać wartość całkowitą. Zakładasz, że maksymalnie masz 3 liczby po przecinku więc mnożysz przez 1000 i konwertujesz do I32. Potem już możesz sobie w strukturze CASE tworzyć przedziały jakie chcesz.
case.PNG
case.PNG (13.83 KiB) Przejrzano 7447 razy

Wielkokrotna funkcja CASE lub IF

: 11 sie 2010 14:03
autor: m3wm3
Rzeczywiście - mój błąd :(

Za to przy okazji dowiedziałem się o zakresach w CASE, także dzięki :D

Re: Wielkokrotna funkcja CASE lub IF

: 11 sie 2010 14:10
autor: Pitol
Żaden błąd... po prostu inne podejście do problemu ;) Wszak nie do końca sprecyzowane było pytanie.

Re: Wielkokrotna funkcja CASE lub IF

: 11 sie 2010 19:10
autor: wino
Mi się wydaje, że ten case tu jest w ogóle nie potrzebny i tylko zagmatwał problem. Podejście numer 1 było lepsze, pętla FOR i sprawa jest jasna. A co do tych różnych przedziałów to wystarczy skorzystać z klastra o tak:

Wielkokrotna funkcja CASE lub IF

: 11 sie 2010 19:37
autor: Pitol
Faktycznie lepsze rozwiązanie...