Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
mansp
18 / 18 / 7
Регистрация: 07.11.2010
Сообщений: 136
1

Перебор возможных значений для трёх чисел

09.04.2012, 22:43. Просмотров 1128. Ответов 11
Метки нет (Все метки)

Доброго времени суток.
Нужно перебрать все возможные значения трёх чисел. их сума равна 1. перебрать нужно с шагом 0,01, например 0,01 0,01 0,98 .
Заранее благодарен за помощь
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2012, 22:43
Ответы с готовыми решениями:

Перебор всех значений трёх булевых переменных
Вобщем мне надо проверить функцию на тавтологию, для этого как я понимаю надо проверить чтобы...

Перебор всех возможных подмножеств множества целых чисел
Всем привет)))) Пожалуйста, помогите решить задачку!!!!! Очень нужно, срочно!!! Программа...

Перебор всех возможных подмножеств заданного множества целых чисел
Помогите решить задачу. Есть заданное множество целых чисел: -1 0 1. Нужно перебрать все возможные...

написать программу кальуклятор, для вычисления по запросу пользователя одной формулы из трёх возможных
перед началом работы программа формирует информационное сообщение, в котором перечисляются...

Организовать перебор всех возможных сочетаний
Затрудняюсь с алгоритмом. Как можно организовать перебор всех возможных группировок? Имеется...

11
Nekto
343 / 288 / 37
Регистрация: 23.03.2012
Сообщений: 838
10.04.2012, 01:18 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
int main()
{
 float i,j,k;
 for (i=0;i<=100;i++)
  for (j=0;j<=100-i;j++)
   {
    k=100-i-j;
    std::cout<<i/100<<' '<<j/100<<' '<<k/100<<std::endl;
   }
 system("pause");
 return 0;
}
Добавлено через 52 минуты
только начальные значения 0 надо, а не 1. Исправил.
1
zss
Модератор
Эксперт С++
8431 / 7462 / 4618
Регистрация: 18.12.2011
Сообщений: 19,734
Завершенные тесты: 1
10.04.2012, 08:43 3
А почему бы не сразу с шагом 0.01
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 int main()
{
 float i,j,k;
 for (i=0;i<=1.;i+=0.01)
  for (j=0;j<=1.0-i;j+=0.01)
   {
    k=1.0-i-j;
    std::cout<<i<<' '<<j<<' '<<k<<std::endl;
   }
 system("pause");
 return 0;
}
1
Nameless One
Эксперт С++
5797 / 3446 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
10.04.2012, 09:41 4
Цитата Сообщение от zss Посмотреть сообщение
А почему бы не сразу с шагом 0.01
потому, что такое представление неточно
0
10.04.2012, 09:41
Evg
Эксперт CАвтор FAQ
20218 / 7778 / 596
Регистрация: 30.03.2009
Сообщений: 21,732
Записей в блоге: 30
10.04.2012, 10:12 5
Nameless One, но ведь в печати

C++
1
std::cout<<i/100<<' '<<j/100<<' '<<k/100<<std::endl;
тоже родятся неточные числа. Какая разница, сразу их рожать, или в момент печати?
0
Nekto
343 / 288 / 37
Регистрация: 23.03.2012
Сообщений: 838
10.04.2012, 15:39 6
Цитата Сообщение от Evg Посмотреть сообщение
Nameless One, но ведь в печати

C++
1
std::cout<<i/100<<' '<<j/100<<' '<<k/100<<std::endl;
тоже родятся неточные числа. Какая разница, сразу их рожать, или в момент печати?
Неточность меньше
ЗЫ сначала с шагом 0.01 делал
0
Evg
Эксперт CАвтор FAQ
20218 / 7778 / 596
Регистрация: 30.03.2009
Сообщений: 21,732
Записей в блоге: 30
10.04.2012, 15:50 7
Я всё к тому, что логичнее вместо i/100 печатать что-то типа cout << "0." << i. Т.е. плавающее число именно рисовать (с учётом эффектов типа нужного дополнительного нуля и т.п.)

Добавлено через 57 секунд
Кстати, "i/100" работать не будет - это же цеслочисленное деление
0
Nameless One
Эксперт С++
5797 / 3446 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
10.04.2012, 15:56 8
Цитата Сообщение от Evg Посмотреть сообщение
Кстати, "i/100" работать не будет - это же цеслочисленное деление
там вообще i, j, k были float
0
Evg
Эксперт CАвтор FAQ
20218 / 7778 / 596
Регистрация: 30.03.2009
Сообщений: 21,732
Записей в блоге: 30
10.04.2012, 16:13 9
Цитата Сообщение от Nameless One Посмотреть сообщение
там вообще i, j, k были float
Угу. Что-то у меня потемнение в глазах было Специально посмотрел, но почему-то увидел "int"
0
talis
10.04.2012, 16:18
  #10

Не по теме:

Кстати вот вопрос: по-хорошему операция деления менее эффективна, чем операция умножения на число с плавающей точкой (или это относится только к целочисленному делению?). Не лучше ли записать i * 0.01?

0
easybudda
Модератор
Эксперт JavaЭксперт CЭксперт С++
10546 / 6252 / 1568
Регистрация: 25.07.2009
Сообщений: 11,910
10.04.2012, 16:23 11
Цитата Сообщение от Evg Посмотреть сообщение
логичнее вместо i/100 печатать что-то типа cout << "0." << i. Т.е. плавающее число именно рисовать (с учётом эффектов типа нужного дополнительного нуля и т.п.)
Я бы тоже так делал. По сути задача ни чем не отличается от перебора трёх целочисленных слагаемых, дающих в сумме 100, просто тумана напустили немного.
0
Evg
Эксперт CАвтор FAQ
20218 / 7778 / 596
Регистрация: 30.03.2009
Сообщений: 21,732
Записей в блоге: 30
10.04.2012, 16:50 12
Цитата Сообщение от talis Посмотреть сообщение
Кстати вот вопрос: по-хорошему операция деления менее эффективна, чем операция умножения на число с плавающей точкой (или это относится только к целочисленному делению?). Не лучше ли записать i * 0.01?
Вопрос философский. 0.01 нельзя представить точно, в то время как 100.0 - можно. Хотя если не волнуют цифры в 7-8 знаке (или сколько там) после запятой, то умножение быстрее деления в разы
1
10.04.2012, 16:50
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2012, 16:50

Перебор возможных вариантов разреза трубы
Доброго времени суток! Есть задача:&quot;Вводится длина трубы, количество заготовок (1 .. 5), которые...

Реализовать перебор всех возможных IP-адресов (С++)
Реализовать перебор всех возможных IP-адресов, начиная с 0.0.0.0, заканчивая 255.255.255.0. (проще...

Перебор и вывод всех возможных сочетаний
Итак,здравствуйте форумчане. Привела меня к вам интересная задачка. Вводится слово,заранее не...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru