Форум программистов, компьютерный форум CyberForum.ru

ООП - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Односвязные списки c++ http://www.cyberforum.ru/cpp-beginners/thread147907.html
Надо написать функцию, которая вставляет в список элемент со значением n после первого элемента со значением m. Реализовать как односвязный список(используя динамические структуры). Должны быть возможности добавить в конец списка новый элемент, выпечатать список, уничтожить его. Можете кто нибудь, пожалуйста, помочь с этим заданием? Заранее спасибо
C++ Работа с текстовыми файлами Создать программу, которая обрабатывает файл в последовательном режиме. Данные надо считывать по одному символу (нельзя считывать сразу весь файл или строку) Дан не пустой текстовый файл. Написать программу, которая выводит в файл все числа встреченные во входном файле (числом считать только те слова, которые состоят только из цифр. Словом считать символьную строку, которая отделена пробелами... http://www.cyberforum.ru/cpp-beginners/thread147901.html
строки и множества в С C++
Вывести в обратном порядке третье слово
C++ Матрицы в С++
Здравствуйте, форумчане...я, уповая на ваше помощь, прошу помочь мне с программой... Смысл задачи: Дана символьная матрица. Характеристикой строки назовем длину строки. Определить номер строки, имеющей наибольшую характеристику.
C++ вывести элементы массива целых чисел http://www.cyberforum.ru/cpp-beginners/thread147887.html
вывести элементы массива целых чисел, которые находится между max и min
C++ Функция которая сравнивает два целых числа и возвращает результат сравнения в виде знака: >, < или = Используя функцию, которая сравнивает два целых числа и возвращает результат сравнения в виде знака: >, < или =, вычислить количество равных среди введенных трех чисел x, у, t. подробнее

Показать сообщение отдельно
_Eldar_
 Аватар для _Eldar_
44 / 29 / 3
Регистрация: 31.10.2009
Сообщений: 200
25.06.2010, 03:44  [ТС]     ООП
easybudda,

Что то у меня совсем туго стало со свободным временем , Вообщем не стал делать никакие менюшки, сделал все поминиму. Принимаю критику (по файлам Zoo.h и Zoo.cpp по Main.cpp сам понимаю что все криво написано)

файл Zoo.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <string>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <windows.h>
 
 
// базовый класс Animal
class Animal{
protected:
    std::string name;  // название
    int    limit_life; // продолжительность жизни
    double weight;     // вес
public:
    Animal(std::string, int, double); // конструктор
    Animal(); // конструктор по умолчанию
    std::string GetName(void) const {return name;} 
    int         GetLimitLife(void) const {return limit_life;}
    double      GetWeight(void) const {return weight;}
};
 
// производный класс Bird от Animal
class Bird: public Animal{
private:
    double   wing_span; // размах крыльев   
    std::string   flying;    // летающий?
public:
    Bird(std::string, int, double ,double , std::string);// конструктор
    Bird();   // конструктор по умолчанию
    double GetWingSpan(void) const {return wing_span;}
    std::string GetFlying(void) const {return flying;}  
    friend std::ostream& operator << (std::ostream&, Bird&);
    friend std::istream& operator >> (std::istream&, Bird&);
    friend std::ofstream& operator << (std::ofstream&, Bird&);
    friend std::ifstream& operator >> (std::ifstream&, Bird&);
};
 
// производный класс Fish от Animal
class Fish: public Animal{
private:
    std::string type_fish; // тип, речная или морская
    int count_fin;    // количество плавников
public:
    Fish(std::string, int, double , std::string, int); // конструктор
    Fish(); // конструктор по умолчанию
    std::string GetTypeFish(void) const {return type_fish;}
    int GetCountFin(void) const {return count_fin;}
    friend std::ostream& operator << (std::ostream&, Fish&);
    friend std::istream& operator >> (std::istream&, Fish&);
    friend std::ofstream& operator << (std::ofstream&, Fish&);
    friend std::ifstream& operator >> (std::ifstream&, Fish&);
};
файл Zoo.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include "Zoo.h"
 
using namespace std;
 
//////////////////////////////////////////////////////////////
// базовый класс Animal
 
//конструктор
Animal::Animal(string _name, int _limit_life, double _weight):
    name(_name), limit_life(_limit_life), weight(_weight){
    //cout << "Конструктор Animal" << endl;
} 
 
//конструктор по умолчанию
Animal::Animal(): name("Неизвестно"), limit_life(0), weight(0){
    //cout << "Конструктор Animal по умолчанию" << endl;
}
 
//////////////////////////////////////////////////////////////
// производный класс Bird от Animal
 
//конструктор
Bird::Bird(string _name, int _limit_life, double _weight ,double _wing_span, string _flying):
Animal(_name, _limit_life, _weight), wing_span(_wing_span), flying(_flying){
    //cout << "Конструктор Bird" << endl;
}
 
//конструктор по умолчанию
Bird::Bird(): wing_span(0), flying("Неизвестно"){
    //cout << "Конструктор Bird по умолчанию" << endl;
}
 
/////////////////////////////////////////////////////////////
// производный класс Fish от Animal
 
// конструктор
Fish::Fish(string _name, int _limit_life, double _weight , string _type_fish, int _count_fin) :
Animal(_name, _limit_life, _weight), type_fish(_type_fish), count_fin(_count_fin){
    //cout << "Конструктор Fish" << endl;
}; 
 
//конструктор по умолчанию
Fish::Fish() : type_fish("Неизвестно"), count_fin(0){
    //cout << "Конструктор Fish по умолчанию" << endl;
}
 
/////////////////////////////////////////////////////////////
// переопределение операций сдвига (Класс Bird)
ostream& operator << (ostream& out, Bird& obj){
    return out 
        << "Название:                " << left << obj.name << endl
        << "Продолжительность жизни: " << left << obj.limit_life << endl
        << "Вес                      " << left << obj.weight << endl
        << "Размах крыльев:          " << left << obj.wing_span << endl
        << "Летающий:                " << left << obj.flying << endl;
}
 
istream& operator >> (istream& in, Bird& obj){
    cout << "Введите:" << endl;
    cout << "\nНазвание - ";              in >> obj.name;
    cout << "Продолжительность жизни - "; in >> obj.limit_life;
    cout << "Вес - ";                     in >> obj.weight;
    cout << "Размах крыльев - ";          in >> obj.wing_span;
    cout << "Летающий - ";                in >> obj.flying;
    cout << endl;
    return in; 
}
 
ofstream& operator << (ofstream& out, Bird& obj){
    out << obj.name       << " " 
        << obj.limit_life << " " 
        << obj.weight     << " " 
        << obj.wing_span  << " " 
        << obj.flying     << endl;
    return out;
}
 
ifstream& operator >> (ifstream& in, Bird& obj){
    in >> obj.name >> obj.limit_life >> obj.weight >> obj.wing_span >> obj.flying;
    return in; 
}
 
/////////////////////////////////////////////////////////////
// переопределение операций сдвига (Класс Fish)
ostream& operator << (ostream& out, Fish& obj){
    return out 
        << "Название:                " << left << obj.name       << endl
        << "Продолжительность жизни: " << left << obj.limit_life << endl
        << "Вес                      " << left << obj.weight     << endl
        << "Тип рыбы:                " << left << obj.type_fish  << endl
        << "Кол-во плавников:        " << left << obj.count_fin  << endl;
}
 
istream& operator >> (istream& in, Fish& obj){
    cout << "Введите:" << endl;
    cout << "Название:                "; in >> obj.name;
    cout << "Продолжительность жизни: "; in >> obj.limit_life;
    cout << "Вес:                     "; in >> obj.weight;
    cout << "Тип рыбы:                "; in >> obj.type_fish;
    cout << "Кол-во плавников:        "; in >> obj.count_fin;
    cout << endl;
    return in; 
}
 
ofstream& operator << (ofstream& out, Fish& obj){
    out << obj.name       << " " 
        << obj.limit_life << " " 
        << obj.weight     << " " 
        << obj.type_fish  << " " 
        << obj.count_fin     << endl;
    return out;
}
 
ifstream& operator >> (ifstream& in, Fish& obj){
    in >> obj.name >> obj.limit_life >> obj.weight >> obj.type_fish >> obj.count_fin;
    return in; 
}
файл Main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "Zoo.h"
 
using namespace std;
 
int main(){
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    cout << "Программа запущена" << endl;
    
    ifstream fin("birds.txt");
    if(!fin){
        cout << "Файл birds.txt не найден" << endl;
        system("pause");
        return 1;
    }
 
    vector<Bird> bird ;
 
    while(!fin.eof()){
        Bird temp;
        fin >> temp;
        bird.push_back(temp);
    }
 
    cout << "Птицы зоопарка: " << endl; 
    vector<Bird>::iterator i;
    for(i = bird.begin(); i != bird.end(); ++i){
        cout << "==============================" << endl;
        cout << *i;
    }
 
    cout << "\n/****************************************/\n" << endl;
    cout << "Нелетающие птицы" << endl;
    for(i = bird.begin(); i != bird.end(); ++i){        
        if (i->GetFlying() == "Нет"){
            cout << "==============================" << endl;
            cout << *i;
        }
    }
 
    cout << "\n/****************************************/\n" << endl;
    cout << "Птицы, вес которых > 60 кг" << endl;
    for(i = bird.begin(); i != bird.end(); ++i){        
        if (i->GetWeight() > 60){
            cout << "==============================" << endl;
            cout << *i;
        }
    }
    
    cout << endl;
    system("pause");
    return 0;
}
файл birds.txt
Альбатрос 45 68 50 Да
Пингвин 30 15 10 Нет
Чайка 5 3 21 Да
Страус 100 150 60 Нет
 
Текущее время: 10:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru