Загрузка данных


#include <iostream>
#include <string>
#include <vector>
#include <cmath>

using namespace std;

string mybin(int num, int n)
{
    string result = "";
    for (int j = n - 1; j >= 0; --j)
    {
        if ((num >> j) & 1)
            result += "1";
        else
            result += "0";
    }
    return result;
}

void sdnf(int n, const string& f)
{
    cout << "sdnf:" << endl;
    if (f.length() < (1ULL << n))
    {
        cout << "Error! Invalid vector" << endl;
        return;
    }

    vector<string> vec;

    for (int i = 0; i < f.length(); i++)
    {
        if (f[i] == '1')
        {
            vec.push_back(mybin(i, n));
        }
    }

    if (vec.empty()) {
        cout << "СДНФ не существует (функция тождественный 0)" << endl;
        return;
    }

    for (size_t i = 0; i < vec.size(); i++)
    {
        for (int j = 0; j < n; j++)
        {

            if (vec[i][j] == '1')
                cout << 'X' << j + 1;
            else
                cout << 'x' << j + 1;
        }
        if (i != vec.size() - 1)
            cout << " v ";
    }
    cout << endl;
}

void sknf(int n, const string& f)
{
    cout << "sknf:" << endl;
    if (f.length() < (1ULL << n))
    {
        cout << "Error! Invalid vector" << endl;
        return;
    }

    vector<string> vec;

    for (int i = 0; i < f.length(); i++)
    {
        if (f[i] == '0')
        {
            vec.push_back(mybin(i, n));
        }
    }

    if (vec.empty()) {
        cout << "СКНФ не существует " << endl;
        return;
    }

    for (size_t i = 0; i < vec.size(); i++)
    {
        cout << '(';
        for (int j = 0; j < n; j++)
        {

            if (vec[i][j] == '0')
                cout << 'X' << j + 1;
            else
                cout << 'x' << j + 1;

            if (j != n - 1)
                cout << " v ";
        }
        cout << ')';
    }
    cout << endl;
}

//void minim(int n , const string& f) 
//{
    
//}

int main()
{
    setlocale(LC_CTYPE, "rus");
    int n;
    if (!(cin >> n)) return 0;

    cin.ignore(); 
    string f;
    getline(cin, f);

    sdnf(n, f);
    sknf(n, f);

    return 0;
}