Hej, kolejny problem:
Następujący kod:
bool LiczbaPierwsza(unsigned uLiczba)
{
if (uLiczba == 2) return true;
for (unsigned i = 2; i <= sqrt(uLiczba); ++i)
{
if (uLiczba % i == 0)
return false;
}
return true;
}
void main()
{
unsigned uWartosc;
std::cout << "Podaj liczbe: ";
std::cin >> uWartosc;
if (LiczbaPierwsza(uWartosc))
std::cout << "Liczba " << uWartosc << " jest pierwsza.";
else
std::cout << "Liczba " << uWartosc<< " nie jest pierwsza.";
getch();
}
Należy zamienić warunek if-else operatorem warunkowym "?" Wymociłem coś takiego, ale nie działa, nie chce się skompilować:
bool LiczbaPierwsza(unsigned uLiczba)
{
if (uLiczba == 2) return true;
double sqrt (double uLiczba;
for (unsigned i = 2; i <= sqrt(uLiczba); ++i)
{
if (uLiczba % i == 0)
return false;
}
return true;
}
void main()
{
unsigned uWartosc;
std::cout << "Podaj liczbe: ";
std::cin >> uWartosc;
return (LiczbaPierwsza(uWartosc) ? std::cout << "Liczba " << uWartosc << " jest pierwsza." : std::cout << "Liczba " << uWartosc<< " nie jest pierwsza." );
getch();
}
Bardzo bym prosił o łopatologiczne wytłumaczenie i opisanie błędów. Nie wiem jak zmusić main do zwrócenia któregoś z tekstów oraz co jest z tym pierwiastkiem, za każdym razem każe mi najpierw całą funkcję sqrt definiować, zanim mogę z niego skorzystać. Korzystam z Visuala 2008