j4ggi

Sito eratostenesa

Sep 26th, 2013
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <fstream>
  4. #include <windows.h>
  5. #include <sys/time.h>
  6. using namespace std;
  7.  
  8. void fileOut(string, bool*, long long);
  9. void consoleOut(bool*, long long);
  10. void p(char, short = 0, short = 0, bool = true);
  11. void color(short=0);
  12.  
  13. int main()
  14. {
  15.     color();
  16.     cout<<"Do jakiej liczby mam szukac liczb pierwszych?\n";
  17.     long long a, mem;
  18.     MEMORYSTATUSEX memory;
  19.     memory.dwLength=sizeof(memory);
  20.     GlobalMemoryStatusEx(&memory);
  21.     mem=memory.ullAvailPhys;
  22.     do{
  23.         cin>>a;
  24.         if(a>(mem - 100*1024*1024))
  25.         {
  26.             color(1);
  27.             cout<<"Zostaw te 100MB wolnego RAMu...\nPodaj liczbe nie wieksza niz "<<mem -(100*1024*1024)<<"\n";
  28.             color();
  29.         }
  30.     }while(a>(mem -100*1024*1024));
  31.     cout<<"\nGdzie mam wypisac wynik?\n1 - w konsoli\n2 - do pliku *.txt\n3 - do pliku i w konsoli\n";
  32.     int wybor;
  33.     cin>>wybor;
  34.     string name;
  35.     if(wybor==2 || wybor==3)
  36.     {
  37.         cout<<"Podaj nazwe pliku (bez rozszerzenia).\n";
  38.         color(1);
  39.         cout<<"-->Uwaga! Jezeli plik o podanej nazwie juz istnieje zostanie nadpisany i stracisz dane!<--\n";
  40.         color(0);
  41.         cin>>name;
  42.         name+=".txt";
  43.         cout<<endl;
  44.     }
  45.     p('t', 6, 0, false);
  46.     bool* tab=new bool[a];
  47.     for(long long i=0;i<a;i++)
  48.             tab[i]=true;
  49.     p('t');
  50.     p('l', 2, 0, false);
  51.     for(long long i=2;i*i<a;i++)
  52.     {
  53.         if(!tab[i])
  54.                   continue;
  55.         for(long long j=2*i;j<a;j+=i)
  56.                 tab[j]=false;
  57.     }
  58.     p('l');
  59.     switch(wybor)
  60.     {
  61.         case 1: p('p', 5, 4, false); consoleOut(tab, a); p('p'); break;
  62.         case 2: p('p', 5, 0, false); fileOut(name, tab, a); p('p'); break;
  63.         case 3:
  64.         default: p('p', 5, 4, false); fileOut(name, tab, a); consoleOut(tab, a); p('p');
  65.     }
  66.     p('u', 6, 0, false);
  67.     delete[] tab;
  68.     cout<<"\nSkonczylem\nNacisnij dowolny klawisz aby zakonczyc dzialanie programu";
  69.     getch();
  70.     return 0;
  71. }
  72.  
  73. void fileOut(string name, bool* tab, long long size)
  74. {
  75.     fstream file(name.c_str());
  76.     file.open(name.c_str(), ios::out | ios::app);  
  77.     for(long long i=2;i<size;i++)
  78.             if(tab[i])
  79.                       file<<i<<"\n";
  80.     file.close();
  81. }
  82.  
  83. void consoleOut(bool* tab, long long size)
  84. {      
  85.     for(long long i=2;i<size;i++)
  86.             if(tab[i])
  87.                        cout<<i<<"\t";
  88.     cout<<endl;
  89. }
  90.  
  91. void p(char a, short l1, short l2, bool x)
  92. {
  93.     string napis;
  94.     switch(a)
  95.     {
  96.         case 'l':napis="Licze...\n";break;
  97.         case 'p':napis="Pisze...\n";break;
  98.         case 't':napis="Przygotowuje tablice...\n";break;
  99.         case 'u':napis="Usuwam tablice...\n";break;
  100.     }
  101.     timeval czas;
  102.     static double dTime1, dTime2;
  103.     if(!x)
  104.     {
  105.         color(l1);
  106.         cout<<napis;
  107.         color(l2);
  108.         gettimeofday(&czas, NULL);
  109.         dTime1 = czas.tv_sec+(czas.tv_usec/1000000.0);
  110.     }
  111.     if(x)
  112.     {      
  113.             color();
  114.             cout<<"Zajelo mi to ";
  115.             color(1);
  116.             gettimeofday(&czas, NULL);
  117.             dTime2 = czas.tv_sec+(czas.tv_usec/1000000.0);
  118.             cout<<dTime2-dTime1<<" sekund[e/y]\n"; 
  119.     }
  120. }
  121.  
  122. void color(short color)
  123. {
  124.     HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
  125.     switch(color)
  126.     {
  127.         case -6: SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_BLUE);break;
  128.         case -5: SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_BLUE);break;
  129.         case -4: SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_GREEN);break;
  130.         case -3: SetConsoleTextAttribute(handle, FOREGROUND_BLUE);break;
  131.         case -2: SetConsoleTextAttribute(handle, FOREGROUND_GREEN);break;
  132.         case -1: SetConsoleTextAttribute(handle, FOREGROUND_RED);break;
  133.         case 0: SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);break;
  134.         case 1: SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);break;
  135.         case 2: SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_GREEN);break;
  136.         case 3: SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_BLUE);break;
  137.         case 4: SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);break;
  138.         case 5: SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE);break;
  139.         case 6: SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE);break;
  140.         default: SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
  141.     }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment