Дано натуральное число эн. Каждую цифру числа заменить на дополнение ее до десяти. Подсчитать количество цифр в изображении числа.
Написать программу на языке C или C++.
Здесь я покажу разницу между языком СИ и языком СИ++.
Мы можем использовать для переменных тип unsigned int - это для целых неотрицательных числах. Т.е.
unsigned int x;
Так как в задании сказано натуральные числа. А можем просто
int x;
Пример программы на языке СИ написанный на Visual Studio 2010:
#include "stdafx.h"
#include "conio.h"
int _tmain(int argc, _TCHAR* argv[])
{
unsigned int x;
int inc = 1; // переменная для степени
int sum = 0; // подсчет суммы чисел
int temp; // переменная для вычислений
int x2 = 0; // переменная куда будет записываться новое число (к примеру: 999).
bool b = true; // переменная для выхода из цикла while
printf("Vvedite tseloe chislo: ");
scanf ("%d", &x); // вводим число
while (b)
{
temp = x/inc;
if (x/inc < 10) // ищем максимальную разрядность
b = false;
else inc = inc*10; // разрядность числа
sum++; // подсчет суммы количества чисел
}
for(int i = 0; i<sum; i++) // цикл изменения цисла к прим. 111 на 999
{
temp = x/inc;
x = x - temp*inc;
temp = 10 - temp; // изменяем 10 - число
x2 = x2 + temp*inc;
inc = inc/10; // уменьшаем разрядность
}
printf("Poluchenoe chislo: %d\n",x2);
printf("Kolichestvo chisel: %d",sum);
_getch();
return 0;
}
Результат работы программы:
Пример программы на языке СИ++ тоже написанный на Visual Studio 2010:
#include "stdafx.h"
#include "conio.h"
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
unsigned int x;
int inc = 1; // переменная для степени
int sum = 0; // подсчет суммы чисел
int temp; // переменная для вычислений
int x2 = 0; // переменная куда будет записываться новое число (к примеру: 999).
bool b = true; // переменная для выхода из цикла while
//readline(x);
std::cout<<"Vvedite tseloe chislo: ";
std::cin>>x; // вводим число
while (b)
{
temp = x/inc;
if (x/inc < 10) // ищем максимальную разрядность
b = false;
else inc = inc*10; // разрядность числа
sum++; // подсчет суммы количества чисел
}
for(int i = 0; i<sum; i++) // цикл изменения цисла к прим. 111 на 999
{
temp = x/inc;
x = x - temp*inc;
temp = 10 - temp; // изменяем 10 - число
x2 = x2 + temp*inc;
inc = inc/10; // уменьшаем разрядность
}
std::cout<<"Poluchenoe chislo: "<<x2<<"\n";
std::cout<<"Kolichestvo chisel: "<<sum<<std::endl;
_getch();
return 0;
}
Результат работы программы:
Итак, мы видим, что отличия почти нету.