Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <cstring>
- #include <sstream>
- using namespace std;
- struct Cat {
- char name[20];
- char breed[20];
- int age;
- double weight;
- };
- const int CATS_ARRAY_SIZE = 8;
- Cat *setCats(string fileName, Cat catsArray[]);
- void displayCat(Cat cat);
- void displayCats(Cat catsArray[]);
- void displayCatsByBreed(Cat catsArray[], char breedName[]);
- Cat *bubbleSort(Cat catsArray[]);
- int main() {
- Cat catsArray[CATS_ARRAY_SIZE];
- setCats("/home/zahu/CLionProjects/untitled/kotki.txt", catsArray);
- // 1.
- displayCats(catsArray);
- // 2.
- char breedName[20];
- cin >> breedName;
- displayCatsByBreed(catsArray, breedName);
- // 3.
- cout << "Bubble sort" << "\n";
- bubbleSort(catsArray);
- displayCats(catsArray);
- // finish
- return 0;
- }
- Cat *setCats(string fileName, Cat catsArray[]) {
- string line;
- int iterator = 0;
- ifstream file(fileName);
- if (file.is_open()) {
- while (getline(file, line)) {
- stringstream ss(line);
- string token;
- int tokenIterator = 0;
- while(getline(ss, token, ';')) {
- switch (tokenIterator % 4) {
- case 0: strcpy(catsArray[iterator].name, token.c_str()); break;
- case 1: strcpy(catsArray[iterator].breed, token.erase(0,1).c_str()); break;
- case 2: catsArray[iterator].age = stoi(token); break;
- case 3: catsArray[iterator].weight = stod(token); break;
- default: break;
- }
- tokenIterator++;
- }
- iterator++;
- }
- file.close();
- } else cout << "Unable to open file";
- return catsArray;
- }
- void displayCat(Cat cat) {
- cout << " Name: " << cat.name;
- cout << ", Breed: " << cat.breed;
- cout << ", Age: " << cat.age;
- cout << ", Weight: " << cat.weight << "\n";
- }
- void displayCats(Cat catsArray[]) {
- for (int i = 0; i < CATS_ARRAY_SIZE; ++i) {
- cout << "Cat number " << i+1 << ":\n";
- displayCat(catsArray[i]);
- }
- }
- void displayCatsByBreed(Cat catsArray[], char breedName[]) {
- cout << "Cats with breed " << breedName << ":\n";
- for (int i = 0; i < CATS_ARRAY_SIZE; ++i) {
- if (strcmp(catsArray[i].breed, breedName) == 0) {
- displayCat(catsArray[i]);
- }
- }
- }
- Cat *bubbleSort(Cat catsArray[]) {
- Cat temp;
- for (int i = 1; i < CATS_ARRAY_SIZE; i++) {
- for (int j = 0; j < CATS_ARRAY_SIZE - i; j++) {
- string breed1 = catsArray[j].breed;
- string breed2 = catsArray[j + 1].breed;
- int value = breed1.compare(breed2);
- cout << value;
- if (breed1.compare(breed2) > 0) {
- temp = catsArray[j];
- catsArray[j] = catsArray[j + 1];
- catsArray[j + 1] = temp;
- }
- }
- }
- return catsArray;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement