0 / 0 / 0
Регистрация: 12.03.2020
Сообщений: 5
1

Ошыбка в определении количества сгенерированого растением за день кислорода

07.05.2021, 02:06. Показов 395. Ответов 1

Недавно начал изучать классы, написал упражнение с такими условиями:
Спроектировать класс CPlant (Растение) с 2мя объектами. Класс хранит название растения, её возраст, высоту, состояние (спит / цветёт), скорость роста, количество генерируемого кислорода за единицу времени, время цветения. Свойства инициализируются с помощью конструктора. Методы позволяют модифицировать и читать свойства (растения должны расти, изменяя свой возраст и высоту, считать сколько кислорода сгенерировали растения, учитывая что фотосинтез происходит лишь во время цветения и выводить информацию на экран).

Выполнение задания заняло довольно много времени, но у меня всё же получилось написать такой код. Вот только я допустил ошибку, из-за которой количество сгенерированого растением за день кислорода начинает уменьшатся с приходом ночи. Уже три дня безуспешно прогоняю код в дебагере, пытаясь найти ошибку. Буду очень благодарен за помощь.

P.S. Заранее прошу прощения, если допустил ошибку в этой теме. Я не безграмотный, честно, просто русский - не мой родной язык)))
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <string>
 
using namespace std;
 
class CPlant
{
 
private:
    string name;
    int dAge;
    int cmHeigh;
    bool isBlooming;
    int growingSpeedADay;
    int oxygenGeneratingAnHour;
    int hBloomingTime;
    int oxygenGenerated;
    int timeSlept = 0;
    
public:
    CPlant(string valueName, int dValueAge, int cmValueHeigh, bool valueIsBlooming, int valueGrowingSpeedADay, int valueOxygenGeneratingAnHour, int hValueBloomingTime)
    {
        name = valueName;
        dAge = dValueAge;
        cmHeigh = cmValueHeigh;
        isBlooming = valueIsBlooming;
        growingSpeedADay = valueGrowingSpeedADay;
        oxygenGeneratingAnHour = valueOxygenGeneratingAnHour;
        hBloomingTime = hValueBloomingTime;
    }
 
    void SetAge(int day)
    {
        for (int i = 0; i < day; i++)
        {
            dAge++;
        }
    }
 
    void SetHeigh(int day)
    {
        for (int i = 0; i < day; i++)
        {
            cmHeigh += growingSpeedADay;
        }
    }
 
    int SetIsBloomingGetTimeSlept(int time)
    {
        int i = 0;
        while (time >= 25)
        {
            time -= 25;
        }
        for (i; i < hBloomingTime; i++)
        {
            isBlooming = true;
            if (i == time)
                goto endOfSetter;
        }
        for (i; i < 24; i++)
        {
            isBlooming = false;  
            if (i == time)
                goto endOfSetter;
            ++timeSlept;
        }
    endOfSetter:
        return timeSlept;
   }
 
    void SetOxygenGenerated(int time)
    {
        oxygenGenerated = oxygenGeneratingAnHour * time;
    }
 
    int GetBloomingTime()
    {
        return hBloomingTime;
    }
 
    string printIsBlooming()
    {
        if (isBlooming)
        {
            return "Blooms";
        }
        else
        {
            return "Sleeps";
        }
    }
 
    void printClass()
    {
        cout << "Name: " << name << "\t\tAge: " << dAge << "\t\tHeigh: " << cmHeigh << "\tCondition:" << printIsBlooming() << "\tOxygen generated: " << oxygenGenerated << endl;
    }
};
 
int main()
{
    int plusTime = 0, timeNow = 0, timeSlept[2] = {0, 0}, controlDay = 0, dayNow = 0;
 
    CPlant sunflower("Sunflower", 29, 40, true, 3, 25, 8);
    CPlant tulip("Tulip", 16, 13, true, 1, 12, 11);
 
    do
    {
        if (plusTime < 0)
        {
            cout << "ERROR!!!";
            break;
        }
        else
        {
            sunflower.SetAge(dayNow - controlDay);
            tulip.SetAge(dayNow - controlDay);
            sunflower.SetHeigh(dayNow - controlDay);
            tulip.SetHeigh(dayNow - controlDay);
            timeSlept[0] = sunflower.SetIsBloomingGetTimeSlept(timeNow);
            timeSlept[1] = tulip.SetIsBloomingGetTimeSlept(timeNow);
            sunflower.SetOxygenGenerated(timeNow - timeSlept[0]);
            tulip.SetOxygenGenerated(timeNow - timeSlept[1]);
 
            controlDay = dayNow;
 
            cout << "Your plants for now:\n";
            sunflower.printClass();
            tulip.printClass();
 
            cout << "How many hours want you to wait (enter 0 to quit)?" << endl;
            cin >> plusTime;
 
            timeNow += plusTime;
            dayNow = timeNow / 24;
        }
 
    } while (plusTime != 0);
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2021, 02:06
Ответы с готовыми решениями:

Ошибка в определении количества четных элементов
Написал код. Прога выдает ошибку в поиске четных элементов, неправильное условие. Подскажите плиз ...

Ошибка 438 при определении количества столбцов
пытаюсь определить последний заполненый столбец, но выдает ошибку 438 k =...

Ошибка при определении количества отрицательных элементов
Есть матрица (двумерный массив), который выводится в StringGrid. Нужно для каждой строки матрицы...

Почему при использовании компонента PhpExel При определении количества колонок я получаю буквенное обозначение?
Мой код require_once $_SERVER.&quot;/Classes/PHPExcel/IOFactory.php&quot;; $objPHPExcel =...

1
0 / 0 / 0
Регистрация: 12.03.2020
Сообщений: 5
11.05.2021, 12:55  [ТС] 2
Спустя 4 дня я таки смог найти ошибку. Всего-то нужно было обнулить timeSlept после 60 строчки.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2021, 12:55
Помогаю со студенческими работами здесь

Вывод сгенерированого числа в окне сообщений
Задание: Написать приложение, которое «угадывает» задуманное пользователем число от 1 до 100. ...

Надо написать 2 программы, суть которых в определении количества чисел (по заданным критериям) в последовательности с неизвестным кол-вом чисел.
Помогите, пожалуйста, написать две программки: 1. Программа, которая в последовательности целых...

Нахождение среднего количества посетителей в день
SELECT date, round((avr),2.2) as C1 FROM (select date,avg(C2) as avr FROM (select...

Расчет количества отработанных дней сотрудника на текущий день
Всем добрый день! Помогите пжл рассчитать количество отработанных дней сотрудника на текущий день...

Программа для расчёта количества строчек программного продукта на N-Й день
Каждый день программист разрабатывает X строчек кода, при этом раз в неделю он проводит рефакторинг...

Код для определения среднего количества времени отработанного за один день
Здрасти!Какой можно придумать простой код для определения среднего количества времени отработанного...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru