@a63826ndrew
Студент, новичок в Python

Как мне переработать код для WinForms?

Здравствуйте, знатоки 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();
        }
    }
}

И вопрос мой заключается в следующем: мне нужно переделать вывод работы данной программы таким образом, чтобы его(результат работы программы) можно было записать в виде одной строковой переменной, как можно реализовать данное действие?
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Вам же посоветовал я же

Все вхождения

Console.Write("Введите число переменных: ");
Заменить на

var sb = new StringBuilder();
sb.AppendLine("Введите число переменных: ");
var result = sb.ToString();
File.WriteAllBytes(@"c:\temp\result.txt", result);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы