указатели. динамическая память.

  • Автор темы francuz
  • Дата начала
F

francuz

Гость
#1
Дано натуральное число N. Найти наименьшее число М (N < M < 2N) которое делится на сумму цифр числа N (без остатка). Если такого числа нет, то вывести слово «нет». Пример. N = 12 345, М = 12360. Число 12 360 делится на число 15 — сумму цифр числа N.
 
L

lacrimosa

Гость
#2
Дано натуральное число N. Найти наименьшее число М (N < M < 2N) которое делится на сумму цифр числа N (без остатка). Если такого числа нет, то вывести слово «нет». Пример. N = 12 345, М = 12360. Число 12 360 делится на число 15 — сумму цифр числа N.

300 руб, если ещё актуально. В личку.
 
L

lacrimosa

Гость
#4
150 руб на электронные деньги и забирай готовую прогу (уже сделана).
 
P

patriot2008

Гость
#5
washitgton2006[at]rambler.ru - пиши, обсудим, сделаем
 

DarkKnight

Well-Known Member
01.08.2010
653
0
#6
#include <iostream>

using namespace std;

int main (void)
{
unsigned int N; // Натуральное число (вводимое)
unsigned int M = 0; //Получаемое по условию число
int SumCif = 0 ; //Сумма всех чисел в натуральном вводимом числе

cout<<"Vvod N: ";
cin>>N;// Ввод N;

int Iter = N; // Итратор для нахождения значений цифр в числе (введен только что бы сохранить искомое знаение N)
while (Iter > 9) // Пока Больше либо равно 10 (2 разряда)
{
SumCif += Iter % 10; //остаток от деления на 10
Iter /= 10; //Убираем оди зразрядж
}
SumCif+= Iter; //Последняя одноразрядная цифра

bool iResult = false; //Булевая переменная для отценки результата True - нашли число по заданию, false - числа не найдено
Iter = N+1; // по условию N < M < 2*N
while (Iter < 2*N)
{
if (Iter % SumCif == 0){ //Число должно делить без остатка на сумму всех чисел N
M = Iter; // Если такое найдено запишим его в M
iResult = true; // Переводим в true так как число мы нашли
break; //прерываем цикл
}
Iter++; //Инкр. переменую
}

cout<<endl;
(!iResult)? cout<<"NO" : cout<<"M = "<<M; //вывод результата
cout<<endl;

return 0;
}