Разместить между первым и последующими цифрами числа ноль
Дано натуральное число N. Разместить между первой и последующими цифрами ноль. Через цикл.
#include <iostream>
using namespace std;
int main() {
int n, d;
setlocale(LC_ALL, "Russian");
cout << "Введите натуральное число: ";
cin >> n;
while(n <= 0){
cout << "Введите натуральное число: ";
cin >> n;
}
for (n; n != 0; n /= 10){
d = n % 10;
cout << d * 10;
}
}
Ответы (3 шт):
Автор решения: Harry
→ Ссылка
Так сойдет?
unsigned int add0(unsigned int n)
{
unsigned int d = 1;
while( n/d > 9) d*= 10;
return (n/d)*10*d + n%d;
}
Через for...
while(условие) действие;
эквивалентно
for(; условие; ) действие;
или даже
for(; условие; действие);
Так что
while( n/d > 9) d*= 10;
эквивалентно
for(; n/d > 9 ; d*= 10);
Автор решения: n1tr0xs
→ Ссылка
Вот так можно, если я все верно понял:
#include <iostream>
using namespace std;
int main(){
setlocale(LC_ALL, "Russian");
int n, d=1;
do{
cout << "Введите натуральное число: ";
cin >> n;
} while(n<=0);
while(n/d > 1) d *= 10;
for( ; d>1; n%=d, d/=10)
cout << n/d << 0;
cout << n;
return 0;
}
Автор решения: Mikhailo
→ Ссылка
Судя по принятому ответу, надо получить не число, как у Harry, а просто вывод на экран? тогда это делается куда проще:
int N;
cin >> N;
string s = to_string(N);
cout << s.substr(0,1) << "0" << s.substr(1) << endl;
И не надо всех этих расчетов.
Для wololo: ничуть не сложнее
string s = to_string(N);
for(int i = 0; i < s.size(); ++i)
cout << s[i] << (i == s.size()-1 ? "" : "0");