pętla if else

0

Cześć
Jestem nowy i witam wszystkich forumowiczów.
Mam problem z pętla if else, program wygląda tak:

 int a;
 int b;
 int c;
 cout << "Wpisz pierszwy bok trojkata: " << endl;
 cin >> a;
 cout << "Wpisz drugi bok trojkata: " << endl;
 cin >> b;
 cout << "Wpisz trzeci bok trojkata: " << endl;
 cin >> c;
 if(a!=0 && b!=0 && c!=0); 
 if(a+b>c || a+c>b || c+b>a) cout << "Z tych bokow da sie zbudowac trojkat";
 else cout << "z tych bokow nie da sie zbudowac trojkata";

problem polega na tym że nie wiem jak zrobić żeby gdy wpiszę w a lub b lub w c 0 to żeby wyświetliło się "Nie możesz wpisać zera", problem polega na tym, że nie moge wpisac else po if(a!=0 && b!=0 && c!=0); ponieważ if jest podporządkowane pod if(a+b>c || a+c>b || c+b>a) ; i gdy tak zrobie to wtedy gdy wpiszę np. A=0, B=0, C=360 to wyświetli się że "Mogę zbudować trojkąt" oraz "Nie możesz wpisać zera".

0

Po pierwsze, if i else to nie pętla a instrukcje sterujące.
Po drugie zawsze dawaj po ifie klamry (po else tez). Łatwiej się będzie Ci połapać jakiej części kodu dotyczy dany if.
Po trzecie twój kod jest bez sensu. Co wg. Ciebie chciałeś osiągnąć przez
if(a!=0 && b!=0 && c!=0);?
Po czwarte, kod umieszczaj w odpowiednich znacznikach.

Co do instrukcji sterujących if else to stosuje sie je tak:

if(warunek)
{
    //tutaj kod, ktory ma sie wykonac jeżeli warunek jest true
}
else
{
    //tutaj kod, ktory ma sie wykonac jeżeli warunek jest false
}
// tutaj kod, ktory wykona sie zawsze, niezaleznie od warunku, chyba, że program/funkcja przerwie się w bloku if lub else.
 

PS. Do przechodzenia do nowej linii stosuje się "\n". endl dodaje znak nowej linii ale również wywołuje flush(), czyli wypycha dane ze strumienia. Jeżeli chodzi o sturmienie std::cin i std::cout to są one zgrane ze sobą tak, że przy każdym cin, cout w razie potrzeby opróżni strumien, wiec gdy sie stosuje tylko strumien cout i cin to nie ma sensu stosowanie endl co chwile.

1

Ty musieć pisać polska, inaczej my cię rozumieć nie.

if(a==0 || b==0 || c==0)
 cout << "zero"; else
 if(a+b>c && a+c>b && c+b>a)
 cout << "Z tych bokow da sie zbudowac trojkat"; else
 cout << "z tych bokow nie da sie zbudowac trojkata";

PS: && to and, || to or.

0

Wkleiłem if(a!=0 && b!=0 && c!=0); po to żeby było bardziej realistycznie, chyba nie można skonstruować trójkąta o boku 360, 0 i 0 prawda?

0

Ale ten kod nic nie ogranicza. Musisz (tak jak opisałem w 1. poście), umiescic kod w odpowiednim bloku (ktory rozpoczynany i konczony jest klamrami { })

Edit: btw, ten temat nadaje sie do działu Newbie :)

0

Dobra już ogarnąłem, z tymi klamrami pomogło.Sorry, że takie głupie pytania zadaję dopiero zaczynam się uczyć, uczę się ze strony internetowej a tam nie pisali o klamrach.Dzięki i pozdrawiam.

0

Tak piszę w dev c++

0

Spoko, każdy jakoś zaczyna :) Btw, z jakiego kursu korzystasz? Jeżeli "Od zera do gier kodera" to tam jest dużo błędów, lepiej IMO kupic książkę jeżeli chcesz poważnie sie nauczyc :)

I zmień środowisko, Dev jest mało polecany. Polecam Code::Blocks albo VC++ Express

0

Korzystam z:
http://wsi.edu.pl/~sistudem/Podstawy/CPPindex.html
http://www.haksior.com/podstawy-programowania-w-c-czesc-1-118.html
http://cpp0x.pl/kursy/Kurs-C++/1
tak na zmianę, troche tego troche tego.
Mam w domu książkę J.Grębosz c++ Symfonia c++ standard ale jakoś wole z internetu.

0

Masz w domu jedną z najbardziej polecanych książek do nauki podstaw C++ i wolisz kursy? Oh c'mon, rzuć te kursy, weź książkę w łapę i ucz się :)

0

Chyba tak zrobię skoro tak mówisz chociaż ciężko mi to szło ostatnim razem szczerze mówiąc, duuuużo czytania w dodatku takim językiem, że ciężko coś zrozumieć.Jeszcze raz dzięki i pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1