Форум программистов и сисадминов CyberForum.ru
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум Форум программистов > Форум C++ > Форум С++ для начинающих
Восстановить пароль Регистрация

Ответ Создать новую тему
 
Старый 25.11.2011, 11:31   #1
gobL1n
Новичок
 
Регистрация: 25.11.2011
Сообщений: 8
Репутация: 0 (0)
Задача. Совершенное число / С++ для начинающих

Дано натуральное число N. Если это сложно, заменить любую из его цифр (только одну) так, чтобы получилось максимальное совершенное число.
Старый 25.11.2011, 12:47   #2
Байт
Форумчанин
 
Аватар для Байт
 
Регистрация: 24.12.2010
Сообщений: 6,551
Репутация: 8318 (4539)
Лучшие ответы: 338
Задача. Совершенное число

Цитата Сообщение от gobL1n Посмотреть сообщение
Дано натуральное число N. Если это сложно, заменить любую из его цифр (только одну) так, чтобы получилось максимальное совершенное число.
Кто чего понял? Я - нет.
Другие темы раздела Форум начинающих программистов C++. Вопросы начинающих программистов по С++. Помощь студентам и школьникам в решении задач.
C++ Сортировка двумернного массива
Подскажите, пожалуйста, как правильно поставить условие в цикле, чтобы после ввода номер строки, компилятор проверял упорядочена ли выбранная строка, двумерного массива, по возрастанию/убыванию/не упорядочена, и выводить соответствующее сообщение) #include "iostream.h" #include "stdlib.h"...
C++ (подскажите в чем логическая ошибка в этом упражнении)
Упражнение 2.4 (подскажите в чем логическая ошибка в этом упражнении) Что делает следующий фрагмент кода? В чем состоит логическая ошибка? (Отметим, что операция взятия индекса () правильно применена к указателю pia. Объяснение этому факту можно найти в разделе 3.9.2.) int *pi = new int(10);...
Старый 25.11.2011, 12:57  [ТС]   #3
gobL1n
Новичок
 
Регистрация: 25.11.2011
Сообщений: 8
Репутация: 0 (0)
Задача. Совершенное число

Если это возможно, заменить любую из его цифр (только одну) так, чтобы получилось максимальное совершенное число.
Старый 25.11.2011, 13:02   #4
Thinker
Форумчанин
Эксперт C++
 
Аватар для Thinker
 
Регистрация: 26.08.2011
Сообщений: 3,819
Репутация: 4175 (2149)
Записей в блоге: 5
Лучшие ответы: 107
Задача. Совершенное число

Байт, совершенное число это когда оно совпадает с суммой своих делителей, не равных этому числу. Требуется путем замены не более одной цифры числа получить совершенное число и из всех таких возможных замен найти максимальное совершенное число.
Старый 25.11.2011, 13:02
Google
Объявления
Старый 25.11.2011, 13:07   #5
Байт
Форумчанин
 
Аватар для Байт
 
Регистрация: 24.12.2010
Сообщений: 6,551
Репутация: 8318 (4539)
Лучшие ответы: 338
Задача. Совершенное число

Цитата Сообщение от Thinker Посмотреть сообщение
Байт, совершенное число это когда оно совпадает с суммой своих делителей, не равных этому числу. Требуется путем замены не более одной цифры числа получить совершенное число и из всех таких возможных замен найти максимальное совершенное число.
из поста #3 я это кажется начал понимать. Что такое совершенное число, я догадываюсь. А вот из поста #1 я ничего понять не смог. Ладно, попробуем.
Старый 25.11.2011, 13:10   #6
Thinker
Форумчанин
Эксперт C++
 
Аватар для Thinker
 
Регистрация: 26.08.2011
Сообщений: 3,819
Репутация: 4175 (2149)
Записей в блоге: 5
Лучшие ответы: 107
Задача. Совершенное число

Цитата Сообщение от Байт Посмотреть сообщение
из поста #3 я это кажется начал понимать. А вот из поста #1 я ничего понять не смог.

Не по теме:

Там же одно и то же Понял, что вы пошутили

Старый 25.11.2011, 13:22   #7
Байт
Форумчанин
 
Аватар для Байт
 
Регистрация: 24.12.2010
Сообщений: 6,551
Репутация: 8318 (4539)
Лучшие ответы: 338
Задача. Совершенное число

Код C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int Sov(int n) 
{ int i, s;
for(i=1, s=0; i<=n; i++) if ((n%i)==0) s+=i;
if (s==n) return 1;
else return 0;
}
main()
{ int n, M; char s[20]. t[20];
M = -1;
strcpy(s, _argv[1]);
for(i=0; i<strlen(s); i++) {
 strcpy(t, s);
 for(j=0; j<10; j++) {
   t[i] = '0'+j;
   if (t[i] == s[i]) continue;
   n = atoi(t);
   if (Sov(n) && n> M) M = n;
 }
}
if (M > 0) printf("M=%d\n", M);
}
Вот как-то так.
Старый 25.11.2011, 13:32   #8
Thinker
Форумчанин
Эксперт C++
 
Аватар для Thinker
 
Регистрация: 26.08.2011
Сообщений: 3,819
Репутация: 4175 (2149)
Записей в блоге: 5
Лучшие ответы: 107
Задача. Совершенное число

Байт, рассматриваются собственные делители, поэтому
Код C++
1
for(i=1, s=0; i <= (n >> 1); i++)
Старый 25.11.2011, 13:41   #9
BRcr
Добрый человек
 
Аватар для BRcr
 
Регистрация: 03.02.2011
Сообщений: 3,318
Репутация: 2701 (1411)
Записей в блоге: 3
Лучшие ответы: 51
Задача. Совершенное число

Байт, а можете слегка прокомментировать вот эти строчки, что-то не могу никак врубиться
Код C++
1
2
3
4
5
6
strcpy(s, _argv[1]);
for(i=0; i<strlen(s); i++) {
 strcpy(t, s);
 for(j=0; j<10; j++) {
   t[i] = '0'+j;
   if (t[i] == s[i]) continue;
Старый 25.11.2011, 14:16   #10
Байт
Форумчанин
 
Аватар для Байт
 
Регистрация: 24.12.2010
Сообщений: 6,551
Репутация: 8318 (4539)
Лучшие ответы: 338
Задача. Совершенное число / С++ для начинающих

Код C++
1
2
3
4
5
6
7
// Считаю что число дается аргументом вызова программы "proga.exe 1234"
strcpy(s, _argv[1]);  // Копирую анализируемое число.
for(i=0; i<strlen(s); i++) {  // Перебираю все цифровые позиции числа
 strcpy(t, s);  // Просто копирую исходное число во временную строку
 for(j=0; j<10; j++) {  // Цикл по кол-ву цифр
   t[i] = '0'+j;  // Заменяю i-тую цифру
   if (t[i] == s[i]) continue; // Если цифра равна исходной, ничего не делаю. Так я понял условие
Добавлено через 1 минуту
Цитата Сообщение от Thinker Посмотреть сообщение
Байт, рассматриваются собственные делители, поэтому
Код C++
1
for(i=1, s=0; i <= (n >> 1); i++)
Вы совершенно правы!
И еще одна описочка - после s[20] не точка, а запятая
Старый 25.11.2011, 14:16
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Автор
С++ для начинающих Совершенное число
В линейном динамическом массиве уничтожить все совершенные числа. Совершенное число (сумма делителей = самому числу) Например 6 = 1 +2 +3
kaznachey1993
С++ для начинающих Совершенное число. Задача
Дано натуральное число N. Если это возможно, заменить любую из его цифр (только одну) так, чтобы получилось максимальное совершенное число.
gobL1n
Pascal ABC Функция: простое число, совершенное число, число Фиббоначи, евклид, Факториал, степень.
Срочно нужна ваша помощь. все программы на школьном компе и я их не помню. они нужны срочно.
mr.Gubaydullin
С++ для начинающих Совершенное число
Определить, является ли заданное натуральное число совершенным, т.е. равным сумме всех своих (положительных) делителей, кроме самого этого числа (например, совершенное число 6=1+2+3). #include <stdio.h> #include <stdlib.h> #include <math.h> #include <conio.h> int main() { int s=0,i=0,x;...
paRadoX-2
Pascal (Паскаль) совершенное число
Вводится натуральное число n. Определить, является ли оно совершенным. Например 6 - совершенное число, т.к 6=1+2+3
Василий-Робот
Опции темы

Текущее время: 19:50. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.