Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pomoc w goto.

Ostatnio zmodyfikowano 2009-12-22 20:00
Autor Wiadomość
Nastrix
Temat założony przez niniejszego użytkownika
Pomoc w goto.
» 2009-12-22 19:28:32
Proszę o poświęcenie mi chwilki. Z góry dziękuję!


Kod, który umieściłem poniżej to wstęp programu, który chce stworzyć. Potrzebuje pomocy. Wiem, że nadużywanie goto jest karygodne, lecz w moim przypadku jest on najlepszym rozwiązaniem. Chcę napisać program, który będzie zawierał wszystkie dotychczasowe moje programy oraz przejrzysty panel kontrolny. I tu ujawnia się mój problem. Mianowicie, proszę skompilować program wcisnąć t > 1 > c, i nic się nie dzieje! Co zrobiłem źle w zastosowaniu goto?  Czy można kilku krotnie używać tych samych instrukcji w jednym programie? Proszę o szybką odpowiedź.
C/C++
#include <conio.h>
#include <iostream>
#include "ddtconsole.h"
#include <cstdlib>

using namespace std;
using namespace ddt::console;

int main()
{
    //deklaracje zmiennych
    int wybor;
    char wybor_char, wybor_char2;
   
    //naglowek
    int kolorTekstu = 11; // kolor tekstu;] 
    textattr( kolorTekstu );
    cout << "                              Witaj!!!" << endl;
    cout << "Program stwozony po to aby zsyntezowac moja wiedze na temat programowania" << endl;
    cout << "Aby wybrac jaka kolwiek opcje naciskamy [1],[2],...,[n] i enter, aby wycofac do poprzedniego menu [c] (od cofac)" << endl;
    cout << "Jesli zapoznales sie z dzialaniem programu nacisnij [t], jezeli nie wcisnij [n]." << endl;
    cin >> wybor_char;
    system( "cls" ); // czyszczenie konsoli
   
   
    if( wybor_char == 't' ) // w razie nacisniecia t w panelu glownym
    {
       
        panel_glowny:
       
        //glowny panel
        kolorTekstu = 11; // kolor tekstu;] 
        ddt::console::textattr( kolorTekstu );
        int wybor;
        cout << "Glowny panel:" << endl;
        cout << "[1] O mnie." << endl;
        cout << "[2] O programowanaiu" << endl;
        cout << "[3] Programy liczace" << endl;
        cout << "[4] Petle while, for" << endl;
        cout << "[5] Instrukcje warunkowe if, else" << endl;
        cout << "[6] Obsługa plikow" << endl;
        cin >> wybor;
       
        system( "cls" );
        switch( wybor ) // panel [1] O mnie.
        {
        case 1:
            cout << "O mnie:" << endl;
            cout << "Nazywam sie Krzysztof, mam 18 lat, chodze do LO Tyczyn(mam go serdecznie dosc)" << endl;
            cout << "Przygode z c++ rozpoczolem 5 miesiecy temu, teraz programowanie zajmuje mi 1/2 mojego czasu wolnego (czasem i calosc:P). Mam nadzieje ze spodoba Ci sie zestaw zrobionych przeze mnie programow" << endl;
            cout << "Przypominam [c] cofamy o jeden poziom panelu, [k] koniec programu, na pytania wylacznie [t] lub [n] chyba ze pisze cos innego." << endl;
            cout << "Pozdrawiam i zycze milej zabawy!" << endl;
            cout << "Co chcesz teraz zrobic?" << endl;
            cout << "[c] - cofniecie do panelu glownego" << endl;
            cout << "[k] - zakonczenie programu" << endl;
            cin >> wybor_char2;
           
           
            if( wybor_char == 'c' )
            {
                goto panel_glowny;
            }
           
            if( wybor_char == 'k' )
            {
                goto koniec;
            }
            break;
           
            default:
            {
                cout << "Mialo byc [c] lub [k]!" << endl;
            }
            break;
           
           
           
        }
    } // domkniecie if panelu glownego   
   
   
   
   
   
   
   
   
    koniec:
   
    cout << "Dziekuje za wyprObowanie mojego programu, zapraszam ponownie!!!" << endl;
    getch();
    return 0;
}
P-12392
Elaine
» 2009-12-22 19:41:05
Czytasz do wybor_char2 a sprawdzasz wybor_char. Tak miało być?

I nie, goto nie jest tu najlepszym rozwiązaniem. Lepszym rozwiązaniem są funkcje. Try them!
P-12393
Nastrix
Temat założony przez niniejszego użytkownika
» 2009-12-22 19:47:32
A gdybym chciał jednak przystać przy goto, są jakieś rady?
W nie odległym czasie zacznę studiować kolejną partię materiały z poradnika(uważam że jest świetny). Proszę o zrozumienie, moim jedynym narzędziem, którym mogę się w tej chwili posłużyć jest goto. Jeżeli jest nie realne to zrobić, proszę napisać, porzuce projekt, który pisałem przez tydzień...;/
P-12394
Nastrix
Temat założony przez niniejszego użytkownika
» 2009-12-22 19:50:18
Chodzi mi o to, że przy wejściu do [1] O mnie przy wciśnięciu c program powinien się cofać do panelu głównego a on zakańcza swoje działanie;/
P-12395
DejaVu
» 2009-12-22 19:55:29
Przed cin >> wybor; dopisz:
C/C++
cin.clear();
cin.sync();
P-12396
Elaine
» 2009-12-22 19:56:48
Już ci napisałem, o co poszło. Czytasz do wybor_char2, a sprawdzasz wartość wybor_char. Tak na pewno miało być?

@ten wyżej: i co to zmieni?
P-12397
Nastrix
Temat założony przez niniejszego użytkownika
» 2009-12-22 20:00:31
Dziękuję za pomoc. Moja wina, pomyliłem zmienne. Przepraszam za bałagan;d
Zamykam temat i proszę o usunięcie tematu. Iname jednak miałeś rację.:P
P-12398
« 1 »
  Strona 1 z 1