Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstring>
  4. #include <sstream>
  5.  
  6. using namespace std;
  7.  
  8. struct Cat {
  9.     char name[20];
  10.     char breed[20];
  11.     int age;
  12.     double weight;
  13. };
  14.  
  15. const int CATS_ARRAY_SIZE = 8;
  16. Cat *setCats(string fileName, Cat catsArray[]);
  17. void displayCat(Cat cat);
  18. void displayCats(Cat catsArray[]);
  19. void displayCatsByBreed(Cat catsArray[], char breedName[]);
  20. Cat *bubbleSort(Cat catsArray[]);
  21.  
  22. int main() {
  23.     Cat catsArray[CATS_ARRAY_SIZE];
  24.     setCats("/home/zahu/CLionProjects/untitled/kotki.txt", catsArray);
  25.     // 1.
  26.     displayCats(catsArray);
  27.     // 2.
  28.     char breedName[20];
  29.     cin >> breedName;
  30.     displayCatsByBreed(catsArray, breedName);
  31.     // 3.
  32.     cout << "Bubble sort" << "\n";
  33.     bubbleSort(catsArray);
  34.     displayCats(catsArray);
  35.     // finish
  36.     return 0;
  37. }
  38.  
  39. Cat *setCats(string fileName, Cat catsArray[]) {
  40.     string line;
  41.     int iterator = 0;
  42.     ifstream file(fileName);
  43.     if (file.is_open()) {
  44.         while (getline(file, line)) {
  45.             stringstream ss(line);
  46.             string token;
  47.             int tokenIterator = 0;
  48.  
  49.             while(getline(ss, token, ';')) {
  50.                 switch (tokenIterator % 4) {
  51.                     case 0: strcpy(catsArray[iterator].name, token.c_str()); break;
  52.                     case 1: strcpy(catsArray[iterator].breed, token.erase(0,1).c_str()); break;
  53.                     case 2: catsArray[iterator].age = stoi(token); break;
  54.                     case 3: catsArray[iterator].weight = stod(token); break;
  55.                     default: break;
  56.                 }
  57.                 tokenIterator++;
  58.             }
  59.             iterator++;
  60.         }
  61.         file.close();
  62.     } else cout << "Unable to open file";
  63.     return catsArray;
  64. }
  65.  
  66. void displayCat(Cat cat) {
  67.     cout << "    Name: " << cat.name;
  68.     cout << ", Breed: " << cat.breed;
  69.     cout << ", Age: " << cat.age;
  70.     cout << ", Weight: " << cat.weight << "\n";
  71. }
  72.  
  73. void displayCats(Cat catsArray[]) {
  74.     for (int i = 0; i < CATS_ARRAY_SIZE; ++i) {
  75.         cout << "Cat number " << i+1 << ":\n";
  76.         displayCat(catsArray[i]);
  77.     }
  78. }
  79.  
  80. void displayCatsByBreed(Cat catsArray[], char breedName[]) {
  81.     cout << "Cats with breed " << breedName << ":\n";
  82.     for (int i = 0; i < CATS_ARRAY_SIZE; ++i) {
  83.         if (strcmp(catsArray[i].breed, breedName) == 0) {
  84.             displayCat(catsArray[i]);
  85.         }
  86.     }
  87. }
  88.  
  89. Cat *bubbleSort(Cat catsArray[]) {
  90.     Cat temp;
  91.     for (int i = 1; i < CATS_ARRAY_SIZE; i++) {
  92.         for (int j = 0; j < CATS_ARRAY_SIZE - i; j++) {
  93.             string breed1 = catsArray[j].breed;
  94.             string breed2 = catsArray[j + 1].breed;
  95.             int value = breed1.compare(breed2);
  96.             cout << value;
  97.             if (breed1.compare(breed2) > 0) {
  98.                 temp = catsArray[j];
  99.                 catsArray[j] = catsArray[j + 1];
  100.                 catsArray[j + 1] = temp;
  101.             }
  102.         }
  103.     }
  104.     return catsArray;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement