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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vellasha
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 3
#1

Массивы в ООП - C++

28.11.2012, 14:20. Просмотров 546. Ответов 2
Метки нет (Все метки)

Ботанический сад и цветы. Цветы цветут при соблюдении ряда условий: время года, температура и влажность. Класс обработчик реализует поиск цветов, которые должны цвести при существующих начальных данных.
Вот набросала код, не могу вписать в него массивы. Даже массив имени цветка не получается - при проверке выводит только первую букву введенного имени. Помогите пожалуйста, нужно чтоб пользователь вводил массив цветов и соответственно класс обработчик проверял весь массив на соответствие условиям, и выводил цветущие.

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
#include <iostream>
#include "Flower.h"
 
int main(int argc, char* argv[])
{
    Flower flower;
    flower.Setname();
    flower.Setmax_temp();
    flower.Setmin_temp();
    flower.Setmax_vlajn();
    flower.Setmin_vlajn();
    flower.Setseason();
    flower.Setbloom();
    flower.Getname();
    flower.Getmax_temp();
    flower.Getmin_temp();
    flower.Getmax_vlajn();
    flower.Getmin_vlajn();
    flower.Getseason();
    flower.Getbloom();
    Garden garden;
    Controller ctrl(garden, flower);
    std::cout<< "Next flower should bloom: "<<endl;
    ctrl.exec();
    getch(); 
    return 0;
}
Flower.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
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
118
119
120
121
122
123
124
125
126
#ifndef Flower_H 
#define Flower_H
#include <cstdlib>
#include <iostream.h>
#include <conio.h>
#include <string>
class Garden
{
      static const int defaulttemp=20;
      static const int defaultvlajn=50;
      static const int defaultseason=2;
public:
    Garden()
    { 
    std::cout<<"Garden created\n\n\n"<<endl;
    }
    int Getdefaulttemp() const
    {
        return defaulttemp;
    }
    int Getdefaultvlajn() const
    {
        return defaultvlajn;
    }
    int Getdefaultseason() const
    {
        return defaultseason;
    }
};
class Flower {
private:
char *name;
int max_temp;
int min_temp;
int max_vlajn;
int min_vlajn;
int season;
bool bloom;
public:   
    Flower() 
    {   
    std::cout<<"Flower created."<<endl;
    name=new char[20];
    strcpy(name, " ");
    }  
    char Setname()
        { std::cout<<"Set Name for Flower"<<endl;
          std::cin>>name;
    }
    void Setmax_temp()
        { std::cout<<"Set Max Temperature for Flower"<<endl;
          std::cin>>max_temp;
    }
    void Setmin_temp()
        { std::cout<<"Set Min Temperature for Flower"<<endl;
          std::cin>>min_temp;
    }
    void Setmax_vlajn()
        { std::cout<<"Set Max Vlajnost for Flower"<<endl;
          std::cin>>max_vlajn;
    }
    void Setmin_vlajn()
        { std::cout<<"Set Min Vlajnost for Flower"<<endl;
          std::cin>>min_vlajn;
    }
    void Setseason()
        { std::cout<<"Set season for Flower. Winter=1, Spring=2, Summer=3, Autumn=4"<<endl;
          std::cin>>season;
    }
    void Setbloom()
       { bloom=false;
    }
    char Getname()
       { 
         return *name;
       }
    int Getmax_temp() 
       { if (max_temp<min_temp)
         {std::cout<<"ERROR!!\n\n WRONG  TEMPERATURE!!\n\n";
         system("pause");
         exit(1);}
         return max_temp;
       }
    int Getmin_temp()
       { if (min_temp>max_temp)
         {std::cout<<"ERROR!!\n\n WRONG  TEMPERATURE!!\n\n";
         system("pause");
         exit(1);}
         return min_temp;
       }
    int Getmax_vlajn()
       { if (max_vlajn<min_vlajn)
         {std::cout<<"ERROR!!\n\n WRONG  VLAJNOST!!\n\n";
         system("pause");
         exit(1);}
         return max_vlajn;
       }
    int Getmin_vlajn()
       { if (min_vlajn>max_vlajn)
         {std::cout<<"ERROR!!\n\n WRONG  VLAJNOST!!\n\n";
         system("pause");
         exit(1);}
         return min_vlajn;
       }
    int Getseason()
       { if ((season>4) or (season<1))
         {std::cout<<"ERROR!!\n\n WRONG  SEASON!!\n\n";
         system("pause");
         exit(1);}
         return season;
       }
       bool Getbloom()
       { 
       return bloom;
       } 
};
       class Controller
{
public:
    Controller (Garden &_garden, Flower &_ob) : garden(_garden), ob(_ob) {}
    void exec();
private:
    Garden &garden;
    Flower &ob;       
};
#endif // Flower_H
ControllerMetod.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
#include "Flower.h"
#include <iostream>
#include "Flower.h"
#include <iostream>
void Controller::exec()
{
   const int gardtemp = garden.Getdefaulttemp();
   const int gardvlajn = garden.Getdefaultvlajn();
   const int gardseas = garden.Getdefaultseason();
   char *Nm;
   Nm=new char[20];
   strcpy(Nm, " ");
   int MaxT=0;
   int MinT=0;
   int MaxV=0;
   int MinV=0;
   int Seas=1;
   bool Bl=false;
    *Nm  = ob.Getname();
    MaxT = ob.Getmax_temp();
    MinT = ob.Getmin_temp();
    MaxV = ob.Getmax_vlajn();
    MinV = ob.Getmin_vlajn();
    Seas = ob.Getseason();
    Bl  = ob.Getbloom();
    if ((gardtemp>=MinT) && (gardtemp<=MaxT))
    {
    if ((gardvlajn>=MinV) && (gardvlajn<=MaxV))
    {
    if (gardseas==Seas)
    {
          Bl=true;
    }
       }
    }
    if (Bl==true)
    {
       std::cout<<*Nm;
    }
    else
    std::cout<< "none";
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2012, 14:20     Массивы в ООП
Посмотрите здесь:

ООП - C++
1) Для класса символьной строки определить отношение лексикографического порядка, перегрузив с помощью дружественной функции операцию «&lt;» ...

ООП - C++
наследование - понятно агрегация - понятно использование - не понятно. что такое использование? спасибо.

ООП - C++
Прочитал в википедии про ООП, но так толком и не понял. Подскажите, чем является создание программ с интерфейсом, допустим как калькулятор...

ООП - C++
помогите переделать программу в ООП, Создать класс, описывающий следующие понятие рабочий! фамилия,стаж,часовая зароботная плата,...

ООП - C++
проблема в классе квадрат- ниже код, я не прошу его переписывать, попробуйте кто то у себя запустите и будьте добры скажите почему там...

ООП - C++
Господа у меня возникло 2 вопроса по ООП т.к. только не давно начал его изучать . 1) Не как не могу понять для чего умные люди его...

ооп - C++
Нада книгу по ооп, такую что бы было все разжевано максимально. Так, что бы я за минимум времени и усилий разобрался.

ООП - C++
Создать класс Vegetable, содержащий следующие элементы: - поле «вес» float Mass; - поле «зрелость» int Ripeness; - метод получения...

ООП в С++ - C++
Здравствуйте! Ответьте пожалуйста на несколько вопросов... p.s. буду рад , если ответы будут сопровождаться примерами :) Хочу...

ООП на С++ - C++
Помогите пожалуйста!! Не понимаю как это сделать(( Создать программу с классом Student порождающий обьекты - данные об студентах...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
denys_l
52 / 52 / 4
Регистрация: 26.09.2011
Сообщений: 186
28.11.2012, 15:01     Массивы в ООП #2
C++
1
2
3
4
char Getname()
       { 
         return *name;
       }
Возвращаем первый символ
C++
1
*Nm  = ob.Getname();
Принимаем один символ... но никак не строку
Потому выводит одну букву.
Возвращай указатель, можно константный
C++
1
2
3
4
char* Getname()
       { 
         return name;
       }
И копируй его в уже в Nm через strcpy(Nm,Getname());
Как-то так
vellasha
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 3
28.11.2012, 22:18  [ТС]     Массивы в ООП #3
отлично, с этим все получилось! теперь бы еще с оставшимися массивами разобраться, эх.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru