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

Do czego przydaje sie petla do while?

Object Storage Arubacloud
0 głosów
427 wizyt
pytanie zadane 3 sierpnia 2019 w C i C++ przez Garper Początkujący (360 p.)
Witam, mam problem z zrozumieniem przydatności oraz różnicy która, dzieli pętle while od pętli do..while. Wiem tylko że pętla do..while może się wykonać  przynajmniej jeden raz ale, jaką to ze sobą niesie przydatność.

 

Jeżeli miałby ktoś przykład użycia tej pętli w programie to byłbym bardzo wdzięczny.

1 odpowiedź

+3 głosów
odpowiedź 3 sierpnia 2019 przez Eryk Andrzejewski Mędrzec (164,260 p.)

No na przykład możesz poprosić użytkownika o wprowadzenie jakiejś wartości (np. rok urodzenia). Jeżeli wpisze ją poprawnie za pierwszym razem, to fajnie. A jeśli nie, to pętla może się wykonywać kolejny raz. wink

komentarz 4 sierpnia 2019 przez Garper Początkujący (360 p.)

Ulepszyłem pętle while więc powinno teraz działać bez zapętlania się gdy wybierze się zamiast 1 drugą opcje 2.

#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <conio.h>
using namespace std;
char odp[100];
string imie;
int main()
{

cout << "                                     -SYMULATOR SZKOLNA 17-" << endl;
    cout <<"Witaj w symulatorze szkolnej 17!"<<endl;
    cout<<"Chcesz zagrac?"<<endl;
    cout<<endl;
    cout<<"Tak--> 1"<<endl;
    cout<<"Nie--> 2"<<endl;

    odp[0]=getch();



     if(odp[0]=='1')

     {
        cout<<"Oguem to wspaniale zatem zaczynamy za:";
        for(int i=1; i<=6;i=i+1)
     {
         Sleep(1500);
         cout<< i;
         if(i==6)
         system ("cls");
     }

     //cout<<"                                       Witaj w Symuatorze Szkolnej 17!"<<endl;
    // cout<<"                     -GIERKA ZOSTAlA ZROBIONA DLA FANU WIEC MAM NADZIEJE ZE SIE SPODOBA-"<<endl;
     //cout<<"1.CZYM JEST SYMULATOR SZKOLNEJ 17?"<<endl;


     //cout<<"Podzenia!";


     //Sleep(3000);
    // system ("cls");
     //tutaj kontynuacja tak

      // cout<<endl;
       //cout<<endl;
       //cout<<endl;
       //cout<<endl;
       //cout<<endl;
       //cout<<endl;
       //cout<<"Podaj swoje imie: "<<endl;
       //cin >>imie;

     //cout<<"Prolog-Jestem "<<imie<<" chlop ze wsi,przeprowadzilem sie do Bialegostoku aby zarobic na chleb"<<endl;

        }

     else
     {
        while((odp[0]!='1')||(odp[0]!='2'))
        {

           odp[0]=getch();
           cout<<endl;
           system ("cls");
           cout<<"Morzesz wybrac tylko 1 lub 2."<<endl;
           cout<<"Tak--> 1"<<endl;
           cout<<"Nie--> 2"<<endl;

           if(odp[0]=='1')
     {
       cout<<"Oguem to wspaniale zatem zaczynamy za:";
        for(int i=1; i<=6;i=i+1)
     {
         Sleep(1500);
         cout<< i;
         if(i==6)
         system ("cls");
     }

    }
       if(odp[0]=='2')
     {

    cout<<"Napewno chcesz wyjsc?????"<<endl;
    cout<<"TAK--> 1"<<endl;
    cout<<"NIE--> 2"<<endl;

    odp[1]=getch();

    if(odp[1]=='1')
    {
     cout<<endl;
     system("cls");
     cout<<"OGUEM TO SZKODA"<<endl;
     cout<<"Wiec oguem PA PA "<<endl;
     Sleep(4000);
     system("cls");
     cout<<"Za 3 s wcisnij Enter";
     Sleep(3000);
     exit (0);


    }

        }

     }

     }

       if(odp[0]=='2')
     {

    cout<<"Napewno chcesz wyjsc?????"<<endl;
    cout<<"TAK--> 1"<<endl;
    cout<<"NIE--> 2"<<endl;

    odp[1]=getch();

    if(odp[1]=='1')
    {
        cout<<endl;
     cout<<"OGUEM TO SZKODA"<<endl;
     cout<<"Wiec oguem PA PA ";
     Sleep(4000);
     system("cls");

    }
    else
    {
        while((odp[1]!='1')||(odp[1]!='2'))
        {

    odp[1]=getch();
    system("cls");
    cout<<"Napewno chcesz wyjsc?????"<<endl;
    cout<<"TAK--> 1"<<endl;
    cout<<"NIE--> 2"<<endl;
    cout<<endl;

     if(odp[1]=='1')
    {
        cout<<endl;
     cout<<"OGUEM TO SZKODA"<<endl;
     cout<<"Wiec oguem PA PA ";
     Sleep(4000);
     system("cls");

    }

        }

    }






      if(odp[1]=='1')
     {
        cout<<"Oguem to wspaniale zatem zaczynamy za:";
     for(int i=1; i<=6;i=i+1)
     {
         Sleep(1500);
         cout<< i;
         if(i==6)
         {
           system ("cls");
         }
     }

     cout<<"                                       Witaj w Symuatorze Szkolnej 17!"<<endl;
     cout<<"                      -GIERKA ZOSTAlA ZROBIONA DLA FANU WIEC MAM NADZIEJE ZE SIE SPODOBA-"<<endl;
     cout<<"Powdzenia!";
     Sleep(4000);
     system ("cls");
     }



     }

     //tutaj kontynuacja nie>tak

     //kontynuuj jutro






    return 0;
}

 

komentarz 4 sierpnia 2019 przez Garper Początkujący (360 p.)

Wersja 3.0

#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <conio.h>
using namespace std;
char odp[100];
string imie;
int main()
{

cout << "                                     -SYMULATOR SZKOLNA 17-" << endl;
    cout <<"Witaj w symulatorze szkolnej 17!"<<endl;
    cout<<"Chcesz zagrac?"<<endl;
    cout<<endl;
    cout<<"Tak--> 1"<<endl;
    cout<<"Nie--> 2"<<endl;

    odp[0]=getch();



     if(odp[0]=='1')

     {
        cout<<"Oguem to wspaniale zatem zaczynamy za:";
        for(int i=1; i<=6;i=i+1)
     {
         Sleep(1500);
         cout<< i;
         if(i==6)
         system ("cls");
     }

     //cout<<"                                       Witaj w Symuatorze Szkolnej 17!"<<endl;
    // cout<<"                     -GIERKA ZOSTAlA ZROBIONA DLA FANU WIEC MAM NADZIEJE ZE SIE SPODOBA-"<<endl;
     //cout<<"1.CZYM JEST SYMULATOR SZKOLNEJ 17?"<<endl;


     //cout<<"Podzenia!";


     //Sleep(3000);
    // system ("cls");
     //tutaj kontynuacja tak

      // cout<<endl;
       //cout<<endl;
       //cout<<endl;
       //cout<<endl;
       //cout<<endl;
       //cout<<endl;
       //cout<<"Podaj swoje imie: "<<endl;
       //cin >>imie;

     //cout<<"Prolog-Jestem "<<imie<<" chlop ze wsi,przeprowadzilem sie do Bialegostoku aby zarobic na chleb"<<endl;

        }

     else
     {
        while((odp[0]!='1')||(odp[0]!='2'))
        {

           odp[0]=getch();
           cout<<endl;
           system ("cls");
           cout<<"Morzesz wybrac tylko 1 lub 2."<<endl;
           cout<<"Tak--> 1"<<endl;
           cout<<"Nie--> 2"<<endl;

           if(odp[0]=='1')
     {
       cout<<"Oguem to wspaniale zatem zaczynamy za:";
        for(int i=1; i<=6;i=i+1)
     {
         Sleep(1500);
         cout<< i;
         if(i==6)
         system ("cls");
     }

    }
       if(odp[0]=='2')
     {
    system ("cls");
    cout<<"Napewno chcesz wyjsc?????"<<endl;
    cout<<"TAK--> 1"<<endl;
    cout<<"NIE--> 2"<<endl;

    odp[1]=getch();

    if(odp[1]=='1')
    {
     cout<<endl;
     system("cls");
     cout<<"OGUEM TO SZKODA"<<endl;
     cout<<"Wiec oguem PA PA "<<endl;
     Sleep(4000);
     system("cls");
     cout<<"Za 3 s wcisnij Enter";
     Sleep(3000);
     exit (0);


    }
     //if(odp[1]=='2')
    // {
     //   cout<<"Oguem to wspaniale zatem zaczynamy za:";
     //for(int i=1; i<=6;i=i+1)
     //{
      //   Sleep(1500);
       //  cout<< i;
       //  if(i==6)
       //  {
        //   system ("cls");
       //  }
    // }

    // cout<<"                                       Witaj w Symuatorze Szkolnej 17!"<<endl;
    // cout<<"                      -GIERKA ZOSTAlA ZROBIONA DLA FANU WIEC MAM NADZIEJE ZE SIE SPODOBA-"<<endl;
    // cout<<"Powdzenia!";
     //Sleep(4000);
     //system ("cls");
     //}
        }
      if(odp[1]=='2')
     {
        cout<<"Oguem to wspaniale zatem zaczynamy za:";
     for(int i=1; i<=6;i=i+1)
     {
         Sleep(1500);
         cout<< i;
         if(i==6)
         {
           system ("cls");
         }
     }

     cout<<"                                       Witaj w Symuatorze Szkolnej 17!"<<endl;
     cout<<"                      -GIERKA ZOSTAlA ZROBIONA DLA FANU WIEC MAM NADZIEJE ZE SIE SPODOBA-"<<endl;
     cout<<"Powdzenia!";
     Sleep(4000);
     system ("cls");
     }

     //s
     }

     }



       if(odp[0]=='2')
     {

    cout<<"Napewno chcesz wyjsc?????"<<endl;
    cout<<"TAK--> 1"<<endl;
    cout<<"NIE--> 2"<<endl;

    odp[1]=getch();

    if(odp[1]=='1')
    {
        cout<<endl;
     cout<<"OGUEM TO SZKODA"<<endl;
     cout<<"Wiec oguem PA PA ";
     Sleep(4000);
     system("cls");

    }
    else
    {
        //hile((odp[1]!='1')||(odp[1]!='2'))
        //{

    odp[1]=getch();
    system("cls");
    cout<<"Napewno chcesz wyjsc?????"<<endl;
    cout<<"TAK--> 1"<<endl;
    cout<<"NIE--> 2"<<endl;
    cout<<endl;

     if(odp[1]=='1')
    {
        //cout<<endl;
     cout<<"OGUEM TO SZKODA"<<endl;
     cout<<"Wiec oguem PA PA ";
     Sleep(4000);
     system("cls");

    }


        }

    }

      if(odp[1]=='2')
     {
        cout<<"Oguem to wspaniale zatem zaczynamy za:";
     for(int i=1; i<=6;i=i+1)
     {
         Sleep(1500);
         cout<< i;
         if(i==6)
         {
           system ("cls");
         }
     }

     cout<<"                                       Witaj w Symuatorze Szkolnej 17!"<<endl;
     cout<<"                      -GIERKA ZOSTAlA ZROBIONA DLA FANU WIEC MAM NADZIEJE ZE SIE SPODOBA-"<<endl;
     cout<<"Powdzenia!";
     Sleep(4000);
     system ("cls");
     }










     //tutaj kontynuacja nie>tak

     //kontynuuj jutro






    return 0;
}

 

1
komentarz 4 sierpnia 2019 przez DragonCoder Nałogowiec (36,500 p.)
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <conio.h>

int main()
{
    char odp[100];
    std::string imie;

    do {
        std::cout << "                                     -SYMULATOR SZKOLNA 17-\n";
        std::cout << "Witaj w symulatorze szkolnej 17\n!";
        std::cout << "Chcesz zagrac?\n";
        std::cout << "\n";
        std::cout << "Tak--> 1\n";
        std::cout << "Nie--> 2\n";

        odp[0] = getch();

        switch (odp[0]) {
            '1' : std::cout << "Oguem to wspaniale zatem zaczynamy za:\n";
            for (int i = 1; i <= 6; i++) {
                Sleep(1000);
                std::cout << i;
                if (i == 6) {
                    system("cls");
                }
            }
            break;
            '2' : do
            {
                system("cls");
                std::cout << "Napewno chcesz wyjsc?\n";
                std::cout << "TAK--> 1\n";
                std::cout << "NIE--> 2\n";

                odp[1] = getch();

                switch (odp[1]) {
                    '1' : system("cls");
                    std::cout << "OGUEM TO SZKODA\n";
                    std::cout << "Wiec oguem PA PA \n";
                    Sleep(4000);
                    system("cls");
                    std::cout << "Za 3 s wcisnij Enter\n";
                    Sleep(3000);
                    exit(0);
                    break;
                    '2' : break;
                default:
                    break;
                }
            }
            while ((odp[1] != '1') && (odp[1] != '2'))
                break;
        default:
            break;
        }
    } while ((odp[0] != '1') && (odp[0] != '2'))

        return 0;
}

kod pisany na szybko i nie moge go sprawdzic, bo jestem na linuxie. Ale to takie mniej wiecej, jak Twoj kod moglby wygladac. Jak pisalem:

- nie uyzwaj zmiennych globalnych

- leepsze formatowanie

- uzywaj petli jesli mozesz

- wywal using namespace std;

- nie uzywaj bibliotek systemowych, jesli nie potrzebujesz 

- w moim kodzie nie poprawilem tez usypiania kooksoli na jakis czas, bo w stanardzie c++1, masz biblioteke chrono i thread do tego, do czyszcenia konsoli chyba tez sie zajdzie cos multiplaformowego, musialbys sprawdzic

https://sjp.pwn.pl/sjp/ogolem;3033300.html

Jak mowie to tak na szybko pewnie jest wiecej bledow i roznice w Twoich wersjach kodu sa nie wielkie

komentarz 4 sierpnia 2019 przez Garper Początkujący (360 p.)
Wielkie dzięki, za porady i że miałeś czas aby się bawić w moim kodzie.

Mam jeszcze parę pytań pierwsze związane z using namespace std;. Przecież jego stosowanie umożliwia pozbycie się końcówek ::std na końcu skryptu więc po co mam się go pozbywać w moim kodzie?

Czy nadmierna ilość bibliotek tych nie potrzebnych szkodzi w jakiś sposób w działaniu lub płynności programu?

 

Jeszcze raz dziękuję.
1
komentarz 4 sierpnia 2019 przez DragonCoder Nałogowiec (36,500 p.)
1. Tak i nie. Using namespace w malych projektach to nie problem, ale w duzych tach, gdy masz dolaczonych sporo bibliotek, to moze dojsc do konfliktow przestrzeni nazw. Oprocz tego mozezs uzyc wtedy zapisu typu std::string string, wiecej o tym tu:

https://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice

2. Tak, tzn moze na wzybkosc dzialania programu nie az tak, ale na jego wage. Dolaczasz je i one beda dolaczone do Twojego projektu i razem z nim skompilowane, przez co Twoj program zyskuje na objetosci. Raz mniej, raz więcej, ale po co pakowac wiecej, skoro i tal jest zbędne.

3. Pracuj nad czytelnościa kodu, bo inaczej ciezko bedzie Ci pomoc, gdy bedziesz mial x linii kodu

Podobne pytania

0 głosów
1 odpowiedź 353 wizyt
pytanie zadane 14 marca 2020 w C i C++ przez Deny Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 606 wizyt
pytanie zadane 27 kwietnia 2022 w C i C++ przez Mati323 Nowicjusz (210 p.)
0 głosów
2 odpowiedzi 262 wizyt
pytanie zadane 17 kwietnia 2021 w C i C++ przez Viltus Początkujący (300 p.)

92,550 zapytań

141,394 odpowiedzi

319,522 komentarzy

61,935 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!

...