Nie działa cin

0

Jeśli zakomentuje 4 linijki z cout,cin na temat dolnej i gónej granicy oraz sam napisze w kodzie ile te granice mają wynosci wszystko działa, ktoś wie dlaczego tak jest?
int lower_range = 3;
int upper_range = 11;
// cout << "Enter the lower range" << endl;
// cin >> lower_range;
// cout << "Enter the upper range" << endl;
// cin >> upper_range;
Wtedy kod działa, nie ma zadnego problemu. A jak jest tak jak poniżej, program się nie wykonuje.

#include <iostream>
#include <math.h>

using namespace std;

bool is_prime(int number)
{

   for(int i = 2; i <= sqrt(number); i++ )
   {

       if(number%i==0)
       {
           return false;
       }
    }
   return true;
}

int main()
{
    int lower_range;
    int upper_range;
    cout << "Enter the lower range" << endl;
    cin >> lower_range;
    cout << "Enter the upper range" << endl;
    cin >> upper_range;
    int prime_or_not_prime=13;

    for(int x = lower_range; x <= upper_range; x++)
    {
         prime_or_not_prime = x;
         if(is_prime(prime_or_not_prime))
         {
           cout << prime_or_not_prime << " is prime" << endl;
         }
         else
         {
           cout << prime_or_not_prime << " not prime" << endl;
         }
     }

     return 0;
}
1

Napisz może co ci nie działa bo jak sobie odpaliłem to wydaje się działać zgodnie z oczekiwaniem. Podaję 2 liczby które tworzą zakres i wypisują się informacje czy dana liczba jest liczbą pierwszą.
Twoje 'nie działa cin' kompletnie nic nie mówi.

0

Odpalam run, wyskakuje mi konsola żebym podał dolny i górny zakres. Wpisuje i program nie daje wyników

Pokazuje się tylko takie coś w komunikatach aplikacji
0006: Starting C:\Users\MICRON PRO\Documents\build-Laby3_inf-Desktop_Qt_6_0_1_MinGW_64_bit-Debug\debug\Laby3_inf.exe ...
Enter the lower range

0

Program się nie konczy i jeśli kliknę zakończ, wyskakuje

0053: The program has unexpectedly finished.
0053: Wymuszono zakończenie procesu.
0053: C:\Users\MICRON PRO\Documents\build-Laby3_inf-Desktop_Qt_6_0_1_MinGW_64_bit-Debug\debug\Laby3_inf.exe przerwał pracę.

Jak próbuje jeszcze raz skompilować porgram, konsola już się nie pokazuje. Muszę wyłączyc i wyłączyc program.

1

Czemu tak lubicie rozmazywać jednolinijkowe funkcje na pół ekranu?

bool is_prime(int number)
{
   for(int i=2;i*i<=number;++i) if(!(number%i)) return false;
   return true;
}
    for(int x=lower_range;x<=upper_range;++x)
    {
        cout<<x<<" is "<<(is_prime(prime_or_not_prime)?"":" not ")<<"prime"<<endl;
    }
0

@Lukasz Pawłowski: Nie wiem czym kompilujesz i jak uruchamiasz, ale na Ubuntu i g++ 9.3.0 działa, z jednym wyjątkiem, Masz buga w is_prime, zwraca true dla 1.

1

To brzmi raczej jak coś związanego z tym gdzie to uruchamiasz. Czego używasz do kompilacji/uruchpmienia?

0
Lukasz Pawłowski napisał(a):

Jeśli zakomentuje 4 linijki z cout,cin na temat dolnej i gónej granicy oraz sam napisze w kodzie ile te granice mają wynosci wszystko działa, ktoś wie dlaczego tak jest?

int lower_range = 3;
int upper_range = 11;

// cout << "Enter the lower range" << endl;
// cin >> lower_range;
// cout << "Enter the upper range" << endl;
// cin >> upper_range;
Wtedy kod działa, nie ma zadnego problemu. A jak jest tak jak poniżej, program się nie wykonuje.

Wygląda na to, że działa: https://godbolt.org/z/55G6EP

Najwyraźniej wpisałeś dane z błedem, który powoduje, że nie można wczytać tego jako typ całkowity i cin przeszedł w stan błędu.

Względnie sposób uruchomienia aplikacji powoduje, że standardowe wejście nie jest połączone z konsolą, więc nie masz możliwości wpisania danych ręcznie.

Jakiego IDE używasz, wersja kompilatora?
Z tego co pamiętam, to przez lata był jakiś problem w gdb przez co standardowe wejście debugowanej aplikacji nie było podłączone do konsoli.

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