Prześledź działanie algorytmu. Dla wartości 200 warunek w pierwszym If jest spełniony. Nastepnie sprawdzany jest warunek drugiego IF. 200 < 10000 dlatego wykonuje sie ELSE drugiego IF. Jeżeli nie chcesz aby drugi IF się wykonał, gdy pierwszy warunek jest spełniony przed drugim IF dodaj słowo ELSE czyli ELSE IF.
case 1:
std::cout << "Wprowadz czestotliwosc dzwieku w granicach 300 - 10 000";
std::cout << "Dźwięki poniżej lub powyżej granicy częstotliwości są trudne do usłyszenia.";
while(true)
{
int Czestotliwosc;
std::cin >> Czestotliwosc;
if (Czestotliwosc < 300)
{
std::cout << "Za mala czestotliwosc!" << Czestotliwosc << "< 300" << std::endl;
}
else if (Czestotliwosc > 10000)
{
std::cout << "Za duza czestotliwosc!" << Czestotliwosc << "> 10 000" << std::endl;
}
else
{
Beep(Czestotliwosc,1000);
}
}
break;
Przekręciłeś licznik. int w większości implementacji mieści liczby od −2,147,483,648 to 2,147,483,647, większe będą obcięte (sobie po pobraniu częstotliwości std::cout << Czestotliwosc << std::endl;) to zobaczysz, jak on zinterpretował to, co mu podałeś. Głośniczka raczej nie uszkodzisz, chyba że ze wściekłości go wyrwiesz.
OK. Na razie ukończyłem 1 opcję programu i mnie przystopowało przy robieniu drugiej… Coś te losowanie nie jest za ciekawe… Mała jest różnica pomiędzy kolejnymi losowaniami…
case 2: //losowe dźwięki
{
while(true) //nieskonczone powtarzanie
{
srand ((int) time(NULL));
int nWylosowana = 300+rand()%1000; //przedział 300 - 1300
std::cout << nWylosowana << std::endl; //sprawdzanie jaka liczba została wylosowana
Beep(nWylosowana,1000); //dźwięk
}
}
break;
Co zrobić, by jakieś “ciekawsze” wartości losowało? Co zmienić?