Vím přesně co máš na mysli.. Nicméně to vyžaduje trošku složitější programování využívající formální gramatiku a podobné habaďůry
Nicméně, když to řeknu ve zkratce. Můžeš celý řetězec "rozsekat" na menší řetězce (čísla přece nejsou jeden znak

) - Tedy by mohla sloužit mezera jako oddělovač:
Kód: Vybrat vše
"1 + 2 * 4 + 8" --> "1" "+" "2" "*" "4" "+" "8"
Nyní máme oddělené řetezce a můžeme s nimi dál pracovat. Další úkol je, jak zjistit, co je číslo a co ne? Existuje mnoho způsobů, ale jeden je relativně jednoduchý. Zkusíme převést řetězec na číslo, pokud je v něm pouze číslo, máme číslo. Pokud jsou v něm nějaké nečíselné znaky, vyhodíme výjimku. Takže už máme čísla a znaky:
Kód: Vybrat vše
"1" "+" "2" "*" "4" "+" "8" --> 1 "+" 2 "*" 4 "+" 8
Když už máš čísla, můžeš je rovnou ukládat někam do pole a pak si s nimi hrát. Nicméně, teď sis trochu hodil klacek pod nohy. Znáš prioritu operátorů? Protože jako první musíš vynásobit 2 a 4 a až pak to sečíst. Jo, to je nevýhoda psaní operátoru mezi čísla. Nciméně s tím si už poradíš.
Kód ode mě nečekej, C# moc neovládám, ale jsou to jen cykly a podmínky. Nečekej v tom žádnou extra sloužitost
Ale aby se neřeklo, tak mám na svém
githubu kód zásobníkové kalkulačky, už asi nebude nikdy dodělána....

EDIT: A já se s tím tady rozepisuju... To je přesně to programování, kterému by ses měl vyvarovat. Použít třídu jako blackbox...