Banalny problem z ifem...?

0

Witam wszystkich. Aż mi wstyd że pytam o coś takiego, ale... mam problem z instrukcją warunkową. Napisałem taki oto kod:

void kolor(int t){
    float H = (float)t / 60.0;
    float X = 1.0 - bzw(mod(H) - 1.0); //tutaj są dwie inne funkcje, ale mniejsza o to
    float kolor[3] = {0.0, 0.0, 0.0};

    if ((H>=0) && (H<1)) {kolor = {1.0, X, 0.0}; }
    else if ((H>=1) && (H<2)) {kolor = {X, 1.0, 0.0}; }
    else if ((H>=2) && (H<3)) {kolor = {0.0, 1.0, X}; }
    else if ((H>=3) && (H<4)) {kolor = {0.0, X, 1.0}; }
    else if ((H>=4) && (H<5)) {kolor = {X, 0.0, 1.0}; }
    else if ((H>=5) && (H<=6)) {kolor = {1.0, 0.0, X}; } 

    float tr, tg, tb;
    tr = kolor[0] * dl;
    tg = kolor[1] * dl;
    tb = kolor[2] * dl; 

    //dalsze instrukcje
}

Niestety kompilator wypluwa błąd "expected expression before '{' token" do każdego z ifów. Nie wiem w sumie o co mu chodzi. Co złego jest z wyrażeniami przed klamrą?

Jak się domyślam, problem jest trywialny, ale dopiero zaczynam przygodę z C i niespecjalnie wiem gdzie jest błąd. Ma ktoś jakiś pomysł?

Dzięki i pozdrawiam
mopsiok

0

Twórcy języka C to cioty i tak się po prostu przypisać nie da.

kolor[0] = X;
kolor[1] = 1.0;
kolor[2] = 0.0;
0

Da się tak zrobić tylko tworząc tablicę, później już nie.

0

Oj, to strasznie zlamili ;/. Dzięki za podpowiedź... No dobrze, zatem poprawiłem kod na taki:

    if ((H>=0) && (H<1)) {float kolor[3] = {1.0, X, 0.0}; }
    else if ((H>=1) && (H<2)) {float kolor[3] = {X, 1.0, 0.0}; }
    else if ((H>=2) && (H<3)) {float kolor[3] = {0.0, 1.0, X}; }
    else if ((H>=3) && (H<4)) {float kolor[3] = {0.0, X, 1.0}; }
    else if ((H>=4) && (H<5)) {float kolor[3] = {X, 0.0, 1.0}; }
    else if ((H>=5) && (H<=6)) {float kolor[3] = {1.0, 0.0, X}; } 
    else {float kolor[3] = {0.0, 0.0, 0.0}; }

    float tr, tg, tb;
    tr = kolor[0] * dl;
    tg = kolor[1] * dl;
    tb = kolor[2] * dl;

Ale niestety tym razem wyskakuje błąd przy części drugiej (tr = kolor[0]*dl;), mianowicie "subscripted value is neither array nor pointer". Tylko teraz też nie wiem o co mu chodzi, przecież nie podaję mu całej tablicy. Fakt, wskaźnikiem to to nie jest, ale ja na razie nie wiem co to wskaźnik :P (no, wiem mniej więcej, ale nie umiem używać tego). Trzeba to zrobić na wskaźnikach, nie da rady po ludzku? Przeglądam artykuł o tablicach na Wikibooks w dziale C i tam jakoś normalnie zbierają wartości i wsio działa jak powinno :(.

0

Proponuję zapoznać się z podstawami podstaw. Temat raczej do działu newbe.

0

Oj, faktycznie strasznie głupi błąd... cóż, widzę że nawyki z Pythona robią swoje.
No nic, dzięki wszystkim za pomoc, problem rozwiązany na zwykłych zmiennych, bo skoro ma być ich tylko 3, i każdą z nich mam definiować osobno, to żadna mi różnica czy na tablicy, czy normalnie.
Dzięki jeszcze raz :).

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