Witajcie wykopowicze. Mam mały problem z c++ i visual studio 2012. Napisałem sobie prosty program do rysowania prostych figur geometrycznych przy pomocy biblioteki CImg. Wszystko śmiga w linii komend - zdecydowałem że zrobię do tego proste GUI. Więc utworzyłem nowy projekt, narysowałem w designerze proste okienko - przestestowałem okienko działało i wyświetlało się. No to skopiowałem sobie pliki *.cpp i *.h z poprzedniego projektu bo chciałem ich użyć w tym. A tu
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Naprawde nie mam pomysłu co jest powodem błędu parsera opisanego tu :

http://www.wykop.pl/wpis/4813785/sposoby-na-efektywne-debugowanie-w-c-linux-program/#comment-10415231 (funkcja parseData)

Debugowanie samo w sobie nie powiedziało mi więcej niż odkryłem wcześniej że po heheszki jakby przestaje parsować przeskakując z automatu do tekstu w tagu (tzn ala) zamiast przetworzyć liczby. Reszta poniękąd się zgadza (typy, wykrywanie, elementy)

Kod
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@sylwke3100: Odnalezienie rewizji nie jest problemem. Problemem jest porównanie co się zmieniło między wersjami. Narzędzia typu diff w żaden sposób się nie połapią, że poprzenoszone zostały linijki. W przypadku plików o nietrywialnym rozmiarze kod "przed" i "po" będzie wyglądał jakby został napisany od nowa i nie da się zauważyć rzeczywistych zmian.
  • Odpowiedz
#programowanie #cpp11 #cpp

Mikroby, zostały mi 2 miesiące wakacji. Koniec byczenia, trzeba coś ruszyć dupsko i zacząć się uczyć czegokolwiek.

Jako, że jestem na Infie i z tym wiąże swoja przyszłość to pasowałoby powoli uczyć się troszeczkę bardziej zaawansowanego programowania niż "hello world". Dlatego zastanawiam się jaką książkę zakupić. Symfonia C++ jest chyba bez C++11, a jest mi on potrzebny na studiach (bo głównie z niego składa się
  • 22
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Witajcie

Chciałbym szerszej publiczności zaprezentować mój parserek w formie biblioteczki(w którym trochę mi pomagał @KrzaQ2). Obecnie jego możliwości są skromne. Potrafi:

- Rozpoznawać tekst, liczby całkowite, liczby zmiennoprzecinkowe (do wyboru przecinek bądź kropka jako serparator), znaki alfanumeryczne oraz inne które sobie
  • 17
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jak zrobić w C++ (podkreślam jak najwięcej) tablice, kontener z funkcjami które możemy dodawać w stylu insert lub push_back ?Wiem że sama tablica w C była przez wskażniki do zrealizowania (często podawana przy bibliotekach dynamicznych)

#cpp #programowanie
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@KrzaQ2: Funktory są wbrew pozorom wydajniejsze niż raw pointery na funkcje. ;) A wskaźnik na funkcję konwertuje się do

std::function
, więc to najlepsze rozwiązanie jeśli mowa o C++. Raw pointery, szczególnie na funkcje, od C++11 powinny odejść do lamusa.
  • Odpowiedz
@Rincewind: To juƶ zaleƶy gdzie, ale akurat

std::function
ma nieomijalny virtual call ze względu na type erasure*.

*Przepraszam za ponglish, ale myślę, ƶe próba tłumaczenia by była jeszcze gorsza.
  • Odpowiedz
@sylwke3100: no mapa ma większe możliwości (nie jest ograniczona do stałej liczby pól chociażby), nic dziwnego, że jest wolniejsza i zajmuje więcej. Mapy zazwyczaj się implementuje jako drzewa albo hasmapy, czyli dostęp do elementu jest rzędu O(log n), lub amortyzowany (średni) O(1), ale z dużą stałą (czyli wolniej niż inne algorytmy (1)), z kolei dla wektorów i tablic dostęp do elementów jest O(1) z małą stałą, czyli dużo szybciej (ale
  • Odpowiedz
@tell_me_more: sprawdziłem z ciekawości - std::map jest zawsze oparta na drzewach, kiedyś było std::hashmap, ale wycofano się z tego, a w nowym standardzie jest std::unordered_map, jak ktoś chce mapęopartą na tablicach haszujących
  • Odpowiedz
Kuhwa. Ktoś mi powie, jak zrobić losową liczbę w C++ ? Cały czas losuje mi jedną i tą samą liczbę.. : /

srand(time(NULL));


kostka2 = rand()%6;


srand(time(NULL));
  • 19
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mógłby mi ktoś łopatologicznie wytłumaczyć na jakiej zasadzie działa kopiowanie tablic w c++ ?

void strcpy(char cel[], char zrodlo[])

{

int
  • 28
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 2
@GrabkaMan: tablica to praktycznie wskaźnik który pokazuje na zerowy element. to tak jakbyś pokazywał palcem na zerowy element i przesuwał się. zapis t[2] oznacza że przesuwasz wskaźnik o 2. o dwa czego? o dwa rozmiary elementów tablicy (czyli *(t+2) ). Kopiowanie polega na wydobyciu z tablicy źródłowej wartości i przypisaniu do docelowej.

Jeśli wysyłasz tablice, to tak jakbyś wysyłał wskaźnik, zatem operujesz na oryginałkach. Tablica nie jest przekazywana przez wartość, ponieważ
  • Odpowiedz
  • 2
@GrabkaMan: polecam operacje na wskaźnikach,

bardzo fajny sposób korzystania z tablicy,

raz musiałem zrobić algorytm w celu znalezienia słowa w tablicy znaków (planszy, czyli dwuwymiarowej). Musiałem zaczerpnąć rekursji oczywiście, zrobiłem sobie klase z planszą oraz wymiarami. Zrobiłem deklarację funkcji która pobierała hasło, koordynaty planszy i tyle. Myślałem wtedy jak zdobywać kolejne znaki. stworzyłem argument specjalnie dla wywołań rekurencyjnych, indeks poszczególnych literek. Jeśli doszedłem (xD) do długości stringa to wtedy algorytm kończył
  • Odpowiedz