Zaloguj się, aby obserwować  
Icestalker

Kącik Pracy Domowej [M]

10604 postów w tym temacie

Najpierw dajesz warunek główny: czy a>b. W bloku if robisz dla gałęzi TAK, w bloku else dla gałęzi NIE. W obu blokach trzeba znowu wstawić if/else, które będzie sprawdzało kolejny warunek.

A ten tajemniczy symbol " := " to zwyczajne podstawienie. Piszesz normalnie:
a = b + 4
Co innego, gdybyś chciał napisać np. czy liczba jest równa 8. Wtedy trzeba napisać if (liczba == 8).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mi wyszło -2, 0 i 4. Sprawdzając ręcznie ten algorytm, też tyle wyszło. Więc albo jestem wybitnie głupi, albo u Ciebie coś się nie tak zrobiło.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Moment, spokojnie prześledźmy :)

int a=4;
int b=2;
int c=0;

if(a>b) //a 4 JEST większe od 2
{
a=b+4; // a=2+4=6
c=b+2; // c=2+2=4

if(a>c) // a 6 JEST większe od 4
{
a=b-c; // a=2-4=-2
b=0;
return a, b, c;
}
}

Tak więc miałeś rację, faktycznie się pomyliłem i wynik to a=-2, b=0, c=4.

PS: W moim okrojonym kodzie programu napisałem tylko te warunki, które są spełnione, bez elsów, których nie wykorzystałem. Ale oczywiście w programie muszą się znaleźć.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 10.01.2012 o 23:11, Lfdracon napisał:

Najpierw dajesz warunek główny: czy a>b. W bloku if robisz dla gałęzi TAK, w bloku
else dla gałęzi NIE. W obu blokach trzeba znowu wstawić if/else, które będzie sprawdzało
kolejny warunek.


Tak, ale muszę jakoś klamrami odznaczać każdy if?Bo tak to komputer chyba będzie robił wszystko po kolei?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 11.01.2012 o 15:40, Nikodem95 napisał:

Tak, ale muszę jakoś klamrami odznaczać każdy if?Bo tak to komputer chyba będzie robił wszystko po kolei?

Właśnie przyznałeś się, że nie wiesz jak używać if/else.

Jeśli chcesz wykonać tylko jedną operację, pisze się tak:
if (warunek)
instrukcja1;
else
instrukcja 2;

Jednak dużo częściej trzeba wykonać kilka operacji.
if (warunek)
{
instrukcje 1
}
else
{
instrukcje 2
}

Nie bierz do siebie tego, co napisałem na początku. Nikt nie zaczyna programować, wiedząc od razu wszystko :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dnia 11.01.2012 o 15:47, Lfdracon napisał:

Właśnie przyznałeś się, że nie wiesz jak używać if/else.

Potrafię z reguły użyć w tym pierwszy mprzypadku. Jednak nie pamiętam, żebym miał na lekcji powtarzanie tej funkcji :)

Dnia 11.01.2012 o 15:47, Lfdracon napisał:

Jeśli chcesz wykonać tylko jedną operację, pisze się tak:
if (warunek)
instrukcja1;
else
instrukcja 2;

Jednak dużo częściej trzeba wykonać kilka operacji.
if (warunek)
{
instrukcje 1
}
else
{
instrukcje 2
}

Załóżmy, że komputer pójdzie w stronę else, to nie będzie próbował później robić dwóch stron? ( bo normalnie powinien robić tą prawą).

Dnia 11.01.2012 o 15:47, Lfdracon napisał:

Nie bierz do siebie tego, co napisałem na początku. Nikt nie zaczyna programować, wiedząc
od razu wszystko :)

Nie ma sprawy. Ja się cieszę, że ktoś chce pomóc :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 11.01.2012 o 15:54, Nikodem95 napisał:

Załóżmy, że komputer pójdzie w stronę else, to nie będzie próbował później robić dwóch
stron? ( bo normalnie powinien robić tą prawą).

Nie wiem, co rozumiesz pod prawą stroną w instrukcji napisanej linijkami ;)
Najprościej:
Wchodzisz do pętli, sprawdzany jest warunek: jak spełniony, wykonuje się zawartość if-a, jak nie wykonuje się zawartość else.
Ify to najprostsze pętle, później można się bawić z for ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 11.01.2012 o 16:04, Harrolfo napisał:

> Załóżmy, że komputer pójdzie w stronę else, to nie będzie próbował później robić
dwóch
> stron? ( bo normalnie powinien robić tą prawą).
Nie wiem, co rozumiesz pod prawą stroną w instrukcji napisanej linijkami ;)

Prawą stronę w schemacie blokowym, który jest na obrazku :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Może inaczej wytłumaczę to, o co mi chodzi z tymi stronami:)

Piszę if i else w linijce tak jak mówisz. I np. na początku podstawiąjąc liczby idziemy w stroną TAK, bo ( a>b), no ale jeśli chciałbym podać inne liczby, to mogło by pójść w stronę NIE, więc muszę pod tym if napisać także else. Ale jeśli będę to pisał jedno pod drugim to mi się chyba wszystko wymiesza? Więc nie wiem.
Ciężko mi to wutłymaczyć, kurczę -.-

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie wymiesza się.
Else jest taką inteligentną instrukcją, że wie, co ma za warunek zawierać. Po prostu jest w niej przeciwieństwo warunku z if-a.

Czyli wyglądałoby to tak:

if(warunek1)
{
instrukcja;
else
{
instrukcja;
}
if(warunek2)
{
instrukcja;
}
else
{
instrukcja;
}
}

@ziptofaf - racja, punkt dla Ciebie :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ogólnie schemat tych bloków w C++ będzie wyglądał tak:

if(warunek pierwszy)
{ //warunki, gdy jest spełniony
instrukcje;
if( warunek, gdy warunek pierwszy jest spełniony)
{
instrukcje;
}
else // gdy ten warunek wewnatrz pierwszego warunku nie jest spelniony
{
instrukcje;
}
}
else // gdy warunek pierwszy nie jest spelniony
if(a>c) //warunek wewnatrz nie spelnienia warunku glownego
{
instrukcje;
}
else // gdy ten warunek nie jest spelniony
{
instrukcje;
}


Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 11.01.2012 o 17:09, Piotrbov napisał:



http://wklej.to/idr4X

Podstawiłem wszystko ( chyba dobrze ). Niestety teraz po wpisaniu wszystkich trzech liczb i gdy nacisnę enter po trzeciej liczbie, przeskakuje mi na następną linijkę, ale gdy znów nacisnę enter program się wyłącza. Co mogłem pominąć?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

cin pobiera.
Ty potrzebujesz cout wszędzie tam, gdzie są potencjalne wyniki (czyli w if i else po zmienieniu wartości zmiennych).
Piszesz wtedy tam:
cout << a, b, c;

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 11.01.2012 o 21:56, Harrolfo napisał:

cin pobiera.
Ty potrzebujesz cout wszędzie tam, gdzie są potencjalne wyniki (czyli w if i else po
zmienieniu wartości zmiennych).
Piszesz wtedy tam:
cout << a, b, c;

http://wklej.to/17BSK
Tak? W sumie, na pewno znów coś źle, bo program teraz mi wylicza pierwszy wynik dobrze, bo wychodzi wynik 6, ale dalej nie chce iść ><

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie drukuj wyniku za każdym razem.

Wystarczy, że po wszystkim napiszesz coś w stylu:
cout<<"a = "<<a<<", b = "<<b<<",c = "<<c<<endl;

A tak a propos. Masz tutaj pełby program, który działa na 100% http://wklej.to/eauws

P.S. W swoim programie pomyliłeś w tych podrzędnych warunkach, gdzie jest na TAK, a gdzie jest na NIE.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 11.01.2012 o 22:10, Piotrbov napisał:

Nie drukuj wyniku za każdym razem.

Wystarczy, że po wszystkim napiszesz coś w stylu:
cout<<"a = "<<a<<", b = "<<b<<",c = "<<c<<endl;

No tak, to mogłem użyć -.-

Dnia 11.01.2012 o 22:10, Piotrbov napisał:

A tak a propos. Masz tutaj pełby program, który działa na 100% http://wklej.to/eauws

Wiedziałem, że tak się skończy :) Ale jeśli miałbym takie coś na sprawdzianie, to nie do końca Twój program pasuje, bo nigdy nie miałem <cstdlib>,argc,argv i nie wiem do czego one służą. Mogę oczywiście powiedzieć, że tak mi pomogli znajomi, ale musiałbym wiedzieć o co biega :)

Dnia 11.01.2012 o 22:10, Piotrbov napisał:

P.S. W swoim programie pomyliłeś w tych podrzędnych warunkach, gdzie jest na TAK, a gdzie
jest na NIE.
W tym sęk, że strasznie mi się to myli. No, ale to niestety kwestia wyćwiczenia :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Utwórz konto lub zaloguj się, aby skomentować

Musisz być użytkownikiem, aby dodać komentarz

Utwórz konto

Zarejestruj nowe konto na forum. To jest łatwe!


Zarejestruj nowe konto

Zaloguj się

Masz już konto? Zaloguj się.


Zaloguj się
Zaloguj się, aby obserwować