Advertisement
Norby9

Untitled

Mar 14th, 2020
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. #include <string>
  4.  
  5. #include <fstream>
  6.  
  7. #include <vector>
  8.  
  9. #include <cstring>
  10.  
  11. using namespace std;
  12.  
  13. ifstream fin("date.in");
  14.  
  15. vector<string> vectorCuv;
  16.  
  17. string sir, vowels = "aeiouAEIOU";
  18.  
  19. int numOfVowels(string one) {
  20. int nrVoc = 0;
  21. for(int i = 0; i < one.size(); ++i) {
  22. if(vowels.find(one[i]) != -1) { //aflu cate vocale are fiecare cuvant
  23. ++nrVoc;
  24. }
  25. }
  26. return nrVoc;
  27. }
  28.  
  29. void read() {
  30. while (fin >> sir) {
  31. vectorCuv.push_back(sir); //creez vectorul de cuvinte
  32. }
  33. }
  34.  
  35. void sortAfterVowels(vector<string> vectorCuv) {
  36. for(int i = 0; i < vectorCuv.size() - 1; ++i) {
  37. for(int j = i + 1; j < vectorCuv.size(); ++j) { //sortarea cu 2 for-uri
  38. if(numOfVowels(vectorCuv[i]) > numOfVowels(vectorCuv[j])) { //nrVoc pt (exemplu) anabela si ana este 4 si 2 deci trebuie interschimbate
  39. swap(vectorCuv[i], vectorCuv[j]);
  40. } else if(numOfVowels(vectorCuv[i]) == numOfVowels(vectorCuv[j])) { //daca au acelas nr de voc verific lexicografic
  41. for(int d = 0; d < vectorCuv[i].size(); ++d) {
  42. if(vectorCuv[i][d] > vectorCuv[j][d]) {
  43. swap(vectorCuv[i], vectorCuv[j]);
  44. break;
  45. } else if(vectorCuv[i][d] < vectorCuv[j][d]) {
  46. break;
  47. }
  48. }
  49. }
  50. }
  51. }
  52. }
  53.  
  54. void print() {
  55. for (int i = 0; i < vectorCuv.size(); ++i) { //afisez
  56. cout << vectorCuv[i] << '\n';
  57. }
  58. }
  59.  
  60. int main(void) {
  61. read();
  62. sortAfterVowels(vectorCuv);
  63. print();
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement