Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/43: Рейтинг темы: голосов - 43, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 55
1

Программа дискретная математика

10.09.2011, 21:04. Показов 7835. Ответов 45
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вообщем такая задача: нужно написать программу, которая выводит на экран комбинации из 10ти элементов множества, тоесть "10!"
например:
А1={1}
A2={2}
A3={3}
A4={1,2}
A5={1,3}
и так для 10ти элементов, тоесть 3628802 комбинации
натолкните на мысль, с чего начать)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2011, 21:04
Ответы с готовыми решениями:

Дискретная математика
Кароч парни не знаю как обьяснить......кароч есть число обозначим n,и есть k количество клеток на...

Дискретная математика
Здравствуйте! Помогите с зачетным задание! Вот оно: Дано несколько вершин, количество которых...

Дискретная математика
Напишите программу в C++ которая посчитает данную задачу...надо срочно .пожалуйста

дискретная математика
Применение дискретной математики в системах автоматизаций???

45
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 55
17.09.2011, 09:14  [ТС] 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от alkagolik Посмотреть сообщение
выброси компьютер . юмор
не нравится

у меня такого файла тоже нету
ошибка вылетает после ввода значения в консоль. может на визуалку будет что-то по-другому?
когда нажимаю "пропустить" выводятся значения:
Миниатюры
Программа дискретная математика  
0
Заблокирован
17.09.2011, 16:36 22
Цитата Сообщение от Breaknoise Посмотреть сообщение
может на визуалку будет что-то по-другому?
честно говоря не знаю, но следуя здравому смыслу так быть не должно, язык - то один для всех ОС. Есть товарищи кто с VS работает, может подскажет кто чего.
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
17.09.2011, 19:02 23
Смотрю никак задача не решена, я же в самом начале топика базовый алгоритм прописал Сформулируйте ЧЕТКО задачу, напишу разбиения на подмножества на чистом Си, думаю с компиляцией не возникнет проблем.

Добавлено через 5 минут
Держите вариант с вводимой строкой:

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
#include <stdio.h>
#include <string.h>
#define N 1000
 
void Print(char *a, int n)
{
   int i = 0;
   while (n)
   {
       if (n & 1)
          printf("%c ", a[i]);
       i++;
       n >>= 1;
   }
   printf("\n");
}
 
int main()
{
   int r, i;
   char a[N];
   puts("Enter a string:");
   scanf("%s", a);
   r = 1 << strlen(a);
   for (i = 0; i < r; i++)
      Print(a, i);
   return 0;
}
0
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 55
21.09.2011, 22:30  [ТС] 24
Четкая задача:
Пользователь должен ввести значения через запятую от 1 до 10 значений включительно. Программа должна вывести все возможные комбинации этих значений.
Например: пользователь вводит значения "1", "2", "3".
На экране:
{1} {2} {3} {1,2} {1,3} {2,3} {1,2,3}
0
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 55
21.09.2011, 22:36  [ТС] 25
Цитата Сообщение от Thinker Посмотреть сообщение
Смотрю никак задача не решена, я же в самом начале топика базовый алгоритм прописал Сформулируйте ЧЕТКО задачу, напишу разбиения на подмножества на чистом Си, думаю с компиляцией не возникнет проблем.

Добавлено через 5 минут
Держите вариант с вводимой строкой:

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
#include <stdio.h>
#include <string.h>
#define N 1000
 
void Print(char *a, int n)
{
   int i = 0;
   while (n)
   {
       if (n & 1)
          printf("%c ", a[i]);
       i++;
       n >>= 1;
   }
   printf("\n");
}
 
int main()
{
   int r, i;
   char a[N];
   puts("Enter a string:");
   scanf("%s", a);
   r = 1 << strlen(a);
   for (i = 0; i < r; i++)
      Print(a, i);
   return 0;
}
я, к сожалению, тут многое не понимаю.
Точнее это:
Print(), *а, printf, "%c ", puts(), strlen(), %s

я этих функций пока не учил и не знаю
выводит что-то непонятное:

Миниатюры
Программа дискретная математика  
0
Заблокирован
21.09.2011, 23:48 26
Цитата Сообщение от Breaknoise Посмотреть сообщение
я этих функций пока не учил и не знаю
а ты вообще что-то читал? вроде как все книги начинаются с ввода\вывода (scanf()\printf()). Открой что - то по языку Си, и начни читать, а главное писать программы. функция Print() самописная, строки 5 - 16.
выводит что-то непонятное
выводит булеан множества {"a", " . ", "c"}. Если непонятна какая-то функция, копируешь ее, вставляешь в поисковик и вперед (если она стандартная)
0
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 55
22.09.2011, 08:06  [ТС] 27
Цитата Сообщение от alkagolik Посмотреть сообщение
а ты вообще что-то читал? вроде как все книги начинаются с ввода\вывода (scanf()\printf()). Открой что - то по языку Си, и начни читать, а главное писать программы. функция Print() самописная, строки 5 - 16.

выводит булеан множества {"a", " . ", "c"}. Если непонятна какая-то функция, копируешь ее, вставляешь в поисковик и вперед (если она стандартная)
да, прочитал пол книжки Шилдт "C++. Руководство для начинающих"
0
Заблокирован
22.09.2011, 15:41 28
Цитата Сообщение от Breaknoise Посмотреть сообщение
да, прочитал пол книжки Шилдт "C++. Руководство для начинающих"
тут программа на Си, перепиши ввод\вывод на с++. стандартные функции поищи в поиске и найдешь к ним описание. функция strlen() есть и в с++, ищи тут
0
0 / 0 / 1
Регистрация: 18.09.2011
Сообщений: 77
04.12.2011, 21:58 29
Помогите сделать эту программу) Нужно на дискретную математику... Тут алгоритм нужен жестокий какой-то. Беспонятия как ее написать. Задача точно такая же как у автора.

Пользователь должен ввести значения через запятую от 1 до 10 значений включительно. Программа должна вывести все возможные комбинации этих значений.
Например: пользователь вводит значения "1", "2", "3".
На экране:
{1} {2} {3} {1,2} {1,3} {2,3} {1,2,3}
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.12.2011, 22:08 30
Достаточно ввести количество первых элементов из множества {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
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
#include<stdio.h>
#define N 10
 
void Print(int *a, int n)
{
   int i = 0;
   while (n)
   {
       if (n & 1)
          printf("%d ", a[i]);
       i++;
       n >>= 1;
   }
   putchar('\n');
}
 
int main()
{
   int n, r, i, a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
   printf("n = ");
   scanf("%d", &n);
   r = 1 << n;
   for (i = 0; i < r; i++)
      Print(a, i);
    return 0;
}
0
50 / 50 / 12
Регистрация: 22.05.2011
Сообщений: 326
04.12.2011, 22:14 31
А что значит
C++
1
n>>=1
и
C++
1
if(n&1)
?
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.12.2011, 22:16 32
n >>= 1 (целая часть при делении на 2, сдвиг всех бит на 1 позицию вправо)
n & 1 (значение последнего (младшего) бита числа n)
0
50 / 50 / 12
Регистрация: 22.05.2011
Сообщений: 326
04.12.2011, 22:35 33
То есть, другими словами (в десятичной системе счисления)
C++
1
%10
?
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.12.2011, 22:39 34
Цитата Сообщение от AncinetHero Посмотреть сообщение
То есть, другими словами (в десятичной системе счисления)
C++
1
%10
?
В двоичной системе n&1 как n%10 в десятичной системе
1
0 / 0 / 1
Регистрация: 18.09.2011
Сообщений: 77
04.12.2011, 23:02 35
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
#include<stdio.h>
#include<fstream>
#include<iostream>
#define N 15
using namespace std;
 ofstream File("ajaja.txt");
void Print(int *a, int n)
{
   cout<<"{";
   int i = 0;
   while (n)
   {
       if (n & 1)
          cout<<a[i]<<",";
          File<<a[i];
       i++;
       n >>= 1;
   }
   cout<<"}\n";
   File<<"\n";
}
 
int main()
{
    
   int n, r, i, a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
   cout<<"n = ";
   cin>>n;
   r = 1 << n;
   for (i = 0; i < r; i++)
      Print(a, i);
    system("pause");
        return 0;
}
немножко хотел переделдать. Сделал чтобы в файл выводился весь результат, ато если 15-оазмерное множество, то в консоль даже его малая часть не влезет.
но в файл выводится какая-то ерунда. при том что выведение на экран и в файл идут рядом, на экране правильный результат, а в файле вот такоедля 4-х)

1
12
12
123
123
123
123
1234
1234
1234
1234
1234
1234
1234
1234
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.12.2011, 23:04 36
C++
1
2
3
4
5
if (n & 1)
{
          cout<<a[i]<<",";
                  File<<a[i];
}
1
0 / 0 / 1
Регистрация: 18.09.2011
Сообщений: 77
04.12.2011, 23:11 37
Да недосмотрел, спасибо.
0
0 / 0 / 1
Регистрация: 18.09.2011
Сообщений: 77
04.12.2011, 23:34 38
Еще 2 лабораторная, если можете помочь. Задача похожая, но нужно сделать разбитие не на комбинации как тут а на возможные подмножества, как вот на примере: Есть множество (1,2,3,4,5,6)
Миниатюры
Программа дискретная математика  
0
0 / 0 / 1
Регистрация: 18.09.2011
Сообщений: 77
05.12.2011, 00:07 39
помогите плиз
0
Заблокирован
05.12.2011, 00:17 40
пример на рисунке вы сами писали? спрашиваю потому что программы этого топика итак разбивают множество на подмножества. Покажите дословно задание.
0
05.12.2011, 00:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2011, 00:17
Помогаю со студенческими работами здесь

Дискретная математика
Есть три программы по дискретной математике. Выложу сюда. Может кому-то пригодиться. До конца...

Дискретная математика. Графы
Задание: Разработать алгоритм решения задачи (согласно приведенной таблице заданий) и...

Дискретная математика (Отношения и функции)
Напишите пожалуйста программу по любой из этих задач: 1. На множестве А={1, 2, 3, 4, 5, 6}...

Сочетания без повторений, Комбинаторика, Дискретная математика
Помогите, пожалуйста, решить данную задачу на C++ или С. Задано натуральное число n&lt;=20 и...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru