Skocz do zawartości

Zaczynam z c++


Rekomendowane odpowiedzi

Opublikowano

Tworzę programik z różnymi opcjami w konsoli.

 

Jest coś takiego, że pyta o podanie poziomu postaci. Jak ma poziom to wylicza coś. Ale później jest:

    system("PAUSE");
    return EXIT_SUCCESS;

 

w funkcji głównej.

 

Chciałbym żeby po podaniu nieprawidłowych danych powracało do pytania. Co zrobić? Chyba da się zainicjować funkcję i się do niej odwołać... Jak to będzie wyglądało?

Opublikowano

WHILE nie posiada case'ów ( To nie switch, tylko pętla ), a te true oznacza że pętla ma się wykonywać puki nie znajdzie na swojej drodze break'a ( Lub wartość 'true' zmieni się na 'false' [ Można używać zmiennych ] ) ;p

E: Ups sorki, trochę źle zrozumiałem ;p

Wstaw wszystko w tą pętle i można dodawać kilka razy pętle w pętlach ( Chociażby właśnie w tych case'ach ) :P

Opublikowano

Tak wygląda ten case ze switcha:

    case 3:
    std::cout << "Wpisz lvl:" << endl;
    cin >> lvl;        
    if (lvl>8 and lvl < 10000){
    hp=185+5*(lvl-8);
    mana=30*(lvl-8)+35;
    capp=470+(lvl-8)*10;
    }else{hp=0;mana=0;capp=0;cout<<"Podaj lvl od 9 do 10000!"<<endl;}
    cout << "Twoj druid/sorc ma:" << endl << endl<<endl<< "      Hp:" << hp << "      Mana:" << mana  << "      Capp:" << capp << endl << endl << endl;    
    break;

 

Tutaj ta pętla raczej nie pasuje. To wyglądało tak, że powtarzało ten kod cały czas i nie było nic widać...

Ogólnie to chciałbym wiedzieć jak zrobić żeby wracało do kodu poprzedniego. Pyta np o imię i podasz źle to wraca do pytania.

Opublikowano

    while( true )
    {
        std::cout << "Wpisz lvl:" << std::endl;
        std::cin >> lvl;        
        if ( lvl >= 9 && lvl <= 10000)
        {
            hp = 185+5*(lvl-8);
            mana = 30*(lvl-8)+35;
            capp = 470+(lvl-8)*10;
        }
        else
        {
            std::cout << "Podaj lvl od 9 do 10000!" << std::endl;
            continue;
        }
        std::cout << "Twoj druid/sorc:\n" << 
                     "\n Hp:" << hp <<
                     "\n Mana:" << mana <<
                     "\n Capp:" << capp << std::endl;
        break;
    }

 

E: Dodałem kosmetyczne zmiany ;p

Opublikowano

Tak o to mi chodziło. Dziękuję! :)

 

 

 

Ale co mam robić z resztą kodu? Nie ma jakiegoś prostszego sposobu na "wracanie" do pytań lub jakichś innych fragmentów kodu?

Opublikowano

prościej to się tworzy funkcje i je wykorzystuje dla uniwersalności i przejrzystości kodu. Dodatkowo funkcje majace do kilkunastu linii kodu mozesz poprzedzic ją slowem "inline" co sprawi ze kod z niej zostanie wszedzie przepisany tam gdzie zostanie wywolana taka funkcja. Przyspiesza dzialanie programu, ale tez zwieksza jego objetosc. Zreszta c++ to nie assembler ze mozesz skoczyc w dowolne miejsce w kodzie. A petla while to najlatwiejsza metoda do uzyskania tego co chcesz.

Opublikowano
Dodatkowo funkcje majace do kilkunastu linii kodu mozesz poprzedzic ją slowem "inline" co sprawi ze kod z niej zostanie wszedzie przepisany tam gdzie zostanie wywolana taka funkcja

inline stosuje się do jak najkrótszych funkcji(kilka linii). Wszystkie długie funkcje(kilkanaście linii), którym dałeś inline i tak prawdopodobnie nie zostaną rozwinięte przez kompilator(dzięki Bogu). A nawet te krótkie właściwie też nie zawsze, wszystko zależy od kompilatora. Więc jak już coś to dla VC stosować __forceinline.

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...