• 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?

VPS Starter Arubacloud
0 głosów
481 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ź 484 wizyt
pytanie zadane 14 marca 2020 w C i C++ przez Deny Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 904 wizyt
pytanie zadane 27 kwietnia 2022 w C i C++ przez Mati323 Nowicjusz (210 p.)
0 głosów
2 odpowiedzi 291 wizyt
pytanie zadane 17 kwietnia 2021 w C i C++ przez Viltus Początkujący (300 p.)

93,028 zapytań

141,991 odpowiedzi

321,294 komentarzy

62,375 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...