[OT] Arduino
David Obdrzalek
David.Obdrzalek na mff.cuni.cz
Neděle Leden 7 12:49:25 CET 2024
Ne-e. Pokud se to zavolá s parametrem 0 (cislo=0), tak to projede tabulkou a až to
dojede na její poslední řádek (index bude 5), už nebude splněna podmínka ve while,
protoze 0 není < 0, takže se neudělá index++, smyčka skončí a následně to vrátí znak
'0' z posledního řádku tabulky.
Naopak pokud by tam bylo <=, tak to ten index i na posledním řádku tabulky zvýší
(protože 0<=0), vyjede z tabulky a ... :-(
S parametrem větším nebo rovno 994 to skončí už na prvním řádku tabulky, 908 až 993
na druhém, 807 až 907 na třetím atd. a poslední řádek odchytne všechno od 0 do 481.
D.O.
On 7 Jan 2024 at 10:37, Petr Simek wrote:
> On Sun, 7 Jan 2024, Jaroslav Buchta wrote:
>
> > Podle me to bude fungovat, while preskace polozky dokud nebude cislo < nez v
> > tabulce.
> > Problem vidim akorat u 0, kdy to utece mimo tabulku navzdy, melo by byt IMHO
> > <= misto <
> >
>
> No jasne ono to postupuje dokud cislo neni mensi nez cislo v tabulce.
> Ale pokud cislo bude nula tak nule neni mensi nez nula a skonci to
> ve smycce.. Takze to fungovat bude dokud nenavzorkuje nulu.
>
>
> *------------------------------------------------------------------------*
> | Petr Simek APS JU |
> | psimek na jcu.cz |
> *------------------------------------------------------------------------*
>
>
> > Dne 07.01.2024 v 9:17 Petr Simek napsal(a):
> >> On Sat, 6 Jan 2024, David Obdrzalek wrote:
> >>
> >>> D.O.
> >>>
> >>> (*) Jeden příklad za všechny:
> >>> https://robodoupe.cz/2018/programatorske-poznamky-k-jednomu-arduino-projektu/
> >>
> >> Dival jsem se na tu vasi stranku a moc se mi nezda priklad :
> >>
> >> typedef struct{
> >> uint16_t cislo;
> >> char pismeno;
> >> } tabulka_t;
> >>
> >> tabulka_t tabulka[] = {
> >> {994, 0},
> >> {908, 'D'},
> >> {807, 'A'},
> >> {724, 'B'},
> >> {482, 'C'},
> >> {0, '0'}
> >> };
> >>
> >> char urciPismeno(uint16_t cislo)
> >> {
> >> uint8_t index=0;
> >> while( cislo < tabulka[index].cislo ) index++;
> >> return tabulka[index].pismeno;
> >> }
> >>
> >>
> >> Prijde mi ze kdyz je 'cislo' mensi nez 994 tak to vzdy vrati
> >> prvni radek z tabulky - nulu a kdyz bude cislo 994 nebo vetsi
> >> tak se to rozbehne po pameti nez to nekde narazi na dvojbajt
> >> s vyssi hodnotou (a vrati to nejaky nesmysl) nebo to pojede
> >> v cyklu navzdy.
> >>
>
Další informace o konferenci Hw-list