@z1emniak: w 17 linijce przysłaniasz sobie zmienną

liczbaliter
, nie nadając jej wartości, więc otrzymuje wartość losową/śmieciową. Usuń

int
z fora,

for(liczbaliter; liczbaliter>0; liczbaliter--)
i powinno się nie wywalać. Inna sprawa jest taka, że nigdzie nie sprawdzasz, czy wprowadzona przez użytkownika wartość jest mniejsza lub równa rozmiarowi tablicy.

Przy okazji, przy tej konstrukcji warunków/dekrementacji, w ostatniej pętli, nie wypisze Ci znaku znajdującego się w 0-wym elemencie tablicy.
#programowanie #cpp

Cześć mirki,

czy jest tutaj ktoś kto byłby wstanie napisać program (tylko za plusa ;p) który pobiera wartość, np. 7 i potem pisze choinkę, np. dla wartosci 7:

*



*

**

*

**

*****

ja jestem na etapie poznawania tablic i przerasta mnie to ;p. oczywiscie jesli wymaga to wiecej roboty niz mi sie wydaje, to nie piszcie ;-)
@psi-nos: Najprawdopodobniej zoptymalizuje (świta mi coś w głowie technika optymalizacyjna co się zowie "hoisting" najczęściej stosowana przy optymalizowaniu pętli).

Możemy to sprawdzić, np. tutaj: http://assembly.ynh.io/ (pamiętaj, żeby włączyć opcję optymalizacji).

Po sprawdzeniu w narzędziu podanym powyżej wynika, że kompilator faktycznie nie liczy tej wartości dwa razy, ale stosując trójargumentowy operator warunkowy zyskaliśmy na innej, bardzo ważnej rzeczy: całkowicie pozbyliśmy się branchingu na rzecz instrukcji z rodziny CMOV (co prawdopodobnie da większy
#programowanie #cpp

Miałem dziś ciekawą przygodę z C++. Może jest mi ktoś w stanie to wyjaśnić.

Tworzyłem instancję jakiejś klasy która miała zwykłe pole typu bool, a w zasadzie strukturę booli. Podczas ustawiania różnych parametrów w metodzie, przyjmijmy, Init(), ustawiałem jakieś wartości dla tych booli. Po wyjściu z metody Init() wykonywał się inny (nie mój) kod, a następnie w kolejnej iteracji pętli głównej programu wywołuję po raz pierwszy kolejną metodę, przyjmijmy, Process().
@Ginden: @bartoneczek: @progresywnyRegres:

Nie ma takiej możliwości, żeby zagregowana struktura zmieniła adres, jeśli nie zmienił się adres struktury, która ją agreguje. W C++ wszystko siedzi na offsetach i jest po prostu zabite na amen po linkowaniu.

Skłaniałbym się ku wyjaśnieniu @progresywnyRegres: w czym przechowujesz tą strukturę? Bo jeśli w jakimś wektorze/mapie (czyt: na stercie), to jej adres najprawdopodobniej się zmienił. Sprawdź w takim wypadku konstruktory kopiujące, przesuwające i
@losiul: myślę że mogę powiedzieć "bingo". Mianowicie wygląda to tak że:

* tworzę mój nowy obiekt,

* wywołuję metodę Init(),

* wrzucam obiekt do wektora (o ile pamiętam to prawdopodobnie kopię, ja tej części nie pisałem)

* i jeszcze raz to samo (łącznie tworzę dwa obiekty). ;)

I to jest chyba nasze rozwiązanie. :) Dzięki Panowie. Mirko uczy, mirko bawi. :P
Ok, coś mi się stało z Visual studio.

Jakiś czas temu normalnie pisałem w C, potem w C++ i nie było żadnego błędu. Teraz muszę jakiś program napisać w C.

No i się zaczynają schody.

1.

int choice;

scanf("%d", &choice);

tutaj wywala błąd: "See declaration of scanf." o0 Natomiast, gdy dam scanfs to już nie ma błędu. O co tutaj chodzi?

2. Taką samą sytuację mam z fopen. Też jest
#programowanie #cpp co robię źle jeżeli g++ krzyczy że nie wie jak rzutować obiekt na referencję?

np.

klasa.h:92:21: note: no known conversion for argument 1 from 'klasa' to 'klasa&'


czyżbym musiał robić nowy konstruktor umożliwiający inicjalizację przez wartość?

a co najdziwniejsze - na VS wszystko ładnie chodzi...
The function (.at) automatically checks whether n is within the bounds of valid elements in the vector, throwing an out*of*range exception if it is not (i.e., if n is greater or equal than its size). This is in contrast with member operator[], that does not check against bounds.
Z drugiej strony używanie operatora tablicowego pozwala pisać taki kod, w którym jesteś w stanie zamienić wektor innym kontenerem, czy nawet zwykłą tablicą.


@noisy: A uƶywanie iteratora pozwoli na uƶycie tego samego kodu jeśli tylko

::value_type
się zgadza ;)
@sebpot: Dodaj, ƶe najtańsza wersja to $100 na pół roku. Testowałem z 100% funkcjonalnym trialem i wcale VAX mnie ne poraził w stosunku do QtC. Tylko debugger zdecydowanie lepszy w VS.