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

Jak wykonać ponownie zestaw poleceń?

Object Storage Arubacloud
0 głosów
144 wizyt
pytanie zadane 14 kwietnia 2020 w C i C++ przez Drożdżówka Obywatel (1,870 p.)

Witam!

Czy wie ktoś może jak wykonać ponownie jakiś zestaw poleceń? Chodzi mi tutaj o to że gdy wykonuje się jakiś Void chcę żeby jakaś jego część została znowu wykonana.

Z góry dziękuję!

Pozdrawiam!

3 odpowiedzi

+2 głosów
odpowiedź 14 kwietnia 2020 przez tangarr Mędrzec (154,860 p.)
wybrane 14 kwietnia 2020 przez Drożdżówka
 
Najlepsza

Dam ci odpowiedź którą pisałem do twojego poprzedniego tematu (w momencie gdy go zamykałeś).

Możesz użyć dodatkowej zmiennej do sterowania przepływem w programie.

W przygotowanym przykładzie program posiada pętlę główną która (na podstawie stanu) decyduje które menu wyświetlić (lub jaką funkcję wykonać).

#include <iostream>

using namespace std;

enum class StanMenu {
    MenuGlowne,
    Menu1,
    Menu2,
    Koniec
};

StanMenu menuGlowne() {
    cout << "===Menu===" << endl;
    cout << "Wybierz opcje" << endl;
    cout << "1. Menu 1" << endl;
    cout << "2. Menu 2" << endl;
    cout << "3. Koniec" << endl;
    int opcja;
    cin >> opcja;
    switch (opcja) {
    case 1:
        return StanMenu::Menu1;
    case 2:
        return StanMenu::Menu2;
    case 3:
        return StanMenu::Koniec;
    default:
        cout << "Zla opcja!" << endl;
    }
}

StanMenu menu1() {
    cout << "===Menu1===" << endl;
    cout << "Wybierz opcje" << endl;
    cout << "1. Menu 2" << endl;
    cout << "2. Wroc" << endl;
    int opcja;
    cin >> opcja;
    switch (opcja) {
    case 1:
        return StanMenu::Menu2;
    case 2:
        return StanMenu::MenuGlowne;
    default:
        cout << "Zla opcja!" << endl;
    }
}

StanMenu menu2() {
    cout << "===Menu2===" << endl;
    cout << "Wybierz opcje" << endl;
    cout << "1. Menu 1" << endl;
    cout << "2. Wroc" << endl;
    int opcja;
    cin >> opcja;
    switch (opcja) {
    case 1:
        return StanMenu::Menu1;
    case 2:
        return StanMenu::MenuGlowne;
    default:
        cout << "Zla opcja!" << endl;
    }
}

int main()
{
    StanMenu stanMenu = StanMenu::MenuGlowne;
    while (stanMenu != StanMenu::Koniec) {
        switch (stanMenu) {
        case StanMenu::MenuGlowne:
            stanMenu = menuGlowne();
            break;
        case StanMenu::Menu1:
            stanMenu = menu1();
            break;
        case StanMenu::Menu2:
            stanMenu = menu2();
            break;
        default:
            cout << "Błąd! Koniec Programu!" << endl;
            stanMenu = StanMenu::Koniec;
        }
    }
    return 0;
}

Przeanalizuj ten kod. Zastanów się jakbyś mógł pociąć swój kod na mniejsze funkcje aby zastosować podobny schemat.

1
komentarz 14 kwietnia 2020 przez Drożdżówka Obywatel (1,870 p.)
Wielkie dzięki że chcesz pomagać innym. To naprawdę miłe że nie jest Ci szkoda czasu na pisanie kodu, którego sam nie wykorzystasz :-)
2
komentarz 14 kwietnia 2020 przez tangarr Mędrzec (154,860 p.)
Pomaganie innym pomaga mi uporządkować swoją wiedzę. Też powinieneś spróbować. To forum powstało głównie po to aby osoby takie jak ty (początkujący entuzjaści kodu) mogli się wymieniać pomysłami.
+1 głos
odpowiedź 14 kwietnia 2020 przez DeBos123 Nałogowiec (44,950 p.)

Opisz dokładniej problem i wytłumacz co chcesz osiągnąć, bo zależnie od sytuacji rozwiązaniem może być np. rozpisanie funkcji na mniejsze funkcje np. zamiast

int a(){
    //code 1
    //code 2
}

rozpisać to na funkcje

int b(){
    //code 1
}
int c(){
    //code 2
}
int a(){
    b();
    c();
}

i wtedy możesz wykonać konkretną część funkcji a wywołując bezpośrednio b lub c.

0 głosów
odpowiedź 14 kwietnia 2020 przez tangarr Mędrzec (154,860 p.)

Możesz zastosować pętlę wewnątrz funkcji

void funkcja() {
    int wczytaj_dane = 1; 
    while (wczytaj_dane) {
        //
        // jakiś kod
        //
        if (dane_sa_ok)
             wczytaj_dane = 0;
    }
    // hura! koniec funkcji
}

 

komentarz 14 kwietnia 2020 przez Drożdżówka Obywatel (1,870 p.)
Wielkie dzięki wszystkim za pomoc!
komentarz 14 kwietnia 2020 przez Drożdżówka Obywatel (1,870 p.)

@tangarr, Trochę nie rozumiem, może wyślę wam kod?

komentarz 14 kwietnia 2020 przez Drożdżówka Obywatel (1,870 p.)
#include "ingredients.h"

void menu()
{
 for(int i=1; i=1; i=1)
 {
     system("cls");
     //line 1
     color();
     frame_change();
     //line 2
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[1]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "NOWA GRA                  "; color(); cout << "         |" << endl;
     //line 3
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[2]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "WCZYTAJ GRĘ               "; color(); cout << "         |" << endl;
     //line 4
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[3]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "OPCJE                     "; color(); cout << "         |" << endl;
     //line 5
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[4]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "WYJDŹ Z GRY               "; color(); cout << "         |" << endl;
     color();
     frame_change();
     command=getch();
     switch(command)
     {
     case '1':
        {
            dialogue_value=1;
            dialogue();
            character_creator();
            break;
        }
     case '2':
        {
            break;
        }
     case '3':
        {
             for(int i=1; i=1; i=1)
             {
                 system("cls");
                 color();
                 frame_change();
     //line 2
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[1]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "RAMKA NA TEKST: "; cout << frame; color(); cout << "                  |" << endl;
     //line 3
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[2]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "KOLOR RAMKI NA TEKST: "; cout << frame_color; color(); cout << "            |" << endl;
     //line 4
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[3]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "AKTYWUJ ZAWARTOŚĆ DLC    "; color(); cout << "        |" << endl;
     //line 5
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[4]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "WRÓĆ                     "; color(); cout << "        |" << endl;
     color();
     frame_change();
                 command=getch();
                 switch(command)
                 {
                 case '1':
                    {
                        if(frame==4)
                        {
                            frame=frame-4;
                        }
                        else
                        {
                           frame=frame+1;
                        }
                        break;
                    }
                 case '2':
                    {
                         if(frame_color==4)
                         {
                             frame_color=frame_color=0;
                         }
                         else
                         {
                             frame_color=frame_color+1;
                         }
                         break;
                    }
                 case '3':
                    {
                        dialogue_value=1000;
                        dialogue();
                        break;
                    }
                 case '4':
                    {
                        menu();
                        break;
                    }
                 default:
                    {

                    }
                 }

             }
        }
     default:
        {

        }

     }
 }
}
void character_creator()
{
 for(int i=1; i=1; i=1)
 {
     system("cls");
     //line 1
     color();
     frame_change();
     //line 2
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[1]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "IMIĘ                  "; color(); cout << "         |" << endl;
     //line 3
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[2]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "ATRYBUTY               "; color(); cout << "         |" << endl;
     //line 4
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[3]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "KLASA                     "; color(); cout << "         |" << endl;
     //line 5
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[4]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "PRZEJDŹ DALEJ               "; color(); cout << "         |" << endl;
     color();
     frame_change();
     command=getch();
     switch(command)
     {
                 case '2':
                    {
                        {
                        for(int i=1; i=1; i=1)
                        {
system("cls");
     //line 1
     color();
     frame_change();
     //line 2
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[1]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "PŻ.                  "; color(); cout << "         |" << endl;
     //line 3
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[2]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "ATAK               "; color(); cout << "         |" << endl;
     //line 4
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[3]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "OBRONA                    "; color(); cout << "         |" << endl;
     //line 5
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[4]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "DALEJ             "; color(); cout << "         |" << endl;
     //line 6
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[5]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "WRÓĆ              "; color(); cout << "         |" << endl;
     //line 7
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[6]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "INFO             "; color(); cout << "         |" << endl;
     color();
     frame_change();
     command=getch();
     switch(command)
     {
                 case '2':
                    {
//sekcja z atakiem
                        for(int i=1; i=1; i=1)
                        {
     system("cls");
     //line 1
     color();
     frame_change();
     //line 2
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[1]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "ATAK                "; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),2); cout << "+";  color(); cout << "              |" << endl;
     //line 3
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[2]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "ATAK                "; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),4); cout << "-"; color(); cout << "              |" << endl;
     //line 4
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[3]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "WRÓĆ                    "; color(); cout << "        |" << endl;
     color();
     frame_change();
     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12); cout << "PRIORYTET ATAKU: "; cout << atck_max_priority; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),3); cout << " PP: "; cout << pp << endl;
      color();
     frame_change();
     command=getch();
     switch(command)
     {
    case '1':
        {
            if(pp==0)
            {
                cout << "Masz za mało PP!";
                Sleep(500);
                clean_bufor();
            }
            else
            {
            atck_max_priority=atck_max_priority+1;
            pp=pp-1;
            break;
            }
        }
    case '2':
        {
            if(atck_max_priority==0)
            {
                cout << "PRIORYTET ATAKU WYNOSI 0.";
                Sleep(500);
                clean_bufor();
                break;
            }
            else
            {
            atck_max_priority=atck_max_priority-1;
            pp=pp+1;
            break;
            }
        }
    case '3':
        {
            return;
            break;
        }
    default:
        {

        }
     }
                        }
                    }
                     case '3':
                    {
                        for(int i=1; i=1; i=1)
                        {
     system("cls");
     //line 1
     color();
     frame_change();
     //line 2
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[1]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "OBRONA                "; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),2); cout << "+";  color(); cout << "              |" << endl;
     //line 3
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[2]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "OBRONA                "; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),4); cout << "-"; color(); cout << "              |" << endl;
     //line 4
     cout << "|"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5); cout << "[3]"; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7); cout << "WRÓĆ                    "; color(); cout << "        |" << endl;
     color();
     frame_change();
     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12); cout << "PRIORYTET OBRONY: "; cout << def_max_priority; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),3); cout << " PP: "; cout << pp << endl;
      color();
     frame_change();
     command=getch();
     switch(command)
     {
    case '1':
        {
            if(pp==0)
            {
                cout << "Masz za mało PP!";
                Sleep(500);
                clean_bufor();
            }
            else
            {
            def_max_priority=def_max_priority+1;
            pp=pp-1;
            }
            break;
        }
    case '2':
        {
            if(def_max_priority==0)
            {
                cout << "PRIORYTET OBRONY WYNOSI 0.";
                Sleep(500);
                clean_bufor();
            }
            else
            {
            def_max_priority=def_max_priority-1;
            pp=pp+1;
            }
            break;
        }
    case '3':
        {
          return;
          break;
        }
    default:
        {

        }
     }
                        }
                    }
     }
                    }
     }
                    }
}
 }
}
void color()
{
    if(frame_color==0)
    {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7);
    }
    else if(frame_color==1)
    {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),6);
    }
    else if(frame_color==2)
    {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),4);
    }
    else if(frame_color==3)
    {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),2);
    }
    else if(frame_color==4)
    {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),1);
    }
}
void frame_change()
{
    if(frame==0)
                 {
                    cout << "========================================" << endl;
                 }
                 else if(frame==1)
                 {
                    cout << "oooooooooooooooooooooooooooooooooooooooo" << endl;
                 }
                 else if(frame==2)
                 {
                    cout << "////////////////////////////////////////" << endl;
                 }
                 else if(frame==3)
                 {
                    cout << "vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv" << endl;
                 }
                 else if(frame==4)
                 {
                    cout << "UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU" << endl;
                 }
}

No i teraz po wciśnięciu "3" w sekcji z atakiem chcę żeby wykonał się ponownie inny zestaw poleceń.

komentarz 14 kwietnia 2020 przez DeBos123 Nałogowiec (44,950 p.)
Powinieneś poszczególne menu pozamykać oraz powtarzające się wywołania pozamykać w funkcjach, bo ten kod już na tym etapie czyta się bardzo ciężko.

Podobne pytania

0 głosów
1 odpowiedź 443 wizyt
pytanie zadane 24 listopada 2015 w C i C++ przez Mateusz15 Nowicjusz (140 p.)
+1 głos
3 odpowiedzi 334 wizyt
pytanie zadane 6 czerwca 2019 w HTML i CSS przez aleex933 Początkujący (310 p.)
0 głosów
1 odpowiedź 549 wizyt
pytanie zadane 27 kwietnia 2017 w C i C++ przez Pabiak Gaduła (4,450 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...