70 балов. Напишите программу ** С++ которая решает даную задачу: Пользователь вводит два...

0 голосов
58 просмотров

70 балов. Напишите программу на С++ которая решает даную задачу:
Пользователь вводит два числа.
Определить, делится ли первое число на второе без остатка. Если нет вівести ближайшее целое число,
удовлетворяющее условие


Информатика (909 баллов) | 58 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Файл с исходным кодом прикреплен в описании, код продублирован в коментариях к ответу. Если есть вопросы - пиши в коменты.

Код полностью прокоментирован, надеюсь будет понятно.

(1.4k баллов)
0

//-----------------------------------------------------------------------------
bool isNumberDividedWhole(const int& a, const int& b)
//-----------------------------------------------------------------------------
{
//Если остаток от деления a на b равен 0, значит делится нацело
//0 - константа, всегда слева в сравниваевом выражении
return (0 == a % b);
}

0

//функция поиска ближайшего делителя
//-----------------------------------------------------------------------------
int getNearIntegerDivider(const int& a, const int& b)
//-----------------------------------------------------------------------------

0

{
int searchValue; //исковомое значение будем хранить тут
int lessDivider; //тут храним значение искомого делителя двгаясь влево
int largeDivider; //тут храним значение искомого делителя двгаясь вправо
bool isNumberDivided; //хранит значение, делится ли нацело числа

lessDivider = b;
largeDivider = b;
searchValue = b;
isNumberDivided = isNumberDividedWhole(a, b);

0

//если числа делятся нацело, вычесления производится не будут
while(!isNumberDivided)
{
if (0 == (a % lessDivider)) //если найден делитель на цело меньше числа
{
searchValue = lessDivider; //присвоить искомому его значение
break; //выйти из цикла
}

0

if (0 == (a % largeDivider)) //если же найден делитель больше числа
{
searchValue = largeDivider; //присвоить искомому его значение тоже
break; //выйти из цикла
}

--lessDivider; //двигаемся от исходного делителя влево от числа
++largeDivider; //двигаемся в право от числа
}

return searchValue; //вернуть найденное значние
}

0

//основная функция программы
//-----------------------------------------------------------------------------
int main()
//-----------------------------------------------------------------------------
{
int firstNumber; //делимое
int secondNumber; //делитель

cout << "Enter number: ";<br> cin >> firstNumber; //вводим делимое

cout << "Enter divider: ";<br> cin >> secondNumber; //вводим делитель

0

if (isNumberDividedWhole(firstNumber, secondNumber))
{
cout << "Numbers divide whole." << endl; //если числа деляться нацело<br> }
else
{ //если же нет
cout << "Numbers not divide whole." << endl;<br> cout << "Near integer divider is: ";<br> //отискать ближайший делитель и вывести его
cout << getNearIntegerDivider(firstNumber, secondNumber);<br> cout << endl;<br> }

//ждать нажатия любой клавиши
system("pause");
//вернуть системе значение 0 - значит программа завершила работу корректно
return 0;
}

0

Спасибо за пометку лучший ответ и "спасибо")

0

извините что так долго)

0

ничего (: