Kurs C++ odc. 16: Struktury danych: stos, kolejka, lista, drzewo binarne
ฝัง
- เผยแพร่เมื่อ 4 ก.ค. 2024
- Jeżeli masz ochotę zobaczyć więcej naszych filmów, podcastów i artykułów w coraz lepszej jakości, to zachęcamy do pozostawienia subskrypcji, a także do odwiedzenia prowadzonych przez nas witryn oraz do polubienia fanpage'u Pasji informatyki na Facebooku.
🔔 Subskrybuj - bit.ly/pasja-sub
Jeśli masz ochotę wesprzeć to co robimy, to możesz:
🖐 Zostać Patronem - patronite.pl/pasja-informatyki
☕️ Ufundować nam wirtualną kawę - buycoffee.to/pasja-informatyki
👉 Fanpage na Facebooku - bit.ly/pasja-fb
👉 Profil Patronite - patronite.pl/pasja-informatyki
👉 Lista Patronów - pasja-informatyki.pl/patroni
👉 Donacje na blogu - miroslawzelent.pl/donate
👉 Harmonogram publikacji - bit.ly/pasja-harmonogram
👉 Kontakt z nami - pasja-informatyki.pl/kontakt/
👉 Współpraca reklamowa - bit.ly/pasja-wspolpraca
👉 Kursy video dla technikum - pasja-informatyki.pl
👉 Blog informatyczny - miroslawzelent.pl
👉 Trenażer egzaminacyjny - egzamin-informatyk.pl
👉 Egzamin-E13.pl - egzamin-e13.pl
👉 Forum dyskusyjne - forum.pasja-informatyki.pl/
👉 Witryna podcastowa - podcast.pasja-informatyki.pl/
👉 Twitter MZ - / miroslawzelent
👉 Twitter DS - / stelmach_damian
Zapraszam do wspólnego przepracowania produkcji na temat struktur danych. Jest to odcinek ważny, fundamentalny wręcz dla rozwoju każdego kodera, i jednocześnie dość bogaty w treść wymagającą konceptualnego zrozumienia. Jak zwykle będzie to skondensowana i zorganizowana dawka nowej wiedzy.
🕐 TIMESTAMPS (CHWILE CZASOWE):
00:00 Czym są struktury danych?
05:46 Stos
12:13 Stos w praktyce
17:47 Kolejka
20:17 Kolejka w praktyce
24:45 Lista
28:22 Lista jednokierunkowa
29:56 Lista dwukierunkowa
31:09 Lista z wartownikiem, cykliczna
33:28 Lista w praktyce
37:47 Drzewo binarne
45:20 Drzewo binarne w praktyce
💾 POBIERZ PLIKI Z ODCINKA:
miroslawzelent.pl/kurs-c++/str...
📑 CODE REVIEW NA FORUM:
bit.ly/code-reviews-odcinkow
🎵 MUZYKA:
Labisch - Passion: • Labisch - Passion [Cre...
Support Labisch: / labischproductions
Release: / passion-by-labisch
License: creativecommons.org/licenses/b...
A Creative Commons Attribution License (CC BY) states that the material can be shared, remixed and used commercially (bit.ly/CCAttribution).
#pasjainformatyki #cplusplus #programowanie
9 lat później ja, student, niczym syn marnotrawny po nieukończonym kursie z c++ w liceum powracam na ten kanał prowadzony przez wielkiego człowieka. Panie Mirosławie, dziękuję za ten poradnik. Pomógł mi zrozumieć ww. zagadnienia.
ja podobnie
Kolejny raz jestem pełen podziwu, który trudno mi wyrazić dla Pana pracy. Temat, którego w żaden sposób nie potrafiłem rozgryźć na wykładach okazał się zrozumiały. Jeszcze raz wielkie ukłony i brawa. Mam nadzieję, że pewnego dnia zrealizuje Pan kurs o Javie (choć domyślam się, że pewnie jest Pan teraz zbyt zajęty).
MEGA SZACUN Za ogrom pracy włożony w ten (i inne) odcinki.
instaBlaster.
Jest Pan WIELKI a jest to cecha tylko ludzi skromnych, pozbawionych pychy i nieprzeciętnych. Ogromny szacunek dla Pana pracy w tylu playlistach. Mam nieoceniony zaszczyt i świadomość że korzystam z wiedzy uporządkowanej, fundamentalnej. Panie Mirku dużo zdrowia i radości z tego co Pan lubi i co Pan robi na ten i przyszłe lata.
9 lat po wydaniu, tydzień przed egzaminem inżynierskim wracam tutaj, aby przypomnieć sobie różnice między wszystkimi strukturami. Niesamowite jak moja kariera ucznia zatoczyła koło. Zaczynałem tutaj, i kończę tutaj.
będę już kolejną osobą, która to napiszę, ale - DZIĘKUJE ZA TEN KURS!
Ludzie gadają i płaczą że rezygnują z odcinka na odcinek a mi się to coraz bardziej podoba! :D
Odcinek o wątkach, proszę ślicznie
Niesamowite jest to, w jak prosty i zrozumiały sposób przekazujesz swoją wiedzę innym. Oby kiedyś nauczyciele potrafili przekazywać wiedzę w taki przystępny i ciekawy sposób :D
Chciałbym serdecznie Panu podziękować za cały ten kurs, który nauczył bardzo dużo mnie jak i zapewne wiele innych osób. Ten kurs obrasta już w tych kręgach legendą... Każdy, kogo ja znam, kto uczy się programowania na własną rękę zna ten kurs. Chcę, aby Pan wiedział jak ogromny wkład wniósł Pan w rozwój tysięcy młodych talentów. Jednym słowem: Dziękuję! :)
Bardzo przyjemny odcinek ;] miło się ogląda
Super odcinek, dziękuje :)
Było warto ! Super seria !
Genialny materiał z włożonym ogromem pracy. Szacunek
Dobrze wytłumaczone, dzięki
Piekna praca bozeee kocham cie
Bardzo dziękuję, za zwięzłe oraz domyślne wytłumaczenie tematu Struktur danych.
Super robota !!
Fajne i pomocne :)
Pana odcinki oglądać zawsze warto ;)
JUTRO KOLOS dziękuję :)
Świetnie wytłumaczone, no po prostu genialnie. Wielki szacunek dla Pana za cały kurs. Pozdrawiam.
czekałem na ten odcinek Panie Mirosławie:D Bo nie wiedziałem czy ta wiedza mi sie przyda dzieki Panu znów wielką pasja biorę się za naukę
Dzięki :D
Kolejny za mną. Dzięki wielkie
Super odcinek!
ogromny szacunek dla pańskiej osoby za wkład tak dużej pracy w te odcinki i za przekazywanie tej wiedzy w niezwykle dobry sposób pozdrawiam.:)
naprawdę to niesamowicie imponujące i niespotykane, w jak przystępny i pasjonujący sposób potrafi Pan przekazywać wiedzę.
Nie wiem czy coś się zmieniło, ale wygodniej jest używać gotowych containerów, przynajmniej dla leniwych osób, takich jak ja, bo po co pisać dlugi kod za każdym razem, skoro można implementować już gotowe:
//stos (nazwa
Dobry pomysł z tymi sprawdzianami, pytania dość łatwe po obejrzeniu tego filmu, a jednak trzeba chwile pomyśleć zwłaszcza z tym ostatnim drzewem :D
Gratuluję sukcesu kanału i życzę dalszego rozwoju ! Z twoich poradników naprawdę wiele się nauczyłem , są bardzo pomocne. Dobrze tłumaczysz i naprawdę świetnie się ciebie słucha !
Haha, oglądam sobie Pana poradnik i w 4:00 minucie pokazała mi się moja drukarka :D
Generalnie kawał dobrej roboty. Mam jednak dwa pytania.
1. Dlaczego nie uczysz w nowym standardzie?
2. Jak mawia papież C++ "Jeśli musisz użyć jakiegoś kontenera, to na 90% będzie to vector". Dziwię się, że zabrakło go w Twoim odcinku.
Tak, czy siak pozdrawiam. Fajny kurs. (szkoda tylko, że standard 98 )
#złota łopata
Też mnie to zdziwiło. Nie znam za dibrze programowania, ale vector, to mój dobry znajomy.
Vector należy do stl'a, a stl nie należy do standardu ani 11 ani 17. Jest to biblioteka ułatwiająca implementacje podejścia tablicowego.
Odcinek mnie zainspirował do pogrzebania w internecie o strukturach danych a i pomógł mi rozwiazać 2 zadania na SPOJU :D
Elegancko
Bardzo dobry kurs. Polecam. Jednak brakuje mi tu jednej rzeczy, użyciu stałych. Jest to znaczne uproszczenie przy wielkości naszych tablic itp. Pozdrawiam. :)
39:56 tutaj chyba niepotrzebnie jest narysowana struktura od początku, bo przed wprowadzeniem liczb jest nieznana. Początkowo jest korzeń, później korzeń + węzeł z lewej itd.
Daję okejkę
Ten odcinek wydał mi się do tej pory najciekawszym zagadnieniem z programowania. Czy zna ktoś jakieś książki/strony z których można się dowiedzieć więcej o bazach danych?
właśnie zdałeś mi propgramowanie
Dla modulo gdy dzielna jest mniejsza od dzielnika:
1 % 5 --> 0 * 5 + 1 == 1 --> r = 1
2 % 5 --> 0 * 5 + 2 == 2 --> r = 2
Dziękuję za wyjaśnienie!
Sprawdzian zaliczony 8/8 :D
Przydała by się jakaś aktualizacja tematu w Pana wykonaniu Panie Mirku. Ten kurs jest już nieco przestarzały i opiera się na starych technologiach. A może by tak Nowy kurs w VC ze standardem C++ 20 ?
Nice shot my friends
Szkoda, że nie zdążył Pan pokazać jak używać tych struktur, no bo teraz wiem jak działają poszczególne struktury, ale nie wiem ja je zaimplementować do kodu.
pan łukasz Jeśli będzie pan cierpliwie dalej śledził ów kurs programowania i zawędruje pan do programowania obiektowego to wiele się wyjaśni :) Obiekty bardzo w skrócie to coś, co zawiera wiele zmiennych. Dla przykładu obiekt wycieczkowicz może posiadać takie zmienne jak int nr_id; int wiek; string imie; string nazwisko;. Teraz stwórzmy listę wyciekowiczów. Możemy przeglądać ich profile pojedynczo, oglądać element lewy, prawy, wyświetlać listę posortowaną alfabetycznie po imieniu czy numerze id. Dodajmy do tego jeszcze poprzedni kurs, gdzie można taką listę zapisywać i wczytywać z pliku txt i sam pan widzi, że mamy do dyspozycji użyteczną aplikację :)
ale fajne to wszystko i wygodne
Ja używam vectorów do zaalokowania dynamicznie miejsca na nieznaną z góry liczbę elementów.
vector to jest merge wcześniejszych struktur
Kolejny bardzo dobry film w Pana wykonaniu.
Może w przyszłości opracowuje Pan film na temat algorytmów tekstowych i biblioteki string w C++, oraz podał różnice czasowe omawianych algorytmów rozwiązujących ten sam problem?
25:20 Użyć kontener tablicy ;)
Fajna tapeta.
W przykładzie z listą wywołuje ją pan w funkcji. Jak zadeklarować w nagłówku funkcji listę, żeby uniezależnić funkcję od nazw list w programie.
28:30 Hej, czy to przypadek, że wstawił jako elementy tej listy liczby 89, 144 i 233, będące kolejnymi liczbami Fibonacciego?
Przypadek?
Nie sądze!
Lubię sobie czasem pofantazjować że jest Pan moim ojcem.
Muzyka z początku filmu kojarzy mi się z podkładem muzycznym do "Lubelskiego Fula" ;D
Dlaczego mój wykładowca tak nie tłumaczy? :D
Znowu rozbiłem odcinek na dwa podejścia, żeby mózg wszystko ze zrozumieniem chłonął. :D
Korzystam z wielu żródeł podczas nauki ale żadne z nich nie dorównuje sposobem jej przekazywania na tym kanale.
Jednocześnie to w jaki sposób potrafi Pan przekazać wiedzę wpływa na wybór języka programowania (przynajmniej w moim przypadku).
Ogromny szacunek dla Pana.
44:22 ale tablice numerujemy od zera!
tak, ale ta jedna komórka pamięci nie robi wielkiej różnicy/możemy ją do czegoś zawsze użyć (jak normalną zmienną)
45:00 Nie trzeba drugiej tablicy do tego, jeżeli przyjmiemy, że 0 oznacza, że tam nie mamy żadnych danych
0 to też cyfra i może być wartością węzła
Może nie odkryje tym Ameryki ale w c++ w bibliotece STL jest dostępny kontenere stack , ( ja nie musiałem ściągać tej biblioteki, mam Visual Studio ), wystarczy dodac #include i możemy stworzyć stos np. intow :
stack mojStos;
Jasne że jestem ogromnie wdzięczny za Pana prace, ale tak naprawdę to tutaj mamy taką trochę sztuczną jak dla mnie imitacje stosu, po prostu tablica elementow w sumie wyświetlana od tyłu.
Rozumiem cele dydaktyczne, ale wydaje mi się że jak jest już opracowana biblioteka , to po co wynajdować koło na nowo?
No i pewną wadą tego rozwiązania jest że mamy ogarniczoną liczbę elementów, a główną zaletą wszelakich kontenerów jest to że możemy dynamicznie zmieniać jego rozmiar.
By tu to osiągnąc pewnie pasowałoby to przez zastosownie tablic dynamicznych.
Pozdrawiam wszystkich, rozwijajcie się dalej :D
Prawdopodobnie istnieją też w STL inne kontenery, jeszcze to sprawdze.
+TheMikeros Warto wiedzieć jak zaimplementowane są takie struktury danych. I warto umieć je sobie zasymulować. Po co? Nie zawsze będziesz miał dostępną bibliotekę z danym rozwiązaniem. Czasami będziesz potrzebował napisać ją na własne potrzeby od zera. Albo będziesz po prostu korzystał z języka, który danej struktury nie posiada. Ponadto, jeżeli coś Ci się "wykrzaczy", będziesz w stanie z większym prawdopodobieństwem przybliżyć źródło błędu kojarząc budowę danej struktury, a nie błądząc dookoła niej jak przysłowiowe "dziecko we mgle" :)
Nawet nie wiesz jak duża jest STL. Jest tam tona ciężkich narzędzi na bardzo rozległych szablonach (C++ 11 Variadic Templates) które umożliwiają sortowanie czegokolwiek (nawet twojej stworzonej klasy) tylko po wybranych polach lub wg twojej wlasnej funkci.
Z podobnych ja np używałem std::shuffle do tasowania zbiorów klasy Card (do wszelkich gier karcianych) (karty jako klasa mają kolor, wartość, widoczność, statycznie wspólny rewers)
Z najbardziej niesamowicie użytecznych szablonów polecam std::bind
W zasadzie mówił Pan o drzewie BST (które jest szczególnym drzewem binarnym) a nie o ogólnie drzewie binarnym
Witam.[KOLEJKA]Po wprowadzeniu pięciu danych o tych samych wartościach np. pięciu dwójek gdy chce usunąć wartość z kolejki funkcją pop program usuwa ostatnią liczbę zamiast pierwszej w kolejce.
jeszcze kilka struktur danych jest, a co do grafu to ja preferuje wlasny szablon
W pewnym sensie to jest prawdą:
stos + kolejka = lista
:]
cout
Odcinek spoko, ale zdecydowanie brakuje vectorów.😢
Ja sobie radze z iteratorami makrem. Jest to szybsze i wygodniejsze niż ciągłe tworzenie nowych iteratorów.
Film jak zawsze świetny. Osobiście uczyłem się kolejki na bazie tej w sklepie, a priorytetowej jak w kolejce, w której są VIPY.
Mam jeszcze takie pytanko: Czy będzie coś więcej o algorytmice w przyszłości?
co do szukania, stąd nazwa binary-search(), który jest szybszy zwykle od line-search()
Kopiec trochę przypomina drzewo przydziałowe. Robienie drzew maksów i minimów to przydatna rzecz.
do OI potrzebuję trochę większej wiedzy z algorytmiki :)
No dobrze, stosy stosami, kolejki kolejkami... każda z tych struktury pomoże nam w czymś innym.
Czy istnieje natomiast struktura szybsza od rozwiązania obejmującego wykorzystanie tablic (lub odpowiednio zaprojektowanej tablicy) i wskaźników, która reprezentowałaby z powodzeniem statyczną macierz odległości? Załóżmy, że algorytm musi bardzo często uzyskiwać dostęp do jej różnych elementów, więc zależy nam na czasie.
A jak pisanie własnego stosu/kolejki ma się do STL? czy zaimplementowane rozwiązania są wydajniejsze ? czy nadal powinno się pisać swoje struktury?
i jeszcze pytanie mam, czy będzie Pan przedstawiał jeszcze drzewa AVL oraz B-drzewa?
haha " lepiej, żebym nie przekroczył deadline ..." dobre
Lepiej sprostować, że prezentowania tutaj reguła drzewa binarnego odnosi się do binarnego drzewa wyszukiwań(!) ponieważ zwykłe drzewo binarne może mieć nawet większe wartości w lewym poddrzewie i nie jest to określone
W jakim programie tworzy pan te wszystkie animacje i grafiki z filmow?
Mam pytanie... A co się stanie, gdy w drzewie binarnym nie będzie liczby, którą chcemy wyszukać funkcją find()? Z góry dzięki ;)
Brakuje implementacji metody insert() w Liście. Ale nie zmienia faktu, że wszystko jest wyjaśnione w bardzo przyjazny i łatwy sposób. Dziękuję.
+Erlkonig24 Właśnie. A ja mam problem by to wstawić. Poradziłeś sobię z tym void insert()?
+HeavyClassicalX Tak. Jak wroce eo domu to postaram sie zamiescic linka do jakiegoś pastebina albo cuś ;)
miną rok, a on dalej czeka xD
@@HeavyClassicalX
void insert()
{
int liczba,pozycja;
coutliczba>>pozycja;
list::iterator it = lista.begin();
advance(it, pozycja);
lista.insert(it, liczba);
}
masz tu ziomalu u mnie dziala
W sumie to metoda drzewiasta przypomina mi trochę sortowanie quicksort :d
A będzie coś o bibliotekach danych?
Tak sobie przegladalem Twojego Twittera, gdzie piszesz, ze na razie za wczesnie na vectory. Ale czy lista to tak naprawde nie jest vector?;>
Panie Mirosławie. Czy poleciłby Pan jakiś dobry kompilator C++ na Androida?
Bardzo obrazowo wytłumaczone. Szkoda, że nie ma filmów Pańskiego autorstwa na temat pisania programów używających list, drzew binarnych i grafów. No nic, im dalej w las, tym więcej drzew, a zawód programisty polega także na tym aby cały czas samemu się kształcić, co jest możliwe dzięki solidnym podstawom, za które bardzo dziękuję. Pozdrawiam
W programie "stos" jako liczbę dla PUSH wpisałem literę P. Stos zapełnił się zerami i program "zawiesił się". Teraz próbuję wymyślić dlaczego tak się dzieje - jakieś wskazówki? Aha, zawiesza się również po próbie dodania bardzo dużej liczby, czyli może chodzi tu o max wartość dla zmiennej typu int...
***** Dzięki! No tak, większość odcinków już za mną, ale jeszcze nie wszystkie. W ogóle na obsługę błędów na razie nie zwracałem zbyt dużej uwagi, teraz staram się odrobić zaległości w tym temacie.
Struktura kopca ma coś do czynienia z sortowaniem stogowym?
23:35 Ucze się z twojego kursu i znalazłem błąd w tym kodzie (to chyba znaczy, że dobry jest ten kurs). Linijki 58-65 są czałkowicie nie potrzebne a nawet wrecz przeciwnie jest w nich błąd, poniewarz jeżeli głowa jest ustawiona na 4 komurce i nie ma żadnego elemętu w kolejce to przez if (ile==0) wtedy ustawimy ogon na komurke 5 która nie nalerzy do nas i pruba zapisu nie skonczy się dobrze. Trzeba tam zamienić, że ogon=(ogon+1)%5 lub poprostu wywalić linijki 58-65. Jak ktoś chce sprawdzić ten błąd to wystarczy wpisać do kolejki 4 liczby a puzniej je usunąć (nie warzne czy wpiszemymy 4 i usuniemy 4 czy bedziemy wpisywać i wusuwać na zmiane) teraz ogon jest na komurce 4 (naszej ostaniej) wystarczy teraz zapisać w kolejce jeszcze jena liczbe i usunąć teraz ogon jest ustawiony na komurce 5 ktora nie jest nasz. Teorytycznie ciagle czyszcąc kolejke zeby działał ten if (ile==0) w tym programi i dopisywania tam kolejnych liczb pozwala na na dojście do kolumny 10, 50, 100 i dalej, co napewno nie jest zbyt bezpieczne.
15:23
Ogólne pytanie, czemu tak samo jak w przypadku listy do opisu stosu nie użył pan biblioteki stack?
Edit : a już widzę, nie można by było szybko pokazać zawartości stosu, stack pokazywałby tylko top, a pokazanie całości wymagałoby podwójnej operacji przeniesienia stosu
Zapis dotyczący kolejki wydaje mi się niejasny. Nie rozumiem działania operacji modulo w tym kodzie : "else
{
cout
+Mirosław Zelent Ten zapis może być niezrozumiały, dlatego, że w tle tak naprawdę zawartość tablicy jest inna niż pokazywana na ekranie, pierwszym elementem do wyświetlenia jest element o indeksie (głowa+1). I tutaj moje pytanie, czy nie lepiej dla zdrowia naszego rozumowania tego kontenera zrobić mechanizmu przesuwania się kolejki po każdej kolejnej operacji obcięcia głowy.
Wtedy wyświetlanie kolejki zawsze bedzie w petli z dane[i], głowa to zawsze bedzie dane[1]
Mam tą książkę, o której opowiadał Pan na początku.
Witam. Mam pytanie do pana Mirosława Zelenta. Chciałbym się dowiedzieć ile odcinków z kursu języka html i kursu języka css jeszcze będzie na kanale i mniej więcej kiedy one się pojawią? Domyślam się, że gdyby weszły np. jakieś nowe znaczniki to odcinek może nagle się pojawić, ale chodzi mi o odcinki, które są już zaplanowane. Z góry dziękuję za odpowiedź. ;)
Witam.
Znalazlem takie male niedopracowanie w kodzie kolejki. Moze znajdzie sie ktos, kto podczas nauki wprowadzi niefortunna sekwencje danych wejsciowych i zdziwi go wypis na ekranie.W funkcji push, w bloku instrukcji warunkowej if(ile == 0) ogon inkrementuje sie w sposob ktory moze doprowadzic do zapisu danych poza tablica. chodzi mi o ogon=ogon+1. Powinno byc tak samo jak w "ifie" nizej, czyli ogon=(ogon+1)%5.
30:13 lepiej 48 razy w prawo niż 2 razy w lewo xd
xDDDDDDDDDDDD
dwa razy w lewo to nie lewak a po trzech się zeruje
Czy blockchain to też struktura danych?
Świetny odcinek, piszę w C# i tam te struktury są od razu zaimplementowane, używałem ich bez tych informacji aczkolwiek ten kurs przybliżył mi je jeszcze bardziej.
Mam pytanie, czy nie uważa Pan, że dziedziczenie klas wprowadza w kodzie pewny nieład ?
Zależy. Jeśli potrzebujesz w nowej klasie nazwijmy ją B użyć takiej samej metody, jaka jest w klasie A, to wówczas dziedziczenie jest słabym pomysłem. Użyj agregacji / kompozycji. Jeśli jednak chcesz rozszerzyć istniejącą już metodę wówczas masz pole do popisu dla polimorfizmu, a co za tym idzie dziedziczenia.
OK mój błąd prześledziłem plik txt Pana Mirosława i okazało się że w miejscu while (znalazlem_miejsce==false) zamiast == wstawiłem = dlatego nie działało :) a pisałem to ręcznie z filmu
Jest Pan w stanie określić kiedy będzie Pan startował z technologiami webowymi?
Super! dziękuję za szybką odpowiedź !
Witam Panie Mirosławie.
Jako, że jest Pan w tej branży, mam takie pytanie.
Otóż, chcę iść na matematykę stosowaną i chciałbym kupić sobie laptop, żeby starczył mi na przynajmniej trzy lata studiów, a najlepiej na pięć. Będę programować w języku VBA i możliwe, że w kilku innych. Czy polecałby Pan jakiś optymalny dla mnie laptop w cenie do 2000pln, do 2500pln oraz do 3000pln?
@Pasja informatyki Jak zrobić żeby w liście był template zamiast int? Chcę, żeby ty danych w liście byl deklarowany wraz z pierwszą daną.
template
class List
{
};
i w każdym miejscu gdzie jest int, piszesz T
Witam, czy istnieje jakas struktura danych ktora przeznaczona jest tworzenia map, np. zakladajac taka sytuaje: sonda trafia w losowe pole planszy szachowej i zaczyna sie po nim przemieszczac wedlug jakis regul ale caly czas zapamiatuje juz zdobyte informacje ? Myslalem o grafie ale moze jest cos lepszego?
dziekuje
Witam. Mam pytanie jakie jest Pana zdanie o sensie nauki języka assemblera ,z jednej strony wydaje mi się że dobrze by znać obok c++ język niskiego poziomu z drugiej wiadomo nie jest on zbyt zrozumiały. Poświęciłem kilka godzin by jakoś tam się obeznać jak to wygląda i jak dla mnie że tak powiem fajna zabawa bezpośrednio operować na rozkazach i rejestrach procesora ,ale w internecie pełno opinii że ten język to już przeszłość ,na nic mi się to nie przyda i ogólnie stracony czas. Brać się za to czy nie?
Sorki za date. Wszystko zalezy od potrzeb. Jesli zamierzasz pisac jakies sterowniki, programowac roboty, uklady scalone itd to wtedy assembler jest przydatny. W pozostalych przypadkach (jesli juz musisz uzywac jezyka niskiego poziomu), to lepiej i tak uzyc C. Roznica w predkosci bedzie niewielka (zakladajac, ze kod napisany przez ciebie w assemblerze bylby zoptymalizowany, co nie jest wbrew pozorom takie latwe), ale przejrzystosc kodu to niebo a ziemia.
A wie pan jak zrobić coś takiego?:
int zmienna;
cin >> zmienna;
system ( "ping"
:D Dzięki :D
Witam
Jest jakis odpowiednik COORD pod linuksem ?
Dziękuję trochę się namęczyłem, ale warto było. Kilka małych zmian w kodzie i działa. Dodałem bibliotekę ncurses.h usunąłem sleep oraz SetConsoleCursorPosition
itp. i co najważniejsze zamiast tej funkcji
void gotoxy(int x, int y)
{
COORD c;
c.X=x-1;
c.Y=y-1;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
zrobiłem tą
void gotoxy(int x, int y)
{
printf("\033[%d;%dH", y-1, x-1);
}