Ještě jsem v C++ nikdy nepsal, ale velký problém s ním nemám.
Napíšu to v C++, aspoň se naučím další jazyk.
Díky.
A pro zajímavost/naučení se něco nového: Jak se tohle implementuje v C?
No k C++ nejsou moc dobré učebnice, ale základy se lze naučit... Zkusím ti rychle popsat, co budeš potřebovat.
No v C se to implementuje tak jak je to popsané algoritmicky (to co se o dané struktuře dočteš v návodu/učebnici). Používají se k tomu funkce pro dynamickou alokaci paměti etc. Určitě existuje knihovna, ale ta není součást standartu (čili její přenositelnost může být problém).
V C++ oproti tomu máš sadu datových struktur a algoritmů (popisuje je: cplusplus.com), které jsou definovány v normě a každý správný překladač je má umět. Čili tato knihovna je součástí jazyka. Využivá takzvaný jmenný prostor (namespace) std, který identifikuje vše co patří do této knihovny. V této knihovně jsou:
- nafukovací pole (pole se zvětšuje dle potřeby):
#include <vector>
...
std::vector<int> pole;
pole.push_back(4);
int i = pole[0]; // i obsahuje 4
- množiny (normální množina, souhrn prvků, každý prvek je jen jednou):
#include <set>
...
std::set<int> mn;
mn.insert(3);
mn.insert(4);
mn.insert(3);
// mn obsahuje prvky 3,4
- asociativní mapy, tedy struktura kam ukládáš dvojici klíč a hodnota. Klíč i hodnota mohou být libovolný typ. Jak jsem ukázal v minulém příspěvku.
- V nové normě (g++ to již podporuje) jsou i struktury, které jsou hashované
- mnohé další
Nicméně MacHala se ptá dobře. Pokud se chceš naučit programovat jen tak ze zájmu, tak doporučuji nejdřív Python (
obecně,
python 3). Až budeš mít nějaké zkušenosti, tak si pořídit dobrou učebnici (D.E.Knuth: Umění programování; P.Topfer: Algoritmy a programovací techniky ) a zkus jí pochopit.
Samozřejmě je možné, že máš třeba ve škole něco nařízeno. Ale stejně bych ti doporučil nepouštět se nějak hluboko do Pascalu, C, C++ etc. A použít něco jednodušího, co ti pomůže uchopit koncepty. A v těch nízkoúrovňových jazycích udělat jen to, co musíš.