Facebook
From Small Baboon, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 174
  1. #include <iostream>
  2. #include <cstdlib> //biblitoeka do losowania liczz (nie tylko!!!!! ale w tym przypadku po nic innego :P)
  3. #include <time.h> //biblioteka do czasu
  4. #include <fstream>//biblioteka od operacji na plikach
  5.  
  6. //Mamy posortowany ci¹g liczb ca³kowitych. Zadanie polega na wskazaniu pary elementów tablicy o zadanej sumie x.
  7. // W przypadku, kiedy jest wiêcej ni¿ jedna taka para wystarczy wskazaæ dowoln¹.
  8. // Proszê zbadaæ empirycznie z³o¿onoœæ rozwi¹zania przegl¹daj¹cego wszystkie pary oraz przegl¹daj¹cego ci¹g
  9. // z lewej i prawej strony. Dodatkowo mo¿ecie Pañstwo zaproponowaæ inne, w³asne rozwi¹zania i zbadaæ ich z³o¿onoœæ.
  10. // Proszê te¿ spróbowaæ pokazaæ teoretyczne uzasadnienie osi¹gniêtych wyników.
  11. using namespace std;
  12.  
  13. int main()
  14. {
  15. srand(time(NULL)); //zacznij generowaæ liczby losowe,pobierz liczbe sekund jaka uplynelp od 1970 do momentu wywolania tej linijki
  16. int rozm_tab=10000;
  17. int tab[rozm_tab];
  18. int suma=34;
  19. int pierwsza;
  20. int druga;
  21. int start=0;
  22. int stop=rozm_tab-1;
  23. ofstream myFile;
  24.  
  25. for(int i=0;i<=rozm_tab-1;i++)//wypelniam tablice liczbami parzystymi
  26. {
  27.     tab[i]=i;
  28. }
  29.  
  30. clock_t  t1,t2;                                 //deklaracja zmiennych do liczenia czasu
  31.  
  32.         t1=clock();
  33.  
  34.         for(int i=0;i<rozm_tab;i++)
  35.     {
  36.         druga=suma-tab[i];
  37.         while(start<=stop)
  38.         {
  39.             int k=(start+stop)/2;
  40.                 if (tab[k]<druga)  start=k+1;
  41.                 else if (tab[k]>druga)  start=k-1;
  42.                 else pierwsza=tab[i];
  43.         }
  44.         return 0;
  45.     }
  46.  
  47.         t2=clock();
  48. double time = (((double)t2-(double)t1)/CLOCKS_PER_SEC*(10^9));
  49.  
  50.  myFile.open("zadanie2.csv",ofstream::app | ofstream::out);             //otwarcie/utworzenie pliku z opcja dopisywania na koncu pliku
  51.         myFile<<"Szukana suma;Rozmiar;Pierwsza liczba;Druga liczba;czasn";                              // wpisanie do pliku nazwy kolumn ( ; jest separatorem po ktorym bedziemy pisac w nastepnej kolumnie) n sluzy do przeskoczenia do nastepnego wiersza
  52.         myFile<<suma<<";"<<rozm_tab<<";"<<pierwsza<<";"<<druga<<";"<<time<<"n"; // wpisanie wartosci do pliku csv
  53.         myFile.close();                                                                                                 // zamkniecie pliku i zapisanie go
  54.         return 0;
  55. }