[C++] Drzewo kodowane jako liczba pierwsza


(Tmichael) #1

Witam.

Operuję na Windowsie Vista

Korzystam z Dev-C++ wersja 4.9.9.2

Język programowania: C++

Piszę program, który ma za zadanie narysować drzewo jako liczbę naturalną. Treść zadania znajduje się pod adresem: http://atos.wmid.amu.edu.pl/~rmiw/PPR11 ... ka/31.html

Jednakże utknąłem w martwym punkcie. Muszę (prawdopodobnie) do kodu dopisać funkcję, która oblicza liczbę naturalną oraz jej kolejność (na zasadzie, że 2 jest pierwszą liczbą pierwszą; 3 jest drugą liczbą pierwszą; 37 jest dwunastą liczbą pierwszą itd. - rysunek Wyjście w treści zadania).

#include 

#include 

#include 

#include 


using namespace std;


int main()

{

    int tab[100];

    int a=0;

    int i, j;


    for(i=0; i<=65535; i++)

    {

        if (i==2) cout<
        for (int j=2;j<=ceil(sqrt(i));j++) 

        {

            if ((i%j)==0) break;

            if (j==ceil(sqrt(i))) cout<
        }

    }


              i = ;



        cout << "Wprowadz kolejne liczby Goedela: \n";



    do

         {

             cin>> tab[a];


             if((tab[a] <= 65535) && (tab[a] >= 0))a++;


             else

                  cout << "Blad. Wybierz inny zestaw liczb. \n";


         }

             while(tab[a-1]!=0);





            getch();

    system("PAUSE");

    return 0;

}

[/code]

Pozdrawiam.


(etam) #2

Ja bym to zrobił w ten sposób:

1) Napisać program wykorzystujący Sito Eratostenesa, który wypisałby na wyjście

int pierwsze[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};

Oczywiście powinien ich wypisać więcej, więc musisz przewidzieć ile Ci ich potrzeba. 2) wkleić wynik działania poprzedniego programu do tego co napisałeś. I dalej już jest prosto: pierwsze[1] daje 2, pierwsze[12] daje 37. Poza tym: 1)

for(i=0; i<=65535; i++)

To jest jakieś straszne zło. Zamień to na while.

2) W specyfikacji wejścia masz napisane

Twój program nie musi tego sprawdzać.

3) Jeżeli już masz system("PAUSE"), to wywal #include i getch().