Проблема в названии. Если возможно, пожалуйста, объясните мне, что я сделал неправильно и почему правильное решение является правильным.
Моя попытка решить эту проблему приведена в коде ниже... предполагалось, что я получу все трехзначные числа, затем извлеку digit1
, digit2
и digit3
из каждого числа, после чего он должен показать числа, соответствующие digit3-digit1==digit2
.
Программа работает без ошибок, но при этом ничего толком не делает.
#include <iostream>
using namespace std;
int main()
{
int Number,digit1,digit2,digit3,h;
for (Number=100; Number<=999; Number++)
{
h=Number;
}
digit1=h/100;
digit2=(h/10)%10;
digit3=h%10;
if (digit3-digit1==digit2)
cout<<digit1<<digit2<<digit3;
return 0;
}
Да, теперь это работает. Не могли бы вы рассказать мне, в чем разница между вставлением большей части кода в цикл и размещением его снаружи, а также как сделать, чтобы каждое число отображалось на разных строках? Я не знаю, как это сделать для циклов.
Если он вне цикла, то он работает только со значением 999
, потому что это последнее значение, которое h
установлено перед выходом из цикла. Чтобы напечатать новую строку, вы должны сделать cout << endl
или просто поместить << endl
в конце оператора печати перед точкой с запятой.
Вы также можете генерировать только нужные числа вместо их поиска.
Код, который идет после цикла (кроме return 0
), должен идти внутри цикла. Если он находится вне цикла, то он работает только со значением 999, потому что это последнее значение, на которое устанавливается h
перед выходом из цикла. Чтобы напечатать новую строку, вы должны сделать cout << endl
или просто поместить << endl
в конце оператора печати перед точкой с запятой.
Здесь можно сделать несколько оптимизаций. Вам не нужно перебирать все 899 номеров. Учитывая ограничения, третья цифра должна быть больше или равна первой цифре, поэтому вы можете просто запустить цикл для первой цифры и вложенный цикл для третьей цифры, который начинается с первой цифры.
for (int a = 1; a < 10; a++) {
for (int c = a; c < 10; c++) {
int b = c - a;
cout << a << b << c << endl;
}
}
Похоже, вы просто хотите вставить большую часть кода в цикл, а не выносить его за пределы тела цикла.