Twoje ify w mainie używają dwóch komend, powinieneś ująć odpowiednie cout i exit w klamerki.
EDIT: dostałem minusika, co mnie zasmutkowało, więc trochę bardziej postaram się z odpowiedzią.
Prze-edytowałem Twój program, żeby robił to co w "przepisie", ale jest troszkę poprawniej (zarówno składniowo, jak i logicznie). Starałem się wszystko mocno o-komentować, spróbuj to przeanalizować. Mam nadzieję, że wskazówki okażą się pomocne i wyciągniesz z nich jakieś wnioski :)
#include <iostream>
#include <cstdlib>
using namespace std;
bool czy_pierwsza(int n)
{
if(n < 2)
return false;
for(int i = 2; i*i <= n; i++)
if(n % i == 0)
return false;
return true;
}
int silnia(int n)
{
if(n == 0) // tu musi byc zero, bo jezeli uzytkownik poda 0, to wynik nie bedzie poprawny (silnia z zera to 1); niektorzy uwazaja zero za liczbe naturalna, tak swoja droga :)
return 1;
else
return n * silnia(n - 1); // rekurencyjnie
}
int suma(int n)
{
int sum = 0;
for(int s = n - 1; s > 0 ; s--) // bardziej klarownie, jezeli policzymy "od tylu", ale to juz kwestia gustu
sum += s;
// drobna uwaga: mozemy to tez krotko (bez pomocy petli) policzyc przy uzyciu wzoru na ciag arytmetyczny (poziom szkoly sredniej)
return sum; // zwracamy sume
}
int NWD1024(int n) // tutaj nie potrzeba wiele komentarza
{
int a = n, b = 1024;
while(a != b)
if(a > b)
a -= b; // a = a - b
else
b -= a; // b = b - a
return a;
}
int main()
{
int n;
cout << "Podaj liczbe naturalna: " << endl;
cin >> n;
if(n <= 0) // robimy program "user-proof" - nie chcemy operowac na niepoprawnych danych :)
cout << "nie podales liczby naturalnej, nie wiem co z tym zrobic :/" << endl;
else if( czy_pierwsza(n) )
cout << "Liczba " << n << " jest pierwsza" << endl; // tutaj jedna komenda "pod" if-em, wiec nie musimy uzywac klamerek
else if( n % 2 == 0 )
// nie robimy dodatkowego warunku, czy liczba jest rozna od 2 -> sprawdza to warunek if( czy_pierwsza(n) )
// (2 jest liczba pierwsza, wiec gdy n=2 zostanie wykonane to co pod wspomnianym warunkiem, to co ponizej - nie)
{ // tutaj juz sa trzy komendy "pod" if-em, wiec musimy uzyc klamerek
int liczba = NWD1024(n); // liczymy najwiekszy wspolny dzielnik
cout << "Najwiekszy wspolny dzielnik liczb " << n << " i 1024 to: " << liczba << endl;
cout << "Silnia tej liczby wynosi " << silnia(liczba)<< endl; // liczymy silnie z NWD(n, 1024)
}
else
cout << "Suma wszystkich liczb mniejszych od " << n <<" = " << suma(n) <<endl;
// no i po kazdym sprawdzonym warunku nie dodawaj exit(0)
// po co konczyc program, skoro chcemy zobaczyc, co nam wyswietli? :)
system("PAUSE");
return 0;
}
(tutaj jest to samo)