Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
31 / 15 / 7
Регистрация: 08.01.2019
Сообщений: 636

Как переделать код из консоли в форму

09.12.2019, 00:44. Показов 2663. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, написал код который работает так:
вводиться по паре чисел:
5 3 // тут тройка грубо говоря говорит количество следующих строк, так что вводим дальше еще три строки
2 5
3 1
3 2
//Следует вывод
No

Помогите сделать это в форме(допустим весь ввод через один большой TextBox, если есть другие идеи с их же реализацией с радостью впитаю полученные знания) , мои жалкие потуги:
Кликните здесь для просмотра всего текста
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
 public partial class HashForm : Form
    {
        public HashForm()
        {
 
            Show();
        }
        private void HashForm_Load(object sender, EventArgs e)
        {
            this.Show();
        }
 
        public void rebra(string text)
        {
            int n, m, ii = 0;
            //string text = Console.ReadLine();
            string[] words = text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            n = int.Parse(words[0]);
            m = int.Parse(words[1]);
            Console.WriteLine("{0}, {1}", n, m);
            Console.WriteLine();
 
            int k = 0;
            bool p = true;
            int[] v = new int[m];
            int[] g = new int[m];
            for (int i = 0; i < m; i++)
            {
                text = Console.ReadLine();
                words = text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                v[i] = int.Parse(words[0]);
                g[i] = int.Parse(words[1]);
            }
            while (p)
            {
                for (int j = ii + 1; j < m; j++)
                {
                    if ((v[ii] == v[j]) && (g[ii] == g[j]))
                    {
                        k++;
                        Console.WriteLine("YES"); // вывод хочу тоже сделать в форме, мб Лабель но тоже хз как реализовать
                        p = false;
                    }
                }
                ii++;
                if (ii == m) break;
            }
            if (k == 0) Console.WriteLine("NO");
        }
 
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
 
            Application.Run(new HashForm());
 
        }
    }


Добавлено через 3 часа 37 минут
Ребята, ну помогите плз
Я не знаю, что писать, чтобы выполнить эту задачу
C#
1
2
3
4
5
6
7
8
9
public HashForm()
        {
            ClientSize = new System.Drawing.Size(640, 480);
 
            Text = "Test";
            Load += HashForm_Load;
 
            Show();
        }
Это все к чему я пришел, просто создал пустую форму...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.12.2019, 00:44
Ответы с готовыми решениями:

Переделать код с консоли на форму
using System.Windows.Forms; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; ...

как переделать эту программу в форму Windows или вставить этот код PowerShell в форму Windows?
Как нам переделать программу, чтобы открыть XML-файл в форме Windows и прочитать значение процента после слова цены в файле MIK_RT.xml и...

Переделать из консоли в форму
Имеется консольная программа для расчета длины и площади окружности через радиус, который человек сам вводит. Как мне оформить её через...

12
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
09.12.2019, 02:47
оформите ваш код в виде функции, далее в форме просто используйте функцию вашу при вводе текста или нажатии на Enter или вообще на кнопку
0
31 / 15 / 7
Регистрация: 08.01.2019
Сообщений: 636
09.12.2019, 09:20  [ТС]
Я пытался переделать код под textBox1 но у меня не вышло ошибки при конвертации первые в очереди:
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
private void button1_Click(object sender, EventArgs e)
        {
            rebra(textBox1.Text);
        }
        public void rebra(String text)
        {
            int m, ii = 0;
            String[] words = textBox1.Text.Split(new String[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            _ = int.Parse(Convert.ToString(words[0]));
            m = int.Parse(Convert.ToString(words[1]));
 
 
            int k = 0;
            bool p = true;
            int[] v = new int[m];
            int[] g = new int[m];
            for (int i = 0; i < m; i++)
            {
                words = textBox1.Text.Split(new String[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                v[i] = int.Parse(words[0]);
                g[i] = int.Parse(words[1]);
            }
            while (p)
            {
                for (int j = ii + 1; j < m; j++)
                {
                    if ((v[ii] == v[j]) && (g[ii] == g[j]))
                    {
                        k++;
                        textBox1.Text = "Yes";
                        p = false;
                    }
                }
                ii++;
                if (ii == m) break;
            }
            if (k == 0) textBox1.Text = "NO"; 
        }
Добавлено через 1 час 32 минуты
Yury Komar, Вроде реализовать получилось
Кликните здесь для просмотра всего текста
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
private void button1_Click(object sender, EventArgs e)
        {
            rebra();
        }
       
        public void rebra()
        {
            int m, ii = 0;
            int k = 0;
            bool p = true;
            String text = textBox1.Text;
            String[] words = text.Split(new char[] { '\n',' ', '\r' }, StringSplitOptions.RemoveEmptyEntries);
            try
            {
                //_ = int.Parse(words[0]);
                m = int.Parse(words[1]);
                int[] v = new int[m];
                int[] g = new int[m];
                for (int i = 0; i < m; i++)
                {
                    words = textBox1.Text.Split(new char[] { '\n', ' ', '\r' }, StringSplitOptions.RemoveEmptyEntries);
                    v[i] = int.Parse(words[0]);
                    g[i] = int.Parse(words[1]);
                }
                while (p)
                {
                    for (int j = ii + 1; j < m; j++)
                    {
                        if ((v[ii] == v[j]) && (g[ii] == g[j]))
                        {
                            k++;
 
                            textBox1.Text = "Yes";
                            p = false;
                        }
                    }
                    ii++;
                    if (ii == m) break;
                }
                if (k == 0) textBox1.Text = "NO";
            }
            catch(Exception e)
            {
                MessageBox.Show($"{e}");
            }
   
            
        }

Но есть проблема, вот к примеру пары чисел из поста1 там следует вывод "НЕТ", а у меня сейчас выводит "ДА", точнее чтобы я не ввел выводит потом "ДА". Исходя из того, что в консоле работает верно делаю вывод, что я как то не верно считываю строки. Помогите, пожалуйста, у меня уже закончились идеи(
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
09.12.2019, 09:47
Vlast001, вот я перевел, но честно говоря, не хочется вникать в саму логику ПО, перевод в WinForms - задача решена, на остальное - ребята помогут, я вынужден отлучиться.

мой вариант
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        public void rebra(string text)
        {
            textBox2.Text = "";
 
            int n, m, ii = 0;
            //string text = Console.ReadLine();
            string[] words = text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            n = int.Parse(words[0]);
            m = int.Parse(words[1]);
            //Console.WriteLine("{0}, {1}", n, m);
            //Console.WriteLine();
            textBox2.Text = string.Format("{0}, {1}{2}", n, m, Environment.NewLine);
 
            int k = 0;
            bool p = true;
            int[] v = new int[m];
            int[] g = new int[m];
            for (int i = 0; i < m; i++)
            {
                //text = Console.ReadLine();
                words = text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                v[i] = int.Parse(words[0]);
                g[i] = int.Parse(words[1]);
            }
            while (p)
            {
                for (int j = ii + 1; j < m; j++)
                {
                    if ((v[ii] == v[j]) && (g[ii] == g[j]))
                    {
                        k++;
                        //Console.WriteLine("YES"); // вывод хочу тоже сделать в форме, мб Лабель но тоже хз как реализовать
                        textBox2.Text += "YES"; // вывод сделал в форме в Лабель
                        p = false;
                    }
                }
                ii++;
                if (ii == m) break;
            }
            //if (k == 0) Console.WriteLine("NO");
            if (k == 0) textBox2.Text += "NO";
        }
 
 
        private void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter) rebra(textBox1.Text);
        }
    }
}
Миниатюры
Как переделать код из консоли в форму  
0
17 / 10 / 8
Регистрация: 06.12.2019
Сообщений: 19
09.12.2019, 12:55
Вводятся только числа, потому нет смысла использовать textbox.
Для целых чисел есть NumericUpDown. Делайте ввод количества вершин, количества ребер и
вершин ребер через NumericUpDown и проблем не будет с парсингом.
0
31 / 15 / 7
Регистрация: 08.01.2019
Сообщений: 636
09.12.2019, 14:23  [ТС]
tosteel, Можете пожалуйста помочь, а то у меня совсем не выходит с текстбох, я уже зачем-то полез в dataGridView и там тоже ничего(запутался уже после ввода рядков). Вприципе по идеи текстбокс читает строки как будто чтение файла.
Вот прилагаю полный код, проблемы с парсингом пока нету, пробелам в том, что я и через отладчик и через месседжбокс проверил... почему-то читаю только первую строку... хотя по логике читаю первую, потом в цикле читаю остальные(по крайней в консоле я делал так и верно...)

Кликните здесь для просмотра всего текста
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace asd61
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            label1.Text = textBox1.Text;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            rebra();
        }
        public void rebra()
        {
            int m, ii = 0;
            int k = 0;
            bool p = true;
            String text = textBox1.Text;
            String[] words = text.Split(new char[] { '\n', ' ', '\r' }, StringSplitOptions.RemoveEmptyEntries);
            try
            {
                //_ = int.Parse(words[0]);
                m = int.Parse(words[1]);
                int[] v = new int[m];
                int[] g = new int[m];
                for (int i = 0; i < m; i++)
                {
                    words = textBox1.Text.Split(new string[] { " ", Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
                    v[i] = int.Parse(words[0]);
                    g[i] = int.Parse(words[1]);
                    MessageBox.Show("{0}",Convert.ToString(v[i]));
                    MessageBox.Show("{0}", Convert.ToString(g[i]));
                }
                while (p)
                {
                    for (int j = ii + 1; j < m; j++)
                    {
                        if ((v[ii] == v[j]) && (g[ii] == g[j]))
                        {
                            k++;
 
                            textBox1.Text = "Yes";
                            p = false;
                        }
                    }
                    ii++;
                    if (ii == m) break;
                }
                if (k == 0) textBox1.Text = "NO";
            }
            catch (Exception e)
            {
                MessageBox.Show($"{e}");
            }
 
 
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
    }
}
0
17 / 10 / 8
Регистрация: 06.12.2019
Сообщений: 19
09.12.2019, 14:54
Vlast001, ну в чем проблема сделать так ?

вводим в один NumericUpDown одну вершину ребра, в другой NumericUpDown
другую вершину . По кнопке "добавить" добавляем ребро в список ребер
И не нужно текстовых полей.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
      // класс ребро
        class Edge
        {
            int from, to; //вершины
            
         public   Edge(int a, int b)
            {
                from = a;
                to = b;
            }
 
        }
 
        // список ребер
        List<Edge> edges = new List<Edge>();
 
        // кнопка добавление ребра 
        private void button1_Click(object sender, EventArgs e)
        {
            edges.Add(
                new Edge((int)numericUpDownFrom.Value,
                (int)numericUpDownTo.Value));
        }
0
31 / 15 / 7
Регистрация: 08.01.2019
Сообщений: 636
09.12.2019, 15:05  [ТС]
Цитата Сообщение от tosteel Посмотреть сообщение
ну в чем проблема сделать так ?
Я с формами совсем не знаком, метанит, если честно нормально объясняет только как создать кнопку.

Цитата Сообщение от tosteel Посмотреть сообщение
/ класс ребро
        class Edge
        {
            int from, to; //вершины
public   Edge(int a, int b)
            {
                from = a;
                to = b;
            }
}
// список ребер
        List<Edge> edges = new List<Edge>();
// кнопка добавление ребра
        private void button1_Click(object sender, EventArgs e)
        {
            edges.Add(
                new Edge((int)numericUpDownFrom.Value,
                (int)numericUpDownTo.Value));
        }
Окей, добавили ребра в текстовые поля, как мне дальше с ними работать?
0
17 / 10 / 8
Регистрация: 06.12.2019
Сообщений: 19
09.12.2019, 15:12
Цитата Сообщение от Vlast001 Посмотреть сообщение
добавили ребра в текстовые поля, как мне дальше с ними работать?
при чем тут текстовые поля? да ладно , проехали ...
а как работать. так Вам же виднее , написали же зачем-то консольное приложение, в котором вводятся
ребра
1
31 / 15 / 7
Регистрация: 08.01.2019
Сообщений: 636
09.12.2019, 15:21  [ТС]
Цитата Сообщение от tosteel Посмотреть сообщение
написали же зачем-то консольное приложение
Надо в форме, в форме не умею, сделал в консоле, проверил - работает. Стал думать как переделать в форму и просел, ничего не выходит.
0
17 / 10 / 8
Регистрация: 06.12.2019
Сообщений: 19
09.12.2019, 15:23
ребра же зачем-то вводятся. нужно задачу знать изначально, мне она неведома .
0
31 / 15 / 7
Регистрация: 08.01.2019
Сообщений: 636
09.12.2019, 20:57  [ТС]
Цитата Сообщение от tosteel Посмотреть сообщение
нужно задачу знать изначально, мне она неведома
Ориентированный граф задан списком ребер. Проверьте, содержит ли он параллельные ребра.
Входные данные
Сначала вводятся числа n ( 1 n 100) – количество вершин в графе и m ( 1 m 10 000) – количество ребер. Затем следует m пар чисел – ребра графа.
Выходные данные
Выведите «YES», если граф содержит параллельные ребра, и «NO» в противном случае.
Если вам интересно, буду признателен за любую помощь с реализацией на форме.

2 вложения: рабочая версия в консоли( если конечно параллельными ребрами являются просто повторяющаяся пара чисел:
2 5
2 5
// но 2 5
// и 5 2 не параллельные ребра, по крайней мере я так понял, но уже чет сомневаюсь), и не рабочая версия в форме( почему и код я уже бросал постом ранее).
Миниатюры
Как переделать код из консоли в форму  
Изображения
 
0
17 / 10 / 8
Регистрация: 06.12.2019
Сообщений: 19
11.12.2019, 10:46
Цитата Сообщение от Vlast001 Посмотреть сообщение
но 2 5 и 5 2 не параллельные ребра, по крайней мере я так понял, но уже чет сомневаюсь
тоже параллельные

Добавлено через 1 минуту
Цитата Сообщение от Vlast001 Посмотреть сообщение
Выведите «YES», если граф содержит параллельные ребра, и «NO» в противном случае.
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
       // класс ребро
        class Edge
        {
            int from, to; //вершины
            
         public   Edge(int a, int b)
            {
                From = a;
                to = b;
            }
 
            public int From { get => from; set => from = value; }
            public int To { get => to; set => to = value; }
        }
 
 
        class DistinctComparer : IEqualityComparer<Edge>
        {
 
            public bool Equals(Edge a, Edge b)
            {
                return a.From == b.From && a.To == b.To
                    || a.From == b.To && a.To == b.From;
            }
 
            public int GetHashCode(Edge obj)
            {
                return obj.From.GetHashCode() ^
                    obj.To.GetHashCode();
            }
        }
 
        // список ребер
        List<Edge> edges = new List<Edge>();
C#
1
2
3
4
if (edges.Count == edges.Distinct(new DistinctComparer()).ToList().Count)
                MessageBox.Show("No");
            else
                MessageBox.Show("Yes");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.12.2019, 10:46
Помогаю со студенческими работами здесь

Переделать с консоли на форму
Вобщем, есть рабочая прога на консоли. Я переделываю в приложение. Но при компиляции ругается на скобку, не могу понять что не так,...

Переделать программу с консоли на форму
Перевести на форму з консоли. Задание звучит так: Из строки вывести большое и маленькое слово #include &lt;vcl.h&gt; #pragma hdrstop ...

Переделать программу с консоли на форму
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace...

Переделать программу из консоли на форму и по возможности добавить метод
Есть готовая программа решения матричных игр методом Брауна-Робинсона, нужно переделать её из консольной на форму, для того чтобы добавить...

Переделать код, чтобы играть в консоли
Помогите убрать интерфейс чтобы можно было играть крестики нолики в консоли import java.awt.*; import java.awt.event.*; import...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru