Czy potraficie wyznaczyć błąd w tym programie?
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
int n;
void witaj()
{
cout << "Witaj uzytkowniku!" << endl;
}
void dzielniki(int n)
{
int i;
cout << "1, ";
for(i=2; i<=n/2; i++);
{
if(n%i==0)
cout << i << ", ";
}
cout << n << endl;
}
bool doskonala(int n)
{
int suma=1;
for(int i=2; i<=n/2; i++)
{
if(n%i==0)
suma+=i;
}
if((suma==n)&&(n!=1))
return true;
return false;
}
bool palindromiczna(int n)
{
int cyfra, liczba=n, nowa=0;
while(n>0)
{
cyfra=n%10;
nowa=10*nowa+cyfra;
n/=10;
}
if(nowa==liczba)
return true;
return false;
}
bool pierwsza(int n)
{
bool odp=true;
if(n==1)
return false;
if((n%2==0)&&(n!=2))
return false;
int dzielnik=3;
while((odp=true)&&(dzielnik<=sqrt((float)n)));
{
if(n%dzielnik==0)
return false;
else dzielnik+=2;
}
return true;
}
void czynniki(int n)
{
while(n%2==0)
{
cout << "2, ";
n/=2;
}
int czynnik=3;
while(n>1)
{
while(n%czynnik==0)
{
cout << czynnik << " ";
n/=czynnik;
}
czynnik=czynnik+2;
}
}
void menu ()
{
int x;
while (x!=6)
{
cout<<"Uzytkowniku, wybierz program, ktorego chcesz uzyc:"<<endl;
cout<<"1. Dzielniki liczby."<<endl;
cout<<"2. Czy liczba jest doskonala?"<<endl;
cout<<"3. Czy liczba jest palindromiczna?"<<endl;
cout<<"4. Czy liczba jest pierwsza?"<<endl;
cout<<"5. Rozklad na czynniki pierwsze."<<endl;
cout<<"6. Exit."<<endl;
cin>>x;
if (x==1) dzielniki (n);
if (x==2) doskonala (n);
if (x==3) palindromiczna (n);
if (x==4) pierwsza (n);
if (x==5) czynniki (n);
cout<<endl;
}
}
void zegnaj()
{
cout << "Zegnaj, uzytkowniku!" <<endl;
}
int main(int argc, char *argv[])
{
witaj();
cout << "Wpisz liczbe naturalna: " <<endl;
cin >> n;
menu ();
zegnaj();
cin.sync();
cin.get();
return 0;
system("PAUSE");
return EXIT_SUCCESS;
}