Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
aravika08
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 2
#1

закодировать логическую функцию, и реализовать алгоритм вычисления для нее - C++

18.11.2012, 22:22. Просмотров 478. Ответов 1
Метки нет (Все метки)

Всем доброго времени суток! мне дали задание - оно во вложенной картинке.

вот мой код, в нем ошибка, вроде бы связана с адресами...я не уверена что все правильно делаю - преподаватель говорит, что можно обойтись одним массивом, тем, где задается логическая функция, а для формирования наборов и ее вычисления - сделать 2 функции.
поможете разобраться?(

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream.h>
#include <math.h>
 
int n,i,j,k,kon,zn,flag;
 
 
void main()
 
{
 
cout<<"vvedite chislo peremennix"<<endl;
cin>>n;
 
int* a=new int[n];
 
int **b;
b=(int**)malloc((unsigned int)(pow(2,n)*sizeof(int*)));
 
for (i=0;i<pow(2,n);i++)
  b[i]=(int*)malloc(n*sizeof(int));
 
 
        for(k=0;k<=n;k++)
        {
        cout<<"vvedite DNF"<<endl;
         cin>>a[k];
         if (a[k]==n+1) kon=k;
        }
        for (i=0; i<pow(2,n); i++){
                 cout<<endl;
                for (j=0; j<n; j++){
                b[i][j] = (i>>(n-j-1))&1;
                cout<<b[i][j];
                }}
flag=0;
 
  for (i=0; i<pow(2,n); i++){
    cout<<"zn="<<zn<<endl;
        for (k=0;k<=n;k++)   {
         for (j=0; j<n; j++)
 
        {
        if (((a[k]<0)&&(b[i][j]==1))||((a[k]<0)&&(b[i][j]==0)))
        {
                zn=0;
                if (a=0)
                {
                k=kon;
                }
                flag=1;
 
                }
        else
                zn=1;
 
 
        }
                                }
                                }
 
 
 
 
 
 
}
Миниатюры
закодировать логическую функцию, и реализовать алгоритм вычисления для нее  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2012, 22:22     закодировать логическую функцию, и реализовать алгоритм вычисления для нее
Посмотрите здесь:

Реализовать функцию для вычисления выражения по заданной формуле - C++
Составьте программу вычисления числа сочетаний из N по М. Число сочетаний определяется по формуле: с=n!/m!*(n-m)! , где n!=1∙2∙3∙…∙n....

Реализовать рекурсивную функцию для вычисления значений функции - C++
Реализовать рекурсивную функцию для вычисления значений функции. Я не понимаю что и как с этой системой делать! P.S. &quot;якщо&quot; по русски...

Реализовать функцию для вычисления тригонометрического выражения по заданной формуле - C++
Добрый день, по условию (фото) я составил функцию,но выдается ошибка,в чем проблемка:? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Реализовать алгоритм вычисления полинома n-й степени - C++
Реализовать алгоритм вычисления полинома n-й степени.

Реализовать рекурсивный алгоритм вычисления выражения - C++
Доброго времени суток форумчане. Столкнулся с проблемой реализации рекурсивного алгоритма. Задание звучит следующим образом: С клавиатуры...

Реализовать рекурсивный алгоритм вычисления значений функции - C++
Где ошибка? #include&quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int f(unsigned int m, unsigned int n) { if...

Реализовать циклический алгоритм вычисления сумм корней из двух - C++
Практическая работа №3 Циклические алгоритмы. Вариант 4. Найти значение суммы \sqrt{2+\sqrt{2+\sqrt{2+...\sqrt{2}}}} , где n &gt;...

Реализовать функцию вычисления симметричной разности множеств - C++
Помогите пожалуйста, не знаю как симметрическую разность сделать. Должно вывести 0 1 7 8 9 15 40 #include &lt;iostream&gt; int...

Реализовать функцию вычисления суммы элементов заданного диапазона - C++
Функция вычисления суммы элементов диапазона .

Написать программу, в которой реализовать функцию вычисления синуса - C++
В общем решаю задачи по книге в с++ В главе был разобран пример функции, для вычисления гиперболического синуса по формуле: sh(x) =...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
19.11.2012, 12:04     закодировать логическую функцию, и реализовать алгоритм вычисления для нее #2
Цитата Сообщение от aravika08 Посмотреть сообщение
C++
1
2
3
int* a=new int[n];
int **b;
b=(int**)malloc((unsigned int)(pow(2,n)*sizeof(int*)));
не советую использовать вместе 2 этих оператора
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
int* vvod(int n){
    cout<<"vvedite DNF bez probeov: ";
    char buf[1000];
    cin>>buf;
    int n1=0,i=0,j=0,buf1[1000],*mas;
    bool fl=false;
    while(buf[i]!='\0'){
        if(buf[i]>='0'&&buf[i]<='9'||buf[i]=='-'){
            if(buf[i]=='-'){
                i++;
                fl=true;
            }
            if(buf[i]>='0'&&buf[i]<='9'){
                buf1[j]=buf[i]-'0';
                if(fl)
                    buf1[j]*=-1;
                fl=false;
                j++;
            }
        }
        i++;
    }
    mas=new int[j+1];
    mas[0]=j+1;
    for(int i=1;i<j+1;i++){
        mas[i]=buf1[i-1];
        if(mas[i]>n+1)
            fl=true;
    }
    if(fl)
        cout<<endl<<"Zapis' bila zapisana neverno vozmogni oshibki"<<endl;
    return mas;
}
char* deshifr(int *mas,int n){
    char buf[1000];
    int n1=0;
    for(int i=1;i<mas[0];i++){
        if(mas[i]==n+1){
            buf[n1++]='v';
            i++;
        }
        if(mas[i]<0)
            buf[n1++]='#';
        buf[n1++]='x';
        buf[n1++]=abs(mas[i])+'0';
    }
    char *str=new char[n1+1];
    for(int i=0;i<n1;i++)
        str[i]=buf[i];
    str[n1]='\0';
    return str;
}
void main(){
    char *str;
    cout<<"vvedite chislo peremennix: ";
    int n,*mas;
    cin>>n;
    mas=vvod(n);
    str=deshifr(mas,n);
    cout<<endl<<"Logicheskaya funkciya: "<<str<<endl;
    delete[] mas;
    delete[] str;
}
Добавлено через 6 минут
единственное что данная программа сильно уязвима на неправильный ввод. + будет неправильный вывод если использовать более 9 переменных + нельзя составлять сложное отрицание как например http://www.cyberforum.ru/cgi-bin/latex.cgi?\bar{\bar{a}b} и тому подобных. ну и возможные прочие ошибки связанные с неправильным вводом
Yandex
Объявления
19.11.2012, 12:04     закодировать логическую функцию, и реализовать алгоритм вычисления для нее
Ответ Создать тему
Опции темы

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