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

Нужно построить таблицу истинности по заданном логическому выражению. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверить, чередуются ли в массиве положительные и отрицательны элементы http://www.cyberforum.ru/cpp-beginners/thread1079077.html
Задача: Создать одномерный динамический массив размера n, где n вводит пользователь. Заполнить его случайными целыми числами в интервале от -100 до 100. Верно ли, что в нем положительные и отрицательные числа чередуются? Не могу придумать ничего дельного, чтобы это как-то проверялось. Может кто-то сможет подкинуть идейку или кинуть какой-нибудь фрагмент кода? Буду очень благодарен.
C++ Вычислить сумму последовательности из N элементов условие на картинке Дано натуральное n, действительные a1, a2,...,an С помощью рекурсивной функции вычислить сумму a1 * a2 + a2 * a3 + a3 * a4 + ... + an - 1 * an спасибо http://www.cyberforum.ru/cpp-beginners/thread1079061.html
командные строки N пары чисел C++
Составить программу, которая получает из командной строки N пар чисел (первым должна идти количество таких пар, а потом сами пары чисел). Сравнить числа в каждой паре и напечатать больше из них. честно говоря я вообще не поняла,что тут делать(( на украинском звучит условие так: Скласти програму, що отримує із командного рядка N пар чисел (першим повинна йти кількість таких пар, а потім самі...
C++ Поменять крайние цифры числа местами
Как решить данную задачу? Ввести трехзначное число a. Поменять крайние цифры числа местами. Спасибо за внимание!
C++ Открытие указанной папки при нажатии на кнопку http://www.cyberforum.ru/cpp-beginners/thread1079051.html
Всем доброго времени суток! Можно ли сделать так, что бы в программе при нажатии кнопки открывалась какая-либо указанная папка Windows?
C++ Ошибочный вывод массива через функцию Помогите исправить код... #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; const int size = 3; const int n = 2; подробнее

Показать сообщение отдельно
ruTwit
6 / 6 / 1
Регистрация: 04.10.2013
Сообщений: 92

Нужно построить таблицу истинности по заданном логическому выражению. - C++

23.01.2014, 00:49. Просмотров 627. Ответов 2
Метки (Все метки)

Нужно построить таблицу истинности по заданном логическому выражению. Но суть не в этом, а в том, что в конце программы выводится массив не повторяющихся букв до mo. Все вроде работает, но если дальше вывести какую-нибудь переменную вылетает ошибка.
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include "stdafx.h"
#include <iostream>
#include <sstream>
#include <string>
#include <stdlib.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Rus");
    string stroka;
    int n=0, m1=0, i, otkr=0, zakr=0, j, alf=0, p, logop=0, kolc=0, kollog=0, kolalf=0, g, p1=0;
    int ret, mo, number;
    char *c=new char [n];
    char *c1=new char[n];
    char *c2=new char[n];
    int *num1=new int[n];
    char B[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
    char D[5]={'&','+','-','!','`'};
    bool a=false, b=false, d=false, f=true, t=false, h=false;
    cout<<"Введите выражение"<<endl; getline(cin, stroka);
    m1=stroka.length();
    for (i=0; i<m1; i++)
    { 
        c[i]=stroka[i];
 
        if(c[i]=='('||c[i]==')')num1[i]=0; 
        for(j=0;j<=4;j++)
            if(c[i]==D[j])num1[i]=2;
        for(g=0;g<=25;g++)
            if(c[i]==B[g])num1[i]=1;
    }
    /*
    Блок ошибок:
    проверка количества скобок, 
    проверка правильности логических операций,
    проверка правильности написания алфавита
    проверка повторений
    */
 
    for (i=0; i<m1; i++)
    { 
        //проверка количества и правильности скобок
        if('('==c[i])otkr++;
        if(')'==c[i])zakr++;
        if(((c[i]=='(' && c[i+1]==')'))||((c[i]==')')&&(c[i+1]=='(')))
            kolc++;
    }
    if(otkr==zakr)a=true;
    //проверка правильности написания алфавита
    for(j=0;j<=25;j++)
    {
        for(i=0;i<m1;i++)
        {
            if(B[j]==c[i])alf++;
            //проверка повторений всех символов
            if(num1[i]==num1[i+1])f=false;
        }
    }
    //проверка правильности логических операций
    for(j=0;j<=4;j++)
        for(i=0;i<m1;i++)
            if(D[j]==c[i])logop++;
 
    if((a==true)&&((otkr+zakr+alf+logop)==m1)&&(kolc==0)&&(f==true))
    {
        cout<<endl<<"Выражение введено верно"<<endl;
        t=true;
        
    }
    else
    {
        cout<<endl<<"Выражение введено неверно"<<endl;
        t=false;
    }
    
    //блок решения
    if(t==true)
    {
        p1=0;
        j=0;
        p=0;
        //нахождение всех символов из алфавита
        for(i=0;i<m1;i++)
        {
            for(j=0;j<=25;j++)
                if(c[i]==B[j])
                {
                            c1[p1]=B[j];
                            p1++;
                }
        }
        //нахождение раличных символов из алфавита
        
        number=p1;
        ret=0;
        mo=0;
        //сортировка по возрастанию
        char buf;
    for(i=0;i<=p1-2;i++)
     {
      for(j=i+1;j<=p1-1;j++)
     {
        if(c1[i]>c1[j])
         { buf=c1[j];
           c1[j]=c1[i];
           c1[i]=buf;
         }
      }
    }
 
    
    for(i=0;i<p1;i++)
    {
         if((c1[i]!=c1[i+1])||((c1[i]!=c1[i+1])&&(p1==i+1))){c2[mo]=c1[i];mo++;}
    }
 
    for(i=0;i<mo;i++)
        cout<<c2[i]<<" ";
    
    cout<<endl;
    
    /*здесь ошибка вывода, хотя выше цикл с этой переменной работает нормально*/
    cout<<mo;
    }
 
    return 0;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru