Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Lazariev_V
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 55
1

Не могу разобраться с оператором условия

11.09.2016, 00:57. Просмотров 334. Ответов 3
Метки нет (Все метки)

Всем доброго времени суток. В общем такая проблема,у меня задание,"Фотоаппарат",все вроде бы неплохо работает,но есть одно "но",в задании сказано,что нельзя сделать фото не переключив кадр,я сделал проверку,все попытался сделать так,чтобы этого не происходило,но все же,когда я делаю фото во второй и последующие разы,у меня появляется сообщение "Поменяйте кадр",но счетчик все равно продолжает считать кадры,чего не должно быть.
За помощь буду очень признателен.Спасибо

Код:

НАЗВАНИЕ ХЕДЕРА : Camera.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
#pragma once
class Camera
{
private:
    int cameraFrames;
public:
    Camera();
    void SwitchFrame();
    void chargeFilm();
    void makePhoto();
};
 
Первый cpp-файл.
#include "stdafx.h"
 
Camera::Camera()
{
    cameraFrames = 10;
}
 
void Camera::chargeFilm()
{
    cameraFrames = 10;
    cout << "Camera charged!" << endl;
}
 
void Camera::SwitchFrame()
{
    if (cameraFrames<10 && cameraFrames>0)
    {
        
        cout << "The frame was switched on : " << cameraFrames << " frame" << endl;
    }
    else if (cameraFrames <= 0)
    {
        cout << "ERROR:CHARGE THE CAMERA" << endl;
    }
    else if (cameraFrames == 10)
    {
        cout << "The frame is full,make a photo" << endl;
    }
}
 
void Camera::makePhoto()
{
    int makedPhoto = 0;
 
    if (cameraFrames <= 0)
    {
        cout << "Please charge the camera!" << endl;
    }
    else if (cameraFrames<10 && cameraFrames>0)
    {
        cout << "ERROR:FRAME WAS NOT SWITCHED!" << endl;
    }
 
        cout << "Photo!" << endl;
        cameraFrames--;
        makedPhoto++;    //проблема в этом участке кода,думаю,я думаю,что тут должен быть либо оператор условия,либо цикл,который не будет пропускать верхнюю часть кода,с этим и у меня возникла проблема,не могу сообразить,какое условие подобрать.
}
MAIN
#include "stdafx.h"
 
void main()
{
    enum cameraPhoto { MakePhoto = 1, ChargeCamera, Switch, Exit };
 
    Camera camera;
 
    int choice = 0;
 
    while (true)
    {
        cout << "1.Make photo" << endl;
        cout << "2.Charge camera" << endl;
        cout << "3.Switch" << endl;
        cout << "4.EXIT" << endl;
        cin >> choice;
        cout << "\n";
 
        switch (choice)
        {
        case MakePhoto:
                camera.makePhoto();
                cout << "\n";
            break;
        case ChargeCamera:
            camera.chargeFilm();
            cout << "\n";
            break;
        case Switch:
            camera.SwitchFrame();
            cout << "\n";
            break;
        case Exit:
            exit(0);
        }
 
    }
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2016, 00:57
Ответы с готовыми решениями:

Не могу разобраться с оператором while
Столкнулся со странной проблемой. В простой программе цикл с условие while работает неправильно....

Не могу разобраться с оператором goto
Есть код в паскаль я его переделываю в c++ Program Pr4; label 1; const a=-2;b=2.5;h=0.5; var...

Не могу разобраться с записью условия
Здравствуйте. Возникла не большая проблема. Есть строка, в ней содержится один из символов &quot;&lt;&quot;...

Не могу разобраться с записью условия
Здравствуйте. Возникла не большая проблема. Есть строка, в ней содержится один из символов &quot;&lt;&quot;...

3
nd2
3179 / 2646 / 1164
Регистрация: 29.01.2016
Сообщений: 8,881
11.09.2016, 01:18 2
Если, в makePhoto(), обнаружил, что чего-то не хватает для того, чтобы сделать фото, делай return.
0
Lazariev_V
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 55
11.09.2016, 02:17  [ТС] 3
Ну,это не совсем так,там же функция void,зачем что-то возвращать? Оно работает в принципе правильно,но нужно просто проверку правильно составить,но я не совсем понимаю как.
0
nd2
3179 / 2646 / 1164
Регистрация: 29.01.2016
Сообщений: 8,881
11.09.2016, 02:29 4
Цитата Сообщение от Lazariev_V Посмотреть сообщение
там же функция void,зачем что-то возвращать?
Что-то не нужно, просто return. Логику включи: ты зашёл в функцию makePhoto(), камера не заряжена, что ты там ещё какие-то условия после этого проверяешь? Нужно выйти и зарядить камеру. То же самое насчёт переключения кадра.

Добавлено через 3 минуты
Что у тебя, вообще, SwitchFrame() делает? Сообщения выводит?
0
11.09.2016, 02:29
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2016, 02:29

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Не могу разобраться с оператором стрелка "->"
Вот пример функции удаляющей фамилию из списка: void del(void) {spis *p,*temp;char f; // f –...

проблема с оператором условия
#include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;iomanip.h&gt; #include &lt;conio.h&gt; void main() {...

помогите с оператором условия
вычислить номер дня в невисокосном году по заданным числу и месяцу на данный момент имею вот...

Помогите с оператором условия
столкнулся с проблемой когда начал изучать оператор условия в С++. Никак не могу разобраться как...


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

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

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