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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.61
NektaRR
1 / 1 / 1
Регистрация: 26.02.2011
Сообщений: 53
#1

Библиотека функций - C++

26.02.2011, 20:46. Просмотров 4107. Ответов 21
Метки нет (Все метки)

Может кто поможет!!
Язык С. Создать библиотеку функций для построения таблиц истинности булевых функций заданных КНФ и ДНФ. Пользователь вводит ДНФ или КНФ и при подключении BF.H (которую нужно создать..как? help!!) выводит табл истинности.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2011, 20:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Библиотека функций (C++):

Какая библиотека отвечает за использования математических функций в VS 2005? - C++
Какая библиотека отвечает за использования математических функций в VS 2005??

Итерационные циклы,Определение и вызов функций,Использование библиотечных функций stdio.h - C++
Помогите решить задания: 1.Дано натуральное число n. Найти разность между первой цифрой этого числа и суммой всех остальных. ...

Передача значений функций в главную программу, вызов функций - C++
Здравствуйте! Скорее всего, неправильно передаю значения функциям и в главную программу. Помогите найти ошибку! В итоге выводит...

Вызов функций внутри других функций - C++
#include "stdafx.h" #include "stdio.h" #include <iostream> #include <fstream> #include <iomanip> using namespace std; ...

Объявление функций внутри других функций - C++
Иногда вижу в некоторых исходниках на c объявление функций, внутри main. Например: main(){ double sum(int max_num); } ...

функции класса раздела private реализуються так же как и раздела public? в смысле виртуальных функций, дружественных функций, и т.д. - C++
функции класса раздела private реализуються так же как и раздела public? в смысле виртуальных функций, дружественных функций, и т.д.

21
NektaRR
1 / 1 / 1
Регистрация: 26.02.2011
Сообщений: 53
27.02.2011, 00:38  [ТС] #16
Цитата Сообщение от silent_1991 Посмотреть сообщение
Что сперва надо посчитать значение в левой скобке, потом в правой, а потом выполнить их конъюнкцию. При этом посчитать выражения в скобках можно слева направо, поскольку там стоят одинаковые операции (точнее, операции с одним приоритетом). Так же там есть отрицания, их тоже надо учитывать. Вы это всё видите эмпирически. А вот как втолковать это компьютеру? Он никаких конъюнкций, отрицаний и скобок не знает. Так вот, для этого надо реализовывать специальный алгоритм, который простую строку переводит в определённую структуру данных, которую затем было бы легко разбирать алгоритмически (например, дерево). Вот это процесс и является основным в данной программе и достаточно громоздким.
...сложно..((
но вот эта прога откуда взят кусок для того bf.h что в начале работает и вроде правильно считает таблицу истинности только для одной заданой функции, может ее как то переделать для для любой вводимой кнф(днф)
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
#include <stdlib.h>
#include <stdio.h>
 
int main ()
{
    int x1, x2, x3, y;
        
    printf("x1|x2|x3| y\n");
    printf("-----------\n");
    for(x1=0; x1<2; x1++)
    {
        for(x2=0; x2<2; x2++)
        {
             for(x3=0; x3<2; x3++)
             {
                 y = ( (!x1 && x2) || (x1 && !x2) ) && (x3 || x1 && x2);
                 printf(" %i| %i| %i| %i\n", x1, x2, x3, y);
             };
        };
    };
        
    system ("pause");
    return 0;
}
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.02.2011, 00:44 #17
NektaRR, вы наотрез отказываетесь хоть чуть-чуть вдуматься в то, что вам пишут уже два человека несколько сообщений подряд. Отвечаю ещё раз:
Да, её можно переделать для любой вводимой функции. Но для этого нужно написать разбор выражения. А то вы хотите примерно так:
"- Этот автомобиль разгоняется до 200 за 6 секунд, но он стоит $200000. А вот этот до 70 за 20 секунд, но и стоит он 70000 рублей.
- Ой, а можно мне до 200 за 6 секунд, но только за 70 тысяч?"
0
NektaRR
1 / 1 / 1
Регистрация: 26.02.2011
Сообщений: 53
27.02.2011, 00:45  [ТС] #18
Цитата Сообщение от silent_1991 Посмотреть сообщение
нужен именно второй вариант, т.е. чтобы пользователь сам вводил функцию любой сложности, и программа её обрабатывала
там как по мне нужны проверки :
что первый символ х или !
что нет пробелов
что символы только х,0..9, и знаки которыми обозначаються дизъюнкции и конъюнкции (п.с. какими знаками обозначать правильно?)
ну и .. больше не придумаю
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.02.2011, 00:47 #19
NektaRR, ёшкин кот... Эти проверки нужны для синтаксического анализа. Но он вам ничего не даст кроме знания, что в функции нет синтаксических ошибок. Для лексического анализа (а значит и для, собственно, вычисления) нужен парсер, чёрт его дери!
0
NektaRR
1 / 1 / 1
Регистрация: 26.02.2011
Сообщений: 53
27.02.2011, 00:51  [ТС] #20
silent_1991, ОК!
можно пример дерева?
это моя третяя програма на С!! HELP!! пожалста!!
0
Ma3a
Эксперт С++
618 / 462 / 31
Регистрация: 28.01.2011
Сообщений: 605
27.02.2011, 01:01 #21
Выделить лексемы особого труда в данном случае не должно составить, а по поводу вычислений можно посмотреть посмотреть в сторону обратной польской нотации, благо примеров кода в сети предостаточно http://algolist.manual.ru/maths/misc/revpn.php , в вашем случае задача будет полегче, ибо реализовывать придется лишь конъюнкцию, дизъюнкцию, ну и скобки для уточнения приоритетов. Так выйдет явно легче, чем строить синтаксическое дерево в явном виде.
1
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.02.2011, 01:11 #22
Пример какого дерева? Вам нужно самому построить дерево исходя из анализа выражения. Например, анализируя выражение y = (x1 \/ !x2 \/ x3)/\(x1 \/ x2 \/ !x3), программа должна построить примерно такое дерево:

Код
        AND
        /\
       /  \
      /    \
     /      \
    /        \
   OR        OR
   /\        /\
  OR \      OR \
  /\  \     /\  \
 /  \  \   /  \  \
x1 !x2 x3 x1  x2 !x3
Но дерево - не панацея, существуют разные варианты разбора выражений. Подробнее - в гугл.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2011, 01:11
Привет! Вот еще темы с ответами:

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

Использование функций и шаблонов функций - C++
Люди помогите пожалуйста буду очень благодарна) вобщем вот первая часть лабы Написать программу, функция main которой включает...

Использование функций и шаблонов функций - C++
Составьте программу – формирование цены на молоко. Животновод в начале каждой зимы цену на молоко на р%, а каждым летом снижает на столько...

Библиотека С++ - C++
В общем, нужно написать программу для области &quot;Библиотека&quot;. Есть пару вопросов. Вот сам код программы: header: #include...


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

Или воспользуйтесь поиском по форуму:
22
Yandex
Объявления
27.02.2011, 01:11
Ответ Создать тему
Опции темы

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