Мне нужно найти количество цифр, которое имеет каждое число от 1 до 40. Похоже, должно быть просто использовать циклы for и while, но я не могу заставить его работать.
Я попытался сделать это с помощью "cin >> a;", введя значение "a"с клавиатуры и цикла while отлично работал для любого числа, которое я ввел, но когда я пытаюсь сделать это с помощью цикла for, он не работает, поэтому проблема должна быть там.
int main()
{
int a; //initially found number
int digits=0; //number of digits number "a" has
int temp; // temporary number "a"
for(a=1;a<=40;a++) // takes a number, starting from 1
{
temp=a;
while(temp!=0) //finds number of digits the number "a" has
{
temp=temp/10;
digits++;
}
cout<<digits<<endl; //prints number of digits each found number "a" has
}
return 0;
}
Что я должен получить, это: 1 для каждого числа от 1 до 9, затем 2 для каждого числа от 10 до 99 и так далее. Сейчас я получаю 1 2 3 4 5 6 7 8 9 11 13 15 17 19 и т. Д. (С указанием только неравных чисел, идущих дальше). Я был бы очень признателен за любую помощь.