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

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

Восстановить пароль Регистрация
 
vellasha
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 3
28.11.2012, 14:20     Массивы в ООП #1
Ботанический сад и цветы. Цветы цветут при соблюдении ряда условий: время года, температура и влажность. Класс обработчик реализует поиск цветов, которые должны цвести при существующих начальных данных.
Вот набросала код, не могу вписать в него массивы. Даже массив имени цветка не получается - при проверке выводит только первую букву введенного имени. Помогите пожалуйста, нужно чтоб пользователь вводил массив цветов и соответственно класс обработчик проверял весь массив на соответствие условиям, и выводил цветущие.

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++ ООП
ООП C++
C++ по ООП .
C++ ООП
ооп C++
C++ ООП
C++ ООП
C++ ООП

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
denys_l
51 / 51 / 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
отлично, с этим все получилось! теперь бы еще с оставшимися массивами разобраться, эх.
Yandex
Объявления
28.11.2012, 22:18     Массивы в ООП
Ответ Создать тему
Опции темы

Текущее время: 18:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru