Advertisement
karanjthakkar

Beautiful String

Jan 26th, 2013
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.27 KB | None | 0 0
  1. #include<iostream>
  2. #include<fstream>
  3. #include<cstdlib>
  4. #include<cstring>
  5.  
  6. using namespace std;
  7.  
  8. void insertionSort(int (&numbers)[26], int array_size)
  9. {
  10.     int i, j;
  11.     int index;
  12.     for(i=0;i<array_size;i++)
  13.     {
  14.         index = numbers[i];
  15.         j = i;
  16.         while((j>=0)&&(numbers[j-1]>index))
  17.         {
  18.             numbers[j]=numbers[j-1];
  19.             j--;
  20.         }
  21.         numbers[j] = index;
  22.     }
  23. }
  24.  
  25. int main()
  26. {
  27.     fstream file;
  28.     int temp;
  29.     string line;
  30.     int caseNo = 1;
  31.     file.open("input.txt");
  32.     getline(file, line);
  33.     temp = atoi(line.c_str());
  34.     if(temp>=5 && temp<=50)
  35.     {
  36.     for (int i = 0 ; i < temp ; i++)
  37.     {
  38.         long double beauty = 0;
  39.         int count[26] = {0};
  40.         int constant = 26;
  41.         getline(file, line);
  42.         if(line.length()>=2 && line.length() <= 500)
  43.         {
  44.             for(int i = 0 ; i < line.length(); i++)
  45.             {
  46.                 if (!isalpha(line[i]))
  47.                 {
  48.                     line.erase(i,1);
  49.                     i--;
  50.                 }
  51.             }
  52.             for(int i = 0 ; i <= line.length() ; i++)
  53.             {
  54.                 line[i]=tolower(line[i]);
  55.             }  
  56.             for(int i = 0 ; i < line.length() ; i++)
  57.             {
  58.                 switch(line[i])
  59.                 {
  60.                     case 'a': count[0] += 1;break;
  61.                     case 'b': count[1] += 1;break;
  62.                     case 'c': count[2] += 1;break;
  63.                     case 'd': count[3] += 1;break;
  64.                     case 'e': count[4] += 1;break;
  65.                     case 'f': count[5] += 1;break;
  66.                     case 'g': count[6] += 1;break;
  67.                     case 'h': count[7] += 1;break;
  68.                     case 'i': count[8] += 1;break;
  69.                     case 'j': count[9] += 1;break;
  70.                     case 'k': count[10] += 1;break;
  71.                     case 'l': count[11] += 1;break;
  72.                     case 'm': count[12] += 1;break;
  73.                     case 'n': count[13] += 1;break;
  74.                     case 'o': count[14] += 1;break;
  75.                     case 'p': count[15] += 1;break;
  76.                     case 'q': count[16] += 1;break;
  77.                     case 'r': count[17] += 1;break;
  78.                     case 's': count[18] += 1;break;
  79.                     case 't': count[19] += 1;break;
  80.                     case 'u': count[20] += 1;break;
  81.                     case 'v': count[21] += 1;break;
  82.                     case 'w': count[22] += 1;break;
  83.                     case 'x': count[23] += 1;break;
  84.                     case 'y': count[24] += 1;break;
  85.                     case 'z': count[25] += 1;break;
  86.                 }
  87.             }
  88.             insertionSort(count, 26);
  89.             for (int i=0;i<=25;i++) cout << count[i] << endl;
  90.             for(int j=25;count[j]!=0;j--)
  91.             {
  92.                 beauty=beauty+count[j]*constant;
  93.                 constant--;
  94.             }
  95.             cout << "Case #"<< caseNo << ": " <<beauty << endl;    
  96.             caseNo++;
  97.         }
  98.     }
  99.     }
  100.     return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement