Bardzo proszę o wytłumaczenie tego kodu

0

Znajomy naskrobał mi program na zaliczenie z informatyki, tylko że nie mogę go rozszyfrować.
Wiem że wyznacza x par liczb bliźniaczych, ale na tym moja wiedza się kończy.
I tu zaczyna się moja prośba: Mógłby ktoś mi linijka po linijce wytłumaczyć co się dzieje w tym programie? Bardzo bym był wdzięczny :)

#include <cstdlib>
#include <iostream>

using namespace std;
const int rozmiar=32000;
int tab[rozmiar];
int j;
int g=31999;
int tab2[rozmiar];


void sito(int tab[])
{
   for(int i=2;i<=g;i++)
   tab[i]=true;
     
      for(int i=2;i<=g;i++)
      {   
          j=i+i;
          while(j<=g)
          {
           tab[j]=false;
           j=j+i;         
          }
       }
     
     
}
void blizniacze(int tab[],int zak)
{
     int index=1;
     sito(tab); 
     int k=0;
     for(int i=2;i<=g;i++){
         if(tab[i]!=0){
         tab2[k]=i;
         k++;
         }
     }  
     for(int k=0;k<=g;++k){
       if(tab2[k+1]-tab2[k]==2){ 
         cout<<index<<" para liczb: "<<tab2[k]<<" i "<<tab2[k+1]<<" jest para blizniacza"<<endl;
         if(index!=zak) index++;
         else
           return;
       }
     }
}



int main(int argc, char *argv[])
{
    int ile;
    cout<<"ile par liczb bliźniaczych chcesz wyświetlic z zakresu 0-400: "<<endl;
    cin>>ile;
    if(ile>400) 
      cout<<"za duzy zakres"<<endl;
    else
      blizniacze(tab,ile);
   
    system("PAUSE");
    return EXIT_SUCCESS;
}
0

Postaram się wytłumaczyć :)

#include <cstdlib>//2 biblioteki iostream opd cout i cin a druga nie wiem po co w tym programie 
#include <iostream>

using namespace std;//przestrzeń nazw std abyś nie musiał pisać std::cout i std::cin itp
const int rozmiar=32000;//stała o rozmiarze pewnym
int tab[rozmiar];//derklaracja tablicy o podanym rozmiarze
int j;//jakaś zmienna pomocnicza
int g=31999;//jakaś liczba g
int tab2[rozmiar];//2 tablica


void sito(int tab[])//funkcja sito domyslam się ,że jest to Sito Eratostenesa poczytaj sobie w necie nei chce mi się tłumaczyć
{//i bez sensu do funkcji jest podawana tablica skoro jest zadeklarowana globaqlnie
   for(int i=2;i<=g;i++)
   tab[i]=true;
     
      for(int i=2;i<=g;i++)
      {   
          j=i+i;
          while(j<=g)
          {
           tab[j]=false;
           j=j+i;         
          }
       }
     
     
}
void blizniacze(int tab[],int zak)//funkcja znajdująca liczby bliźniacze nasza zmienna zak przyjmuje wartośc ile w tym przypadku jest to licznik ile ma być liczb bliźniaczych
{
     int index=1;
     sito(tab);//wywołanie sita aby znaleść liczby pierwsze w danyym zakresie
     int k=0;
     for(int i=2;i<=g;i++){//tu raczej nei ma co tłumaczyć są to pętle i operacje matematyczne aby sprawdzić czy to liczba bliźniacza
         if(tab[i]!=0){
         tab2[k]=i;
         k++;
         }
     } 
     for(int k=0;k<=g;++k){
       if(tab2[k+1]-tab2[k]==2){//sprawdzenie czy liczby są bliźniacze?
         cout<<index<<" para liczb: "<<tab2[k]<<" i "<<tab2[k+1]<<" jest para blizniacza"<<endl;//wyświetlenie par liczb bliźniaczych
         if(index!=zak) index++;
         else
           return;
       }
     }
}



int main(int argc, char *argv[])//główna funkcja main 
{
    int ile;
    cout<<"ile par liczb bliźniaczych chcesz wyświetlic z zakresu 0-400: "<<endl;//wyswietla na ekranie podfany napis
    cin>>ile;//wczytuje ze standardowego wejścia zmienną ile
    if(ile>400)//sprawdzamy czy użytkownik z nami współpracuje
      cout<<"za duzy zakres"<<endl;
    else//w przeciwnym wypadku
      blizniacze(tab,ile);//liczy nam liczby bliźniacze
   
    system("PAUSE");//w windowsie wywoła to Wyskoczenia komunikatu o wciśniecie dowolnego klawisza 
    return EXIT_SUCCESS;//zwrócenie wartości do systemu ,że program zakończył się sukcesem
}

Jak coś gdzieś się chapnąłem to sry szybko pisałem

0

Dzięki :*

1 użytkowników online, w tym zalogowanych: 0, gości: 1