• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Gra w c++ (podsumowanie pierwszych 6 odcinków)

Mały hosting, OGROMNE możliwości
+1 głos
349 wizyt
pytanie zadane 28 października 2015 w C i C++ przez majfirst Obywatel (1,200 p.)
Cześć!

Obejrzałem i przerobiłem 6 pierwszych odcinków Mirosława Zelenta i  postanowiłem napisać jakąś ez game na "rozgrzewke". W sumie dużo nie zrobiłem, ale prosiłbym o poprawienie błędów i pomoc w jednym problemie.

Kod here -> http://wklej.to/hygOy

Jak zalogowano zwraca wartość true to to menu ciągle mi się powtarza (po zalogowaniu) (zajrzyjcie w kod to bd wiedzieć o co mi chodzi).

Z góry dzięki za odpowiedzi, pozdrawiam

2 odpowiedzi

+1 głos
odpowiedź 28 października 2015 przez Bondrusiek Maniak (61,460 p.)

Witam serdecznie,

dam Ci parę wskazówek. Nie pisz zmiennych globalnych gdyż to zła praktyka i powinieneś dążyc do ukrycia danych(hermetyzacja danych). Przekonasz się w większych projektach. Staraj się czyścić buffor po użyciu jakiejś kluczowej zmiennej używając metody cin.sync(); . . Program powtarza się nieskończoną ilość razy gdyż wykorzystałeś pętle for(;;). ,która powtarza się nieskończoność ilość razy(nie podałeś warunków krańcowych). Jeśli chcerz wyjść z jakiejś pętli użyj definicji break; np. po społnieniu jakiegoś warunku.

komentarz 28 października 2015 przez majfirst Obywatel (1,200 p.)
Czyli zmienne umieszczać wewnątrz funkcji?

Inne funkcje będą miałe wtedy do nich dostęp? (z tego co pamiętam to możnabyło ustawiać public czy coś)
komentarz 29 października 2015 przez Bondrusiek Maniak (61,460 p.)
Tak, gdyż w ten sposób ukrywasz zmienne.

Postaram ci się to wyjaśnić obrazowo:

typ_zmiennej a1;

int main()

{

// w tym miejscu na całym obszarze 'main' jest widoczna zmienna a1

typ_zmiennaj a2 ;

for(;;;) lub if() lub jakakolwiek inna funkcja np while() , twojafunkaca()

{

//wedle tego obszaru pamięci zmienna a2 jest zmienna globalną i możesz się do niej //odwoływać w ciele powyższej funkcji lub w obrębie funcji main()

typ_zmiennej a3 ;

for(;;;) lub if() lub jakakolwiek inna funkcja np while() , twojafunkaca()

{

//tutaj możesz bez problemu operować na zmiennej a3 gdyż wedle tego obszaru pamięci

//zmienna a3 jest globalna

}

}

//tu nie możesz się odwołać do zmiennej do zmiennej a3 np a3 = 3 ; gdyż obszar pamięci

//tej zmiennej jest schowany w wnętrzu funkcii for(;;;) czy innych ;

a1= 1 ;

a2 = 2;

//powyższe dwa zapisy są możliwe gdyż zmienna a1 jest globalna względem 'main'

//natomiast a2 jest 'zamkniete' klamrami w funkcji main

}

// unikaj pisania zmiennych globalnych gdyż sercem programu jest funkcja main i na jej

//na jej zasięgu powinny być zamknięte zmienne

//muwi się, że im lepszy kod im mniej zmiennych globalnych więc używa się i w ostaczetności

Mam nadzieje że troszkę rozjaśniłem wątpliwość,

Pozdrawiam
komentarz 29 października 2015 przez iwan9449 Pasjonat (20,810 p.)
Widać, że sam nie wiesz dlaczego nie powinno się używać zmiennych globalnych... I bynajmniej nie chodzi tu o to, że funkcja main "jest sercem programu" :)
0 głosów
odpowiedź 28 października 2015 przez radek024 Szeryf (77,160 p.)
Taki jest kod - powtarza tylko zalogowanie, ponieważ warunek jest spełniony a petla obraca się zawsze, program działa ok. Musisz dokleić częśc kodu z else{} :)
komentarz 28 października 2015 przez majfirst Obywatel (1,200 p.)
Czyli jak mogę złamać tą pętle? ;d
komentarz 28 października 2015 przez radek024 Szeryf (77,160 p.)
Jeżeli warunek będzie niespełniony, czyli na przykład  

for(bool test=true; test!=zalogowany;1+2)

osobiście polecam jendak pętle do{}while(warunek), która wykona się zawsze jeden raz - tutaj zapis będzie

do

{

}while(zalogowany!=true);

czyli czynność będzie się powtarzała dopóki nie będziesz zalogowany. Już nie jestem pewny, tego co piszę - jest późno, w razie problemów napisz je, postaram się na nie odpowiedzieć rano ;)

Podobne pytania

0 głosów
1 odpowiedź 570 wizyt
pytanie zadane 23 czerwca 2022 w C i C++ przez kuki_shin Użytkownik (620 p.)
0 głosów
0 odpowiedzi 1,011 wizyt
pytanie zadane 30 listopada 2021 w C i C++ przez niezalogowany
0 głosów
0 odpowiedzi 661 wizyt

93,717 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,263 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...