Advertisement
Adijata

Student email

Nov 21st, 2014
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 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( 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[4]= {{"Adijata", "Vukas"}, {"Adela", "Vukas"},{"Aaaa", "Vukas"},{"Bbb", "Vukas"}};
  107.  
  108.     cout << dajEmail(niz, 4 , {"Aaaaa", "Vukas"});
  109.  
  110.     return 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement