целое число — общее число C ++ продолжает расти

Здравствуйте, это моя первая программа с циклом do-while, и мне потребовалось немало времени, чтобы ее отключить. Мне нужно, чтобы пользователь ввел 2 числа и поднял первое число до второго. Я наконец получил код, чтобы спросить, «хотели бы они поднять еще одно число на степень?» и когда они говорят «да» и вводят 2 новых числа, к сумме прибавляется сумма из первых 2 чисел, введенных со вторым набором чисел, и так далее. Может кто-нибудь помочь мне с этой проблемой? Вот код и картинка, чтобы помочь вам!

#include <iostream>
using namespace std;

int main()
{

int num;
int pow;
int p;
int power = 1;
char yesno = 'y' || 'Y';

do
{
cout << "Enter a number: ";
cin >> num; "\n";
cout << "Enter the power to raise: ";
cin >> pow; "\n";

for (p = 1; p <= pow; p++)
{
power = power * num;
}

cout << "The total is: " << power << endl;
cout << "\n\n";

cout << "Would you like to raise another number by a power? [Y/N]";
cin >> yesno;
} while (yesno != true);
}

0

Решение

Проблема постоянно растущего ответа заключается в том, что power не сбрасывается в цикле do-while, поэтому последнее значение переносится в следующий цикл. Вам нужно сбросить его в верхней части цикла.

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

Попробуйте это вместо этого:

int main()
{

int num;
int pow;
int p;
int power;
char yesno;

do
{
power = 1;   // <<<<<< reset power here

cout << "Enter a number: ";
cin >> num; "\n";
cout << "Enter the power to raise: ";
cin >> pow; "\n";

for (p = 1; p <= pow; p++)
{
power = power * num;
}

cout << "The total is: " << power << endl;
cout << "\n\n";

cout << "Would you like to raise another number by a power? [Y/N]";
cin >> yesno;
} while (yesno == 'y' || yesno == 'Y');  // <<<<< test for 'yes' response
}
0

Другие решения

Когда вы достигнете линии } while (yesno != true); и вернуться к do {переменная power все еще держит предыдущий num^pow, Вам нужно будет назначить power = 1 после do {,

0

#include <iostream>
// you also need
#include <cmath>  // for pow()

using namespace std;

int main()
{
// int num;  Declare variables where they're used. As locally as possible.
// int pow;
// int p;
// int power = 1;
// char yesno = 'y' || 'Y';  I don't know what you were trying to do here
// the expression 'y' || 'Y' will always be true
// and evaluate to some value different from null
// wich will be assigne to yesno. But with no con-
char yesno;               // sequences since it later gets overwritten by
do                        // cin >> yesno; There is no need to initialize
{                         // this variable.
cout << "Enter a number: ";
int num;
cin >> num; "\n";  // the statement "\n"; has no effect.

cout << "Enter the power to raise: ";
int pow;
cin >> pow; "\n";  // again. no effect.

// for (p = 1; p <= pow; p++)  as user4581301 has pointed out in the
// comments it is more ... natural in C
// to loop from 0 to < max:
int power = 1;  // now its time to declare and define power ;)
for(int p = 0; p < pow; ++p)  // notice that you can declare variables
{                             // in the init-statement of a for-loop
// power = power * num; shorter:
power *= num;
}

cout << "The total is: " << power << /* endl; + 2 x '\n' gives: */ << "\n\n\n";
// cout << "\n\n";

cout << "Would you like to raise another number by a power? [Y/N]";
cin >> yesno;
// } while (yesno != true);  that condition will most likely always be true
// since the user would have a hard time to input
// a '\0' character, which would evaluate to false
// better:
} while(yesno == 'y' || yesno == 'Y' );
}

сделанный.

Без беспорядка:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
char yesno;
do {
cout << "Enter a number: ";
int num;
cin >> num;

cout << "Enter the power to raise: ";
int pow;
cin >> pow;

int power = 1;
for(int p = 0; p < pow; ++p)
power *= num;

cout << "The total is: " << power << "\n\n\n";
cout << "Would you like to raise another number by a power? [Y/N]";
cin >> yesno;
} while(yesno == 'y' || yesno == 'Y' );
}
0
По вопросам рекламы [email protected]