Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
17 / 17 / 2
Регистрация: 16.06.2013
Сообщений: 94

Представьте число в виде суммы трех приблизительно равных натуральных чисел

16.06.2013, 13:52. Показов 5241. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание: Дано натуральное число k. Представьте его в виде суммы трех приблизительно равных натуральных чисел.
Вот такой код с горем пополам я наклепал :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
 
int _tmain(int argc, _TCHAR* argv[]);
 
using namespace std; 
int main() // С++-программа начинается с функции main().
{
 setlocale(LC_CTYPE, "rus"); // русский язык в консоли
    int k,a,b,c;
    cout << ("ВВедите натуральное число:  \n");
    cin >> k ;
    if (k <= 0) cout << (" Это не натуральное число!!\n");
    if(k > 0)
                { 
                    (a = k / 3 - 1); 
                    cout << ("Первое число:  ");
                    cout << a;
                    cout << ("\n");
                     (b = k / 3);
                    cout << ("Второе число:  ");
                    cout << b;
                    cout << ("\n");
                     (c = k / 3 + 1); 
                     cout << ("Третье число:  ");
                     cout << c;
                     cout << ("\n");
                }
 
 
 
system("pause"); 
return(0);
}
Принцип такой - если вписать число которое делится на 3 - то все в порядке. Все значения выдает как надо.
Если же число делится на 3 c остатком (скажем 100) - то раскладываются на числа 32,33 и 34, что в сумме выходит 99.
Как можно реализовать проверку и дополнение?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.06.2013, 13:52
Ответы с готовыми решениями:

Натуральное число представьте в виде суммы натуральных чисел
Сама задача: Натуральное число N &gt; 1 представьте в виде суммы натуральных чисел так, чтобы произведение этих слагаемых было максимально. ...

Натуральное число представить в виде суммы квадратов трех натуральных чисел
Доброго дня, товарищи-программисты. Имеется задача: «Дано натуральное число n. Можно ли его представить в виде суммы квадратов трех...

Можно ли представить число в виде суммы квадратов трех натуральных чисел
Дано натуральное число N. Можно ли его представить в виде суммы квадратов трех натуральных чисел

39
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.06.2013, 16:11
Студворк — интернет-сервис помощи студентам
ValeryS, спасибо инструкции типа !!a очень даже полезны, компилятор такое проглотит и не заметит, но можно и вариант (a != 0)
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
16.06.2013, 16:13
-=ЮрА=-, 3-й пост, я говорил о нём: Представьте число в виде суммы трех приблизительно равных натуральных чисел
0
16.06.2013, 16:18

Не по теме:

lazybiz, давай ещё поговрим кто на сколько написал контрольную в 3-м классе, лучше поправь свой код чтобы одинаковые цифры не генил

1
17 / 17 / 2
Регистрация: 16.06.2013
Сообщений: 94
16.06.2013, 16:22  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
да и прокомментировать, не все поймут что это за шаманство
было бы неплохо
А то я совсем сами понимаете...
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.06.2013, 16:23
Цитата Сообщение от darkstalker739 Посмотреть сообщение
было бы неплохо
посмотрите пост #5. если его поймете, то можно и этот прокомментировать
1
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
16.06.2013, 16:44
Ооочень сложное задание)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
using namespace std;
 
int main()
{
    int x; cin >> x;
    int a[3] = {x / 3, x / 3, x / 3};
    int i = 0;
 
    while ( a[0] + a[1] + a[2] < x ) {
        ++a[i % 3];
        ++i;
    }
 
    cout << x << " = " << a[0] << " + " << a[1] << " + " << a[2];
    return 0;
}
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
16.06.2013, 16:56
Olivеr, http://codepad.org/mdjh5Pe9
90 = 30 + 30 + 30
- суть задания генить близкие, но разные а не одинаковые числа,
Цитата Сообщение от darkstalker739 Посмотреть сообщение
Представьте его в виде суммы трех приблизительно равных натуральных чисел.
решение для разных чисел уже приведено в посте 16

твоё текущее решение ничем не лучше решения в посте 2
0
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
16.06.2013, 17:13
-=ЮрА=-, по заданию я понял, что числа должны отличатся не более чем на единицу.
Ладно, переделаем.
Вот мое решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
using namespace std;
 
int main()
{
    while (true) {
        int x; cin >> x;
        int a[3] = {x / 3, x / 3 - 1, x / 3 - 2};
        int i = 0;
        while ( a[0] + a[1] + a[2] < x ) {
            ++a[i % 3];
            ++i;
        }
        cout << x << " = " << a[0] << " + " << a[1] << " + " << a[2] << endl;
    }
    return 0;
}
Только ноль - это не натуральное число и для, например, 2 выдает 2 + 1 + -1
Изображения
  
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.06.2013, 17:16
Цитата Сообщение от Olivеr Посмотреть сообщение
по заданию я понял, что числа должны отличатся не более чем на единицу.

Не по теме:

так и есть, достаточно вспомнить метрическое пространство. в задании не сказано, что числа разные

0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
16.06.2013, 17:18
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
твоё текущее решение ничем не лучше решения в посте 2
Если на то пошло, то решение в посте № 16 тоже далеко не самое лучшее..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
using namespace std;
 
int main()
{
    int r, a;
    for ( int i = 3; i < 1000; i++ ) {
        r = i % 3;
        a = i / 3;
        cout << i << " = " << a - 1 << " + " << a + (r >> 1) << " + " << a + 1 + !!r << endl;
    }
    return 0;
}
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.06.2013, 17:26
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
int main()
{    
    int a, b = 3; //b - количество частей
    for (std::cin >> a; b; a -= a / b--)
        std::cout << a / b << ' ';
}
0
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
16.06.2013, 17:51
Вот еще вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
int main()
{
    while (true) {
        int x; cin >> x;
        int a[3] = { x / 3 + 1, x / 3, x / 3 - 1};
        a[0] += x % 3 ? 1 : 0;
        a[1] += x % 3 - 1 > 0 ? 1 : 0;
        cout << x << " = " << a[0] << " + " << a[1] << " + " << a[2] << endl;
    }
    return 0;
}
Миниатюры
Представьте число в виде суммы трех приблизительно равных натуральных чисел  
0
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
16.06.2013, 17:54
Что делать с числами <= 5 так и не понял

diagon, задание несколько другое
Взгляните на скриншот здесь Представьте число в виде суммы трех приблизительно равных натуральных чисел или тот, что выше
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
16.06.2013, 18:02
Olivеr, я не очень понял смысл твоего последнего сообщения, поясни.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Примечание для чисел n < 6 не существует a, b, с образующих тождественное равенство n = a + b + c {a != b != c}
0
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
16.06.2013, 18:09
-=ЮрА=-, я не знаю, что делать с числами n < 6. Выводить сообщение или оставить как есть (2 = 2 + 1 + -1)?
Причем -1 - не натуральное число.

Добавлено через 5 секунд
-=ЮрА=-, я не знаю, что делать с числами n < 6. Выводить сообщение или оставить как есть (2 = 2 + 1 + -1)?
Причем -1 - не натуральное число.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
16.06.2013, 18:12
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Примечание для чисел n < 6 не существует a, b, с образующих тождественное равенство n = a + b + c {a != b != c}
3 = 0 + 1 + 2
4 = 0 + 1 + 3
5 = 0 + 2 + 3
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
16.06.2013, 18:13

Не по теме:

Olivеr, забить на них, нет таких 3-х разных натуральных чисел в сумме дающих меньше 5



Добавлено через 47 секунд

Не по теме:

lazybiz, 0 не натуральное число

0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
16.06.2013, 18:14
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
lazybiz, 0 не натуральное число
С каких это пор?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
16.06.2013, 18:18
lazybiz, c тех пор когда придумали натуральные числа
Натуральные числа 1,2,3, ... - это числа, используемые для счета предметов или для указания порядкового номера того или иного предмета среди однородных предметов. Любое натуральное число можно записать с помощью десяти арабских цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Число 0 не является натуральным числом.
http://testmath.com.ua/(S(q2fb... 11_ru.aspx

http://shkolo.ru/naturalnyie-chisla/
пределение. Натуральные числа — это числа, используемые для счета предметов или для указания порядкового номера того или иного предмета среди однородных предметов.
Например: 3, 132, 68, 126, 548, 10050.
Натуральные числа, расположенные в порядке возрастания, образуют числовой ряд. Он начинается с наименьшего натурального числа — 1.
Хотя видимо кроме вики ничего не используешь
0
17 / 17 / 2
Регистрация: 16.06.2013
Сообщений: 94
19.06.2013, 15:47  [ТС]
для чисел меньше 6 я думаю смысла нет, т.к. необходимо представить число в виде суммы трех приблизительно равных. Для чисел меньше шести так не получится. Правда можно все это через отдельный цикл сделать. -=Юра=-, тебе отдельное спс.
Вопрос решен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.06.2013, 15:47

Можно ли представить число в виде суммы трех квадратов натуральных чисел?
Дано натуральное число n. Можно ли представить его в виде суммы трех квадратов натуральных чисел? Если можно, то укажите тройку x,y,z таких...

Определить, можно ли число представить в виде суммы квадратов трех натуральных чисел
Дано натуральные число n . Можно ли представить его в виде суммы трех квадратов натуральных чисел? Если можно то, а) указать тройку x,y,z...

Определить, можно ли представить число N в виде суммы кубов трех натуральных чисел
Определить можно ли представить заданное натуральное число N как сумму кубов каких-нибудь трех натуральных чисел n, m, k. ...

Определить, можно ли число представить в виде суммы квадратов трех натуральных чисел
Дано натуральные число n . Можно ли представить его в виде суммы трех квадратов натуральных чисел? Если можно то, а) указать тройку x,y,z...

Определить, можно ли представить число в виде суммы трёх квадратов натуральных чисел
Помогите, пожалуйста, решить задачу. Дано натуральное число n. Можно ли представить его в виде суммы трёх квадратов натуральных чисел?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru