Я написал эту программу для класса, который запрашивает положительное число и на основе числа вычислений. На прошлой неделе у меня была отличная помощь со стороны сотрудников штатов, но мой профессор попросил меня переписать его и упростить мой код. Я сделал это, и теперь математика не выходит правильно. Я запустил отладчик, но я не вижу, где переданные значения неверны. Кроме того, все числа не выполняют тест «if (number> 0)».Возможная ошибка операции, случайный вывод с одной цифрой
Это может быть ошибка компиляции, хотя я получаю сообщение об успешном построении?
Заранее благодарен!
Вот код.
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include <stdexcept>
#include <cstdlib>
using namespace std;
int main()
{
system ("color F0");
int number, countIf = 0, countWhile = 0, countDo = -1, h = 0, i = 0, x = 0, y = 0;
char repeat = 'y';
do {
cout << "Please enter a positive integer or zero to quit: ";
cin >> number;
x = number, y = number;
cin.ignore();
if (number < 0)
cout << "Error: The integer entered was either not positive or a zero.\n" << endl;
else if (number > 0)
{
if (number%2 == 0 && number%5 == 0)
for (y%5; countIf <= y; countIf +=5)
{
i = y/10;
i += countIf;
cout << countIf << " ";
}
else if
(countWhile < x && number%2 == 0)
{
countWhile += 2;
cout << countWhile << " ";
}
else
{
countDo +=2;
cout << countDo << " ";
}
}
cout << "\n\nDo you wish to continue? (Y or N): ";
cin >> repeat;
}
while (number != 0 && repeat == 'y' || repeat == 'Y');
//cout << "\nThanks for playing!" << endl;
system ("pause");
return 0;
}
Вывод должен быть похож на:
Что я получаю:
Когда вы упрощаете код, вы должны протестировать его на каждом шагу. Таким образом, если он перестанет работать, вы точно узнаете, в чем проблема. – Beta
Это не ошибка компиляции, это логическая ошибка. Попробуйте использовать пример с карандашом и бумагой. Кстати, '&&' имеет более высокий приоритет, чем '||', поэтому 'A && B || C' означает '(A && B) || C'. – MRAB
Ваш код довольно длинный. Сделайте копию и начните удалять части, пока вы больше не сможете воспроизвести проблему, или пока не получите «простейший возможный» фрагмент кода, который все еще имеет проблему. В этом последнем случае вы можете вернуться и предоставить этот фрагмент кода, и я гарантирую, что вам будет легче ответить. – nneonneo