#matematyka #programowanie #cpp #algorytmy

Cześć wszystkim, w ramach odświeżenia co nieco C++/Matematyka robię sobie bardzo prosty program do poruszania pojazdami w jednym kierunku (z punktu A do B po prostej). Samochody dodawane są w losowych odstępach czasu (każdy ma różne parametry etc). Chciałbym zaimplementować możliwość "gładkiej zmiany prędkości" gdy jeden samochód zbyt bardzo zbliży się do drugiego (ma płynnie zwolnić, a następnie płynnie przyśpieszać gdy odstęp będzie bezpieczny). I tu trochę utknąłem,
@MrStealYourGirl:
Jakbym pisał sam to bym zrobił coś takiego:
- Ustawiasz sobie oczekiwany dystans i różnicę od tego dystansu dajesz jako parametr do funkcji liczącej przyspieszenie (calculateSpeed).
- Przyspieszenie może być ujemne.
- W każdej jednostce czasu (dt) wartość przyspieszenia dodajesz do prędkości (tutaj pamiętaj, że trzeba przeliczyć przyspieszenie bo dt może być zmienne).
- W funkcji liczącej przyspieszenie możesz sobie zrobić, żeby tylko hamowało (dystans jest mniejszy niż zadany =
@zrakiep: z kilku powodów: po pierwsze, jeśli miałoby być dodane wsparcie dla C++11 to by była opcja kompilatora, a nie dodanie kompilatora. To powinieneś wiedzieć. Po drugie wymieniasz ficzery nowych wersji, ale nie piszesz nic o tym, ze większość kodu na świecie jest napisana w C++11 i nawet jeśli trend jest pozytywny dla adopcji nowy wersji, to nie będzie to trend dążący do 100%, bo mnóstwo środowisk nie da się podnieść
std::uint8t nie jest typem wbudowanym. Z duzym prawdopodobienstwem biblioteka standardowa ktorej uzywasz definiuje go jako alias na unsigned char. Sprawdź std::issame_v. Jezeli tak, to wrzucasz do strumienia typ "unsigned char*", czyli c-string. Jak chcesz zobaczyc adres - zrob static_cast(&z1)
#naukaprogramowania #cpp
Jaka jest dobra praktyka przy tworzeniu każdej klasy w osobnych plikach w sytuacji, kiedy mój program musi zawierać zmienne globalne np tablicę wartości? Gdzie ja umieścić w projekcie?

Druga sprawa to includowanie bibliotek standardowych w każdym pliku nagłówkowym trochę mija się z celem prawda? Jak najlepiej zaincludować np iostream jeżeli potrzebuje jej w każdej klasie?
Od początku grudnia przerobiłem sobie Prata #jezykc i #cpp tego samego autora. Popisałem trochę programów, przejrzałem dokumentację C11 z naciskiem na najważniejsze elementy jakie wprowadza (co sugerowali na stacko). Ogólnie wyszedłem z założenia, że przyswojenie C będzie najlepsze na "budowanie podstaw" pod #programowanie
Do tego zapisałem się na poprawę maturki z informatyki. Wybór oczywiście padł na pythona. Wcześniej trochę w tym języku pisałem, wydał mi się najłatwiejszą opcją, ale nie o tym.
@luigi_pl: a co to jest "solucja"? Kiedyś ktoś tak przetłumaczył microsoftową nazwę zbioru projektów (solution), ale poza ekosystemem microsoftu raczej się go nie używa. Chociaż mogę się mylić.

Odpowiadając na pytanie autora - żeby nie odpalać kompilatora i linkera z palca, w dodatku w odpowiedniej kolejności i z odpowiednimi flagami, ktoś wymyślił "język", który to uporządkuje. To jest właśnie CMake. Zaletą jego używania jest taka, że nie jest związany z żadnym
Cześć! Mam mały problemik z pewnym mini zadaniem w C++. Należy zamienić podaną niżej funkcję tak by nie pojawiło się w niej słówko goto, while, for (czyli brak jakichkolwiek pętli), a dawała ten sam rezultat. Nie wolno korzystać z rozwiązań z innych bibliotek. Rozwiązaniem wydaje się być rekurencja. Nie wiem jednak jak załatwić nią pętle zagnieżdżone, które dodatkowo mają w sobie odwołania do innych funkcji (przyjmujemy, że podana funkcja "Add" coś tam
@tagtak: nie inicjujesz zmiennej result, zakładam, że ma być 0 na początku. Nie używasz też zmiennej k, olewam więc ją. Nie wiem, czy Add ma efekty uboczne, zakładam, że ma (bo inaczej pętla j=32..0 nie ma sensu bo nadpisujemy temp w ostatnim obrocie i tak :) - jeśli funkcja Add nie ma efektów ubocznych to po prostu cała pętla po j jest do wywalenia i wystarczy dać zamiast niej:

temp =
Mirki pomocy... #cpp #naukaprogramowania #visualstudio #sfml

Ni uja nie mogę tego połapać, podeślijcie jakiś sprawdzony tutek :./

Już przerobiłem wszystko i niby działa a nie działa. Okno nie odpowiada, jakieś błędy, dopisuję s-d, dodaję static albo i nie dodaję i UJ W DUPĘ!!!

Kiedyś mi się udało ale teraz nie mogę ogarnąć nie wiem czy ten sfml jest skur... czy VS19 :/ czy może ja?!
Hej,

Możecie polecić jakieś fajne i ciekawe porady albo flagi kompilatora do prostego zwiększenia bezpieczeństwa/wydajności/jakości większego projektu C++?

Póki co na chwile obecną korzystam z -Wall, -Wextra, -Wunitialized oraz takich narzędzi jak GCC/Clang Sanitizers, Valgrind, Sonarcloud ale mimo wszystko z uwagi na rozmiar projektu ciągle znajduję w nim nowe bugi i myślę, że istnieją jeszcze jakieś ciekawe narzędzia, które pozwolą mi lepiej debugować aplikację.

#cpp #programowanie
@lockeylamora: nie ma do tego gotowca, ale da się to napisać całkiem elegancko (nawet klasy dziedziczące po Base się same dopisują do rejestru jak się to ładnie zrobi), tu jest przykład

https://stackoverflow.com/a/11176265

Po prostu każda klasa, którą chcesz tworzyć dynamicznie musi dziedziczyć po Base, implementować create i mieć ten fragment w .cpp

#include "DerivedABC.hpp"

namespace
{
Base::Registrar registrar("NazwaKlasyDerivedABC");
}

I potem ją tworzysz pisząc:

std::unique_ptr p = Base::instantiate("NazwaKlasyDerivedABC");

Wołaj, chętnie zobaczę
@horus666: Kiedyś zgłębiałem ten temat.

Możesz albo linkować dynamicznie (czyli dołączać Qt jako dll) i sprzedawać bez problemu, albo możesz nawet zlinkować statycznie - jeśli masz taką potrzebę, ale wtedy musisz udostępnić pliki obiektów (pliki wynikowe kompilatora, przed zlinkowaniem), aby umożliwić użytkownikom końcowym zlinkowanie z inną wersją Qt.