Здравствуйте, знатоки C#!
У меня вот такой код, он для консоли, но я его переделываю для Windows Forms:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
int n = 10, k = 0;
bool key = false;
string[] str = new string[k];
while (n < 1 || n > 5)
{
Console.Clear();
Console.Write("Введите число переменных: ");
n = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("Значения функции: ");
string znach = Console.ReadLine();
if (znach.Length != (int)Math.Pow(2, n))
{
Console.WriteLine("Введено неверное колличество значений функции");
goto end;
}
for (int i = 0; i < (int)Math.Pow(2, n); i++)
if (Convert.ToInt32(znach[i]) < 49 && Convert.ToInt32(znach[i]) > 50)
{
Console.WriteLine("Введены недопустимые значения функции");
goto end;
}
for (int i = 0; i < (int)Math.Pow(2, n); i++)
if (znach[i] == '1')
{
k++;
Array.Resize<string>(ref str, k);
char[] chars = Convert.ToString(i, 2).PadLeft(n, '0').ToCharArray();
for (int j = 0; j < n; j++)
{
if (chars[j] == '0')
chars[j] = Convert.ToChar(97 + j);
if (chars[j] == '1')
chars[j] = Convert.ToChar(65 + j);
}
string strr = new string(chars);
str[k - 1] = strr;
}
foreach (string strng in str)
{
Console.Write(strng + " ");
}
Console.WriteLine();
while (!key)
{
key = true;
string[] ptr = new string[0]; //массив для склеек на данном этапе
int[] reuse = new int[str.Length]; //массив меток
for (int l = 0; l < reuse.Length; l++) //метка использования (был ли задействован кусок ДНФ на данной итерации)
{
reuse[l] = 0;
}
for (int i = 0; i < str.Length; i++) //попарно сравниваем
{
for (int j = i + 1; j < str.Length; j++)
{
if (str[i].Length == str[j].Length) //если длинв одинаковы то вперед
{
int sbnr = 20, sbcnt = 0, sbcntt = 0; //переменные для нахождения кол-ва различных знаков иномера знака с различием
char[] charsi = str[i].ToCharArray(); //конвертнем в массивы
char[] charsj = str[j].ToCharArray();
for (int l = 0; l < charsi.Length; l++)
{
if (Convert.ToInt32(charsi[l]) - Convert.ToInt32(charsj[l]) == 32)
{
sbnr = l;
sbcnt++;
}
if (charsi[l] == charsj[l])
{
sbcntt++;
}
}
sbcntt++;
if (sbcnt == 1 && sbcntt == charsi.Length) //если куски ДНФ различаются на 1 знак
{
for (int u = sbnr; u < charsi.Length - 1; u++)
{
charsi[u] = charsi[u + 1];
}
reuse[i] = 1;
reuse[j] = 1;
key = false;
Array.Resize<char>(ref charsi, charsi.Length - 1); //то удаляем его
}
string strr = new string(charsi);
if (ptr.Length == 0 && !key) //заносим получившуюся склейку в ptr
{
Array.Resize<string>(ref ptr, 1);
ptr[0] = strr;
key = true;
}
if (ptr.Length != 0 && !key) //если ptr уже содержит куски
{
for (int e = 0; e < ptr.Length; e++)
{
if (ptr[e] == strr)
{
key = true;
}
}
if (!key)
{
Array.Resize<string>(ref ptr, ptr.Length + 1);
ptr[ptr.Length - 1] = strr;
key = true;
}
}
} //конец склейки
}
}
for (int i = 0; i < reuse.Length; i++) //добавление кусков не участвовавших в склейке
{
if (reuse[i] == 0)
{
Array.Resize<string>(ref ptr, ptr.Length + 1);
ptr[ptr.Length - 1] = str[i];
}
if (reuse[i] == 1)
{
key = false;
}
}
Array.Resize<string>(ref str, ptr.Length); //переносим ptr в str
for (int i = 0; i < ptr.Length; i++)
{
str[i] = ptr[i];
}
foreach (string strng in str)
{
Console.Write(strng + " ");
}
Console.WriteLine();
} //едем на обратно на while
Console.WriteLine("А вот и ответ: ");
for (int i = 0; i < str.Length; i++)
{
if (!key)
Console.Write(" V ");
key = false;
Console.Write(str[i]);
}
end:
Console.Read();
}
}
}
И вопрос мой заключается в следующем: мне нужно переделать вывод работы данной программы таким образом, чтобы его(результат работы программы) можно было записать в виде одной строковой переменной, как можно реализовать данное действие?