Непонятная инициализация данных многомерного массива
Вообще программа для проверки принадлежности булевой функции к классам поста, все остальное, кроме описаного ниже работает как надо вроде.
Фрагмент кода на скриншоте должен присваивать первому массиву многомерного массива "polinom" значения введенной пользователем строки "function". Для наглядности добавил вывод присвоенного значения, должно выводить 0101, а выводит - 1 49 48 49, в чем моя ошибка, может в преобразовании типов string в int, или ошибка где-то в коде и я просто проглядел. гпт спрашивал - отвечает не по делу и бесполезные советы дает. Для полноты приложу полный код:
[spoiler]
/*Написати програму визначення приналежності системи булевих функцій до класів
Посту.Вхідні дані - кількість функцій, кількість змінних, значення булевих функцій.
Вихідні дані - поліном Жегалкіна, критеріальна таблиця*/
#include <iostream>
#include <string>
#include <bitset>
#include <algorithm>
using namespace std;
void post(string function)
{
//T0
if (function[0] = 1)
{
cout << endl << "T0 - Negative";
}
else
cout << endl << "T0 - Positive";
//T1
if (function[function.length()] = 0)
{
cout << endl << "T1 - Negative";
}
else
cout << endl << "T1 - Positive";
//L
int** polinom = new int* [ function.length()] ; //динамічний масив для звереження даних трикутника ньютона
for (int q= 0; q < function.length(); q++)
{
polinom[q] = new int[function.length() - q];
//cout << polinom[q] << " "; //ячейки памяти оно присваивает разніе
}
for (int w = 0; w < function.length(); w++) //заповнення першого рядка трикутника
{
polinom[0][w] = function[w]; //stoi(function[w]); //string(1, function[w]); //static_cast<string>(function[w]); //function[w];
//cout << function[w] << " ";
cout << polinom[0][w] << " "; //вот тут откудато 49 47 взялись
}
for (int i = 0; i < function.length(); i++)
{
for (int n = 0; n < (function.length() - i); n++) //заповнення інших рядків трикутника
{
//cout << endl << polinom[i][n]; //какаято фигня с памятью видно тут в консоли
if (polinom[i][n] != polinom[i][n+1])
{
polinom[i][n] = 1;
}
else
polinom[i][n] = 0;
}
}
cout << endl << "Polynomical vector: ";
for (int e = 0; e!= function.length(); e++) //для виводу левой стороны треугольника
{
cout << polinom[e][0] ;
}
int count = 0;
cout << endl;
int e;
for (e = 0; e != function.length(); e++) //для виводу левой стороны треугольника
{
//cout << endl << polinom[e][0] << endl;
if (polinom[e][0] == 1)
{
bitset<4> binary(e);//binary(polinom[e][0]); //тут какаято фигня с записю в массив
cout << binary << "(+)";
count++;
}
}
if (count > 1)
{
cout << endl << "L - Negative";
}
else
cout << endl << "L - Positive";
//M
int count2 = 0;
for (int t = 0; t < function.length(); t += 2)
{
if (function[t] > function[t + 1])
count2++;
}
if (count2 > 0)
cout << endl << "M - Negative";
else
cout << endl << "M - Positive";
//S
string copy = function;
reverse(copy.begin(), copy.end()); //перевернути вектор
for (int r = 0; r != function.length(); r++) //инверсувати
{
if (copy[r] == 1)
copy[r] = 0;
else
copy[r] = 1;
}
if (copy == function)
cout << endl << "S - Positive";
else
cout << endl << "S - Negative";
}
int main()
{
int amount;
cout << endl << "Type amount of bool functions: ";
cin >> amount;
string function;
while (amount != 0)
{
cout << endl << "Enter bool function: ";
cin >> function;
//cout << function.length();
if ( function.length() != 4 && function.length() != 8 && function.length() != 16 )
{
cout << "Wrong vector size ";
main();
}
post(function);
amount--;
}
}
[/spoiler]
