Loop acting crazy

I'm at the very end of this calculator program, everything is working perfectly. Besides the fact I cannot get this loop to end. I can't end it with
 
while(op!= q)

Because i need it to display the final result. How I have it now the loop is supposed to end with num2= quit, when I input this into the program it does something crazy and just keeps going and going and going and going until I just exit the IDE, and if I don't have a way out of the loop after it displays the final result the program just asks for another number input. Maybe the professor doesn't want the loop to end and I am just overthinking I don't know, but this is what I have.
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
#include <iostream>
#include <math.h> 


using namespace std;

//Prototypes

//Retrieves the operator, operand and returns operator
//and operand

void scan_data(char, double);

//Reads operator and operand and uses switch statement
//to perform correct operator on the operand

double do_nex_op(char, double, double&);

//Reads result and outputs the result of the operator
//and the operand

float do_next_op(double);


int main()
{
    char op;
    double num2;
    double sum;

    
  cout<< "This program is a very basic calculator \n";
  cout<< "use only operators +,-,*,/, or ^";
  cout<<" to raise a number to a power\n\n";

    
  //display operator and operand
    
    scan_data(op, num2);

    
return 0;    

}

// function to obtain original values

void scan_data(char op, double num2)
{
 
   double num;
   double result;
  
      num = do_nex_op ( op, num2, num);
  
      result = do_next_op(num);

}

// performs operation based on operator input

double do_nex_op(char op, double num2, double& num)
{
   num = 0;
  
  cout<< "Enter a valid operator:\n";
  cin >> op;
  
  cout<< "Enter any number:\n";
  cin >> num2;
       switch (op)
        {
            case'+':
                cout << "\n+"<< num2;
                num = num + num2;
                cout<<"\n\nresult so far " << num;
                break;
            case '-':
                cout << "\n-"<< num2;
                num = num - num2;
                cout <<"\n\nresult so far " << num;
                break;
            case '*':
                cout << "\n*"<< num2;
                num = num * num2;
                cout <<"\n\nresult so far "<< num;
                break;
            case '/':
                cout << "\n/"<< num2;
                num = num / num2;
                cout <<"\n\nresult so far "<< num;
                break;
            case '^':
                cout << "\n^"<< num2;
                num = pow(num, num2);
                cout <<"\n\nresult so far "<< num;
                break;
            case 'q':
                cout <<"\nq" <<" 0";
                cout << "\n\nfinal result is"<< num;
            default:
                cout<<"\n\nInvalid operator";
                
                
          }
    
       return (num);
}
// initiate loop
float do_next_op(double num)
{
    double num2;
    char op;
    
    cout<<"\nEnter Next Opertion:\n"<< endl;
    cin>> op;
    
    cout <<"\nEnter next Number: \n"<<endl;
    cin>> num2;
    switch(op)
    {
            case'+':
                cout<<"\n+"<< num2;
                num= num2 + num;
                cout<< "\nresult so far is "<< num;
                break;
            case'-':
                cout<<"\n -"<< num2;
                num= num2 - num;
                cout<<"\nresult so far is "<< num;
                break;
            case'*':
                cout<<"\n*"<< num2;
                num= num2 * num;
                cout<<"\nresult so far is "<< num;
                break;
            case'/':
                cout<<"\n/"<<num2;
                num= num / num2;
                cout << "\nresult so far is "<< num;
                break;
            case'^':
                cout<<"\n ^"<< num2;
                num= pow(num, num2);
                cout << "\nresult so far is "<< num;
                break;
            case 'q':
                cout<<"\nq "<<"0";
                cout<<"\nFinal result is: \n";
                cout<< num;
            default:
                cout<<"\nNot a valid operator";
    }
    
    while (num2 != 'quit')
  {     cout<<"\n\nEnter Next Operation:\n";
        cin>> op;
        cout<<"Enter next number: \n";
        cin>> num2;
     
    switch(op)
    {
            case'+':
                cout<<"\n+"<< num2;
                num= num2 + num;
                cout<< "\nresult so far is "<< num;
                break;
            case'-':
                cout<<"\n -"<< num2;
                num= num2 - num;
                cout<<"\nresult so far is "<< num;
                break;
            case'*':
                cout<<"\n*"<< num2;
                num= num2 * num;
                cout<<"\nresult so far is "<< num;
                break;
            case'/':
                cout<<"\n/"<<num2;
                num= num / num2;
                cout << "\nresult so far is "<< num;
                break;
            case'^':
                cout<<"\n ^"<< num2;
                num= pow(num, num2);
                cout << "\nresult so far is "<< num;
                break;
            case 'q':
                cout<<"\nq "<<"0";
                cout<<"\nFinal result is: \n";
                cout<< num;
            default:
                cout<<"\nNot a valid operator";
    }        
 }              
                    
                    
   return 0;         


}



I know i should just create a seperate function for the switch statement, but when I tried that all hell broke loose and a whole new set of problems arose, so i just utilized copy and paste..
try:
while (op =!q){
This is crazy, I KNOW i tried that earlier and it didn't work, now it did, thanks I appreciate it. One last question why after I enter q and the final result is shown, and now the loop ends, is the program still displaying my default cout ex:

Enter Next Operation:
q
Enter next number:
0

q 0
Final result is:
8
Not a valid operator

and then the program stops running, do you have any idea why its displaying my default case?
You forgot to put a break statement at the end of the case 'q' so it will just go on and run the code in the default case below.
Topic archived. No new replies allowed.