Advertisement
Adijata

binary search

Nov 20th, 2014
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3.  
  4. using namespace std;
  5.  
  6. struct Student
  7. {
  8. string ime, prezime;
  9.  
  10. };
  11.  
  12. int binarnaKraj(Student niz[], int maxGr, int vel, Student novi, int minGr=0)
  13. {
  14. if(minGr>maxGr)
  15. return -1;
  16. else
  17. {
  18.  
  19. if(novi.ime[0] == niz[(minGr+maxGr)/2].ime[0] && novi.prezime == niz[(minGr+maxGr)/2].prezime)
  20. {
  21. if((minGr + maxGr)/2 != vel && niz[((minGr+maxGr)/2)+1].ime[0]== novi.ime[0] && novi.prezime == niz[((minGr+maxGr)/2)+1].prezime)
  22. return binarnaKraj(niz, maxGr+1,vel, novi, minGr);
  23. else
  24. return (minGr+maxGr)/2;
  25. }
  26.  
  27. else if(novi.ime[0] < niz[(minGr+maxGr)/2].ime[0] && novi.prezime==niz[(minGr+maxGr)/2].prezime)
  28. {
  29. return binarnaKraj(niz, (minGr+maxGr)/2-1, vel,novi, minGr);
  30. }
  31.  
  32. else
  33. {
  34. return binarnaKraj(niz, maxGr,vel, novi, (minGr+maxGr)/2+1);
  35. }
  36. }
  37.  
  38. }
  39.  
  40. int binarnaPocetak(Student niz[], int maxGr, Student novi, int minGr=0)
  41. {
  42.  
  43. if(minGr>maxGr)
  44. return -1;
  45.  
  46. else
  47. {
  48. if(novi.ime[0] == niz[(minGr+maxGr)/2].ime[0] && novi.prezime == niz[(minGr+maxGr)/2].prezime)
  49. {
  50. if((minGr + maxGr)/2 != 0 && niz[((minGr+maxGr)/2)-1].ime[0]== novi.ime[0] && novi.prezime == niz[((minGr+maxGr)/2)-1].prezime)
  51.  
  52. return binarnaPocetak(niz, maxGr, novi, minGr-1);
  53. else
  54. return (minGr+maxGr)/2;
  55.  
  56. }
  57.  
  58. else if(novi.ime[0] < niz[(minGr+maxGr)/2].ime[0] && novi.prezime==niz[(minGr+maxGr)/2].prezime)
  59. {
  60. return binarnaPocetak(niz, (minGr+maxGr)/2-1, novi, minGr);
  61. }
  62.  
  63. else
  64. {
  65.  
  66. return binarnaPocetak(niz, maxGr, novi, (minGr+maxGr)/2+1);
  67. }
  68. }
  69.  
  70. }
  71.  
  72. std::string PrebaciUString(int N) {
  73. std::ostringstream tok;
  74.  
  75. tok << N;
  76.  
  77. return tok.str();
  78. }
  79.  
  80. string dajEmail(Student studenti[], int brojStudenata, Student novi)
  81. {
  82. int ind1= binarnaKraj(studenti, brojStudenata, brojStudenata, novi);
  83. int ind2= binarnaPocetak(studenti, brojStudenata, novi);
  84. int broj=ind1-ind2+1;
  85. if(ind2==0)
  86. broj++;
  87.  
  88.  
  89. cout << ind1 << ind2;
  90.  
  91.  
  92. char s1=novi.ime[0];
  93. string s2=novi.prezime;
  94.  
  95. string s3 = PrebaciUString(broj);
  96.  
  97. string s="";
  98. s+=s1;
  99. s+=s2;
  100. s+=s3;
  101. return s;
  102. }
  103.  
  104. int main()
  105. {
  106. Student niz[3]= {{"Ae", "aaa"}, {"Adela", "Vukas"},{"Adijata", "Vukas"}};
  107.  
  108. cout << dajEmail(niz, 3 , {"Amela", "Vukas"});
  109.  
  110. return 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement