Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2010, 21:21   #1
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию вывод слагаемых совершенного числа

У Дейтлов есть задача
Цитата:
Напишите программу, которая определяет и печатает все совершенные числа в диапазоне от 1 до 1000. Напечатайте сомножители каждого совершенного числа, чтобы убедиться, что число действительно совершенное.
Проверку на совершенность я организовал:
Код:
#include<iostream>
using namespace std;

#include<windows>

void perfect(int chislo); //ф-ция определяет, является ли число совершенным

int main()
{
   int chislo; //число, которое мы проверяем на совершенность. Вводит пользователь.

   for (chislo = 1; chislo <= 99999999; chislo++)
   {
      perfect(chislo);
   }

   system("pause");
   return 0;
}

void perfect(int chislo)
{
   int summaSomnozhitelej = 0;

   for (int i = 1; i < chislo; i++)
   {
      if (chislo % i == 0)
      {
         summaSomnozhitelej += i;
      }
   }

   if (chislo == summaSomnozhitelej)
   {
      cout << "Chislo " << chislo << " sovershennoe" << endl;
   }
}
А вот как сомножители вывести, понять не могу. Тут строки что ли нужно использовать?
fs444 вне форума Ответить с цитированием
Старый 17.03.2010, 21:32   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Можно строки, можно массивы int'ов. В первом случае либо stringstream, либо sprintf.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 24.03.2010, 20:09   #3
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию

Цитата:
Можно строки, можно массивы int'ов. В первом случае либо stringstream, либо sprintf.
Приведи, пожалуйста, хоть небольшой примерчик =)
fs444 вне форума Ответить с цитированием
Старый 24.03.2010, 22:50   #4
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

а что мешает вывести сомножители прямо в цикле?
Код:
int main()
{
   int chislo; //число, которое мы проверяем на совершенность. Вводит пользователь.

   for (chislo = 1; chislo <= 99999999; chislo++)
   {
      perfect(chislo);
   }

   system("pause");
   return 0;
}

void perfect(int chislo)
{
   int summaSomnozhitelej = 0;

   for (int i = 1; i < chislo; i++)
   {
      if (chislo % i == 0)
      {
         cout << i << " ";
         summaSomnozhitelej += i;
      }
   }
   cout << "\n";
   if (chislo == summaSomnozhitelej)
   {
      cout << "Chislo " << chislo << " sovershennoe" << endl;
   }
}

думаю создавать массив для 9999... чисел не разумно
NiCola999 вне форума Ответить с цитированием
Старый 24.03.2010, 23:04   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

sprintf:
Код:
char str[10];
int n = 1023 * 1025;
sprintf(str, "%d", n);
Не помню, можно ли дописывать в строку, но можно каждый раз писать во временную строку, потом дописывать ее в конец итоговой с помощью strcat.
stringstream:
Код:
ostringstream ost;
int a[N];
for (int i = 0; i < N; i++)
 ost << a[i] << ' ';
string s = ost.str();
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод Числа andresan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 18.11.2009 11:11
Вывод числа. L_M Общие вопросы Delphi 2 02.05.2009 22:04
Определение совершенного числа (Delphi) Lew27 Помощь студентам 1 26.04.2009 23:40
вывод числа sergei64_89 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 25.05.2008 21:35
Вывод числа lenivec Общие вопросы Delphi 3 10.02.2008 22:45