Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Cofnięcie do menu w C . Jak coś takiego zrobić?

13 Mar 2005 07:57 2339 6
  • Użytkownik usunął konto  
  • Poziom 17  
    witam,
    proponuje tak:

    Code:

    //kod procedurek niezmiennie
    //--------------------------------

    main()
    {
    for(;;){ //petla nieskonczona!
    clrscr();
    int a,b;
    a=0;
    b=0;
    menu();
    switch (nr_opcji)
    {
    case 1:
    dodawanie (a,b);
    break;
    case 2:
    odejmowanie (a,b);
    break;
    //inne warunki...
    case 19: exit(1); //deklaracja powinna być w stdlib.h
     default:
    cout<<endl;
    cout<<"Nalezy wybrac nr opcji z zakresu 1-19";
    getch();
    } //zamyka case()
    }//zamyka for(;;)
    }//zamyka main();


    można też za pomocą etykiety i goto ale to rozwązanie zawsze jest odradzane.

    pozdrawiam,
  • Poziom 28  
    Witam i spiesze z pomoca :). Otoz, musisz poznac sie z pewna Pania. Nazywa sie okna glowna petla programu (ang: main loop). Inaczej mowiac, kazdy powazny program jest zbudowany na zasadzie petli, ktora powtarza ciag pewnych operacji dopoki nie pojawi sie zadanie zakonczenia programu. Schemat dla twojego programu:

    Code:

    bool quit = false;

    while(!quit)
    {
      menu();
     
      switch(opcja)
      {
        case 1:
          dodawanie(a, b);
          break;
        case 2:
          odejmowanie(a, b);
          break;
        .....
        case 19:
          quit = true;
          break;
      }
    }



    I powinno byc OK. Pozdrawiam.
  • Poziom 16  
    Odpowedź jest jeszcze prostrza!!!
    Istnieje coś takiego jak "main()".
    Wszędzie to wpiszesz w programie to wróci on do początku (czyli do twojego menu).
    Oprócz tego możesz wyczyścić ekran "system("cls")".

    To chyba bardzo proste i logiczne:]
  • Poziom 19  
    Maniak.M napisał:
    Odpowedź jest jeszcze prostrza!!!
    Istnieje coś takiego jak "main()".
    Wszędzie to wpiszesz w programie to wróci on do początku (czyli do twojego menu).
    Oprócz tego możesz wyczyścić ekran "system("cls")".

    To chyba bardzo proste i logiczne:]



    :?:

    Powiem tak, jest to jeden z najglupszych pomyslow, jakie slyszalem, ale akurat, nie pierwszy raz to slysze.

    A wiesz, co potem sie stanie? Zakonczysz jednego maina() i a poprzedni nadal bedzie zaladowany do pamieci :evil:
    Moze wogole nie bedziesz sie pytal, czy chce wracac uzytkownik do menu, tylko zrob rekurencje na fkcji main() bez warunku stopu?

    Rozwiazanie z konczeniem petli za pomoca pewnej zmiennej logicznej jest zdaje sie najlepsza opcja....
  • Poziom 16  
    Nie mówiłem żeby wklepać te komendy jak idiota tylko je odpowiednio trzeba wykożystać.
    I nie mów, że to jest najgłupszy pomysł jak go nie rozumiesz.
  • Poziom 11  
    Maniak.M zasugerowane przez Ciebie użycie main() by powrócić do menu może i zadziała, nie wiem nie proóbowałem czegoś takiego,ale jest to sposób nieefektywny (by nie pisać głupi ;) ) Już tłumaczę czemu: po użyciu main() we wnętrzu programu nie wracasz do początku lecz zaczynasz go od nowa na kopiach wszystkich zmiennych, przez co zużywasz więcej pamięci. Po 5 wykonaniach jakiejś czynności w programie i 5 "powrotach" do menu w sugerowany przez Ciebie sposób będziesz miał w pamięci 5 kompletów zmiennch. :) I przy każdym kolejnym wywołaniu dojdzie jeszcze jeden komplet jako że rekurencja działa na kopiach zmiennych wykonywanych przy każdym kolejnym wywołaniu.