Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

У Дейтлов есть задача
Цитата:
Напишите программу, которая определяет и печатает все совершенные числа в диапазоне от 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, 22:32   #2
Гром
Профессионал
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
Репутация: 473

icq: 482-373-277
По умолчанию

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

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

icq: 458-666-144
По умолчанию

а что мешает вывести сомножители прямо в цикле?
Код:
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 вне форума   Ответить с цитированием
Старый 25.03.2010, 00:04   #5
Гром
Профессионал
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
Репутация: 473

icq: 482-373-277
По умолчанию

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++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


15:28.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.