Program losujący liczby - problem.

0

Witam :)
Od niedawna uczę się programowania i to mój pierwszy post na forum.

Podczas wywoływania funkcji w programie do zgadywanie liczb program sie zawiesza.

#include <iostream>
#include <cstdlib>
#include <ctime>

   int selectedNumb = -1;

int przedzial()
{
    bool correctNumb;

    do
    {


    while ((selectedNumb < 0) || (selectedNumb > 1000))
        {
        std::cout << "Wprowadz liczbe od 1 do 1000" << std::endl;
            std::cin >> selectedNumb;
            bool correctNumb = false;
            if ((selectedNumb < 0) || (selectedNumb > 1000))
            {
            std::cout << "Liczba z poza przedzialu" << std::endl;
        }
        }
    }
    while (correctNumb != true);
    std::cout << "dobrze";
}
int main()
{
    std::cout << "Witaj w programie" << std::endl;
      srand( time( NULL ) );
    int randomNumb =( rand() % 1000 ) + 1;
    int shootNumb = 0;

 
 
  //?????????????????????????????????????????????????????
    
    std::cout << shootNumb;
     przedzial();
    std::cout << randomNumb;

    //?????????????????????????????????????????????????????

    return 0;



w takiej postaci ten fragmentu programu działa natomiast gdy zamienie polecenia miejscami

przedzial();
    std::cout << shootNumb;
    std::cout << randomNumb;

lub usune cout'y to program sie zawiesza.

Zastanawia mnie co powoduje ten bład.

Z góry dziekuje za pomoc i pozdrawiam :)

0

Co to jest?while (correctNumb != true);. Jak się ma nie wieszać, jak Masz nieskończoną pętlę (od czasu do czasu, pewnie).

0
#include <iostream>
#include <cstdlib>
#include <ctime>

   int selectedNumb = -1;

int przedzial()
{
    bool correctNumb;

    do
    {


    while ((selectedNumb < 0) || (selectedNumb > 1000))
        {
        std::cout << "Wprowadz liczbe od 1 do 1000" << std::endl;
            std::cin >> selectedNumb;
            bool correctNumb = false;
            if ((selectedNumb < 0) || (selectedNumb > 1000))
            {
            std::cout << "Liczba z poza przedzialu" << std::endl;
        }
        }
    }
    while (correctNumb == false);
    std::cout << "dobrze";
}
int main()
{

    przedzial();
}

W takiej postaci program sie nie wiesza. Dopiero gdy chce cos dodac, nawet nie zwiazanego z ta funkcja to sie zacina.

0
 int przedzial()
 {
     bool correctNumb;  //correctNumb nr 1, losowa wartość
 
     do
     {
 
 
     while ((selectedNumb < 0) || (selectedNumb > 1000))
         {
         std::cout << "Wprowadz liczbe od 1 do 1000" << std::endl;
             std::cin >> selectedNumb;
             bool correctNumb = false;  //correctNumb nr 2, inny niż correctNumb nr 1
             if ((selectedNumb < 0) || (selectedNumb > 1000))
             {
             std::cout << "Liczba z poza przedzialu" << std::endl;
              //tu correctNumb nr 2 znika
         }
         }
     }
     while (correctNumb == false);  //tu testujesz correctNumb nr 1
     std::cout << "dobrze";
 }

1 użytkowników online, w tym zalogowanych: 0, gości: 1