Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 147

Связь класса, выполняющего расчёты и формы

05.03.2015, 15:07. Показов 3264. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, никак не могу разобраться как связать класс с методом с формой.
Есть такой класс :
класс

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace lab_4_18
{
    public class equation
    {
        public static void  equations(double a, double b, double c )
        {
            
        }
    }
}

да, он пустой и я это знаю.
есть вот такая вот форма:
форма

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
79
80
81
82
83
84
85
86
87
88
89
90
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 lab_4_18_2
{
    public partial class Form1 : Form
    {
        
 
        private void Form1_Load(object sender, EventArgs e)
        {
            button2.Enabled = false;
        }
 
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void label2_Click(object sender, EventArgs e)
        {
 
        }
 
        private void label3_Click(object sender, EventArgs e)
        {
 
        }
 
        private void textBox3_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string s,s1,s2;
            double a, b, c;           
            bool ac1,ac2,ac3;
            while (true)
            {
                s = textBox1.Text;
                s1 = textBox2.Text;
                s2 = textBox3.Text;
                ac1 = double.TryParse(s, out a);
                ac2 = double.TryParse(s1, out b);
                ac3 = double.TryParse(s2, out c);
                if (!ac1)
                {
                    MessageBox.Show("Вы ввели неверное значение в первое поле");
                    textBox1.Clear();
                    break;
                }
                else if (!ac2)
                {
                    MessageBox.Show("Вы ввели неверное значение во второе поле");
                    textBox2.Clear();
                    break;
                }
                else if (!ac3)
                {
                    MessageBox.Show("Вы ввели неверное значение в третье поле");
                    textBox3.Clear();
                    break;
                }
                else if((ac1) && (ac2) && (ac3))
                {
                    MessageBox.Show("Данные верны");
                    button2.Enabled = true;
                    break ;
                    
                }
            }
            
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            
        }
    }
}

я могу считать в переменную, которую я задаю непосредственно через форму, но мне-то нужно считать в переменную которую я задаю в классе, для того чтобы в дальнейшем рассчитать корни квадратного уравнения, подскажите как это сделать?
само задание, чисто для понимаю, задание хочу выполнить сам, тем более, что сделать расчеты не трудно.
задание

Описать класс, представляющий квадратное уравнение вида ах^2 + bх + с = 0. Описать метод, вычисляющий решение этого уравнения и выдающий сообщение в случае отсутствия действительных корней. Описать свойства для задания переменной х и получения состояния объекта.В методе, вычисляющем решение уравнения, выбрасывать исключение в случае отсутствия корней.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.03.2015, 15:07
Ответы с готовыми решениями:

Связь формы и класса
Собственно проблема: есть форма, которая передает сигнал классу, этот класс загружает данные с формы на сервер и по окончанию должен...

Связь формы и собственного класса
Здравствуйте! Существует класс с набором функций и некоторых калбеков. Также в Форме имеются некоторые публичные функции которые я также...

Обращение с формы одного класса к объектам формы другого класса
Такой вопрос: у меня есть основной класс, в котором описано текстовое поле textpane на форме, есть другой класс в котором есть списки(...

31
 Аватар для dayzfod
16 / 16 / 11
Регистрация: 24.02.2015
Сообщений: 75
05.03.2015, 15:45
Вам нужно создать экземпляр класса.
Затем уже можете вызывать методы этого класса. и передавать в него переменные.
но у вас метод void (он ничего не вернет)
Сделайте double.
0
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
05.03.2015, 15:47
итак)
класс имхо лучше назвать QuadraticEquationSolver()
вычисляющий метод назвать скорее всего Solve() и сделать его нестатичным.
а в класс параметры a,b,c передавать через конструктор.

можно в принципе и статичным, тогда абц как параметры метода Solve() будут.

при нажатии нужной кнопки просто считываешь с нужных текстбоксов значения(что у тебя уже в принципе сделано), проверяешь их на корректность, потом передаешь их в метод, если он статичный: QuadraticEquationSolver.Solve(a,b,c); либо если нестатичный - сначала конструктор - var solver = QuadraticEquationSolver(a,b,c); и solver.Solve();
метод кстати лучше сделать так, чтобы он возвращал double[] т.к. количество корней от 0 до 2
0
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 147
05.03.2015, 16:04  [ТС]
Цитата Сообщение от valera_21 Посмотреть сообщение
var solver = QuadraticEquationSolver(a,b,c); и solver.Solve();
говорит, что элемент equation(я название класса такое оставил) не существует в текущем контексте.
ну и сделал
C#
1
2
3
4
5
6
7
8
9
10
11
namespace lab_4_18
{
    public class equation
    {
        
        public double Solve(double a, double b, double c )
        {
            
        }
    }
}
говорит, что не все ветви возвращают значение, но я так понимаю, что это уберется в процессе, когда я таки буду возвращать значения в форму.
0
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
05.03.2015, 16:06
Цитата Сообщение от ecofreeon Посмотреть сообщение
говорит, что элемент equation(я название класса такое оставил) не существует в текущем контексте.
т.к. в другом неймспейсе
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
05.03.2015, 16:06
Правильно
C#
1
Solve(double a, double b, double c )
должна вернуть double.
Напишите

double res;
return res;
0
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 147
05.03.2015, 16:11  [ТС]
Цитата Сообщение от valera_21 Посмотреть сообщение
т.к. в другом неймспейсе
так что же мне надо сделать, чтобы он его нашел?
Цитата Сообщение от Sanya_sa Посмотреть сообщение
должна вернуть double.
Напишите
double res;
return res;
помогло, спасибо!
Допер, теперь говорит, что "является тип, но используется как переменная"
0
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
05.03.2015, 16:18
либо переименовать неймспейс один, чтобы они были одинаковы. либо перед названием класса указать неймспейс (так же через точку)
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
05.03.2015, 16:19
Пространстава имен можно в using обьявить или каждый раз явно
C#
1
2
3
using System.Windows.Forms;
 
Form form1;
или
C#
1
System.Windows.Forms.Form form1;
0
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 147
05.03.2015, 16:19  [ТС]
Цитата Сообщение от valera_21 Посмотреть сообщение
либо переименовать неймспейс один, чтобы они были одинаковы. либо перед названием класса указать неймспейс (так же через точку)
с этим я уже разобрался! теперь следующий глюк: говорит, что "является тип, но используется как переменная"
0
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
05.03.2015, 16:20
Цитата Сообщение от ecofreeon Посмотреть сообщение
глюк
глюк ли...
0
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 147
05.03.2015, 16:25  [ТС]
Цитата Сообщение от valera_21 Посмотреть сообщение
глюк ли...
я понимаю, что вы пытаетесь меня подтолкнуть чтобы я сам разобрался но будет хорошо, если вы прямо напишите, как это исправить.
0
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
05.03.2015, 16:28
Цитата Сообщение от ecofreeon Посмотреть сообщение
если вы прямо напишите, как это исправить.
не использовать тип в качестве переменной
0
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 147
05.03.2015, 16:30  [ТС]
Цитата Сообщение от valera_21 Посмотреть сообщение
не использовать тип в качестве переменной
Цитата Сообщение от valera_21 Посмотреть сообщение
var solver = QuadraticEquationSolver(a,b,c);
Вы же сами так написали, я брал по вашему примеру!
C#
1
2
3
4
5
6
7
8
else if ((ac1) && (ac2) && (ac3))
                {
                    MessageBox.Show("Данные верны");
                    break;
 
                    var solver = equation(a, b, c);
                    solver.Solve();
                }
0
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
05.03.2015, 16:31
ecofreeon, ну, подумаешь, забыл new.
0
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 147
05.03.2015, 16:32  [ТС]
Цитата Сообщение от valera_21 Посмотреть сообщение
ну, подумаешь, забыл new
ну для Вас это "подумаешь" а для меня ново
0
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
05.03.2015, 16:33
Цитата Сообщение от ecofreeon Посмотреть сообщение
ну для Вас это "подумаешь" а для меня ново
если бы вы хоть что-то читали по c#, этого бы не было
0
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 147
05.03.2015, 16:35  [ТС]
Цитата Сообщение от valera_21 Посмотреть сообщение
если бы вы хоть что-то читали по c#, этого бы не было
не читал, признаю, только видео смотрел.
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
05.03.2015, 16:35
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        public List<double> Solve(double a, double b, double c)
        {
            // тк корней может быть нескольно
            List <double> res = new List<double>();
 
            // ищим дискрименант D уж сами думаю справитесь с проверками
            double D = Math.Sqrt(b * b - 4 * a * c);
 
            res.Add ((-b + D) / 2 * a);
            res.Add ((-b - D) / 2 * a); 
 
            return res;
        }
за правильность не ручаюсь такчто подумать Вам придется еще). Удачи.
0
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 147
05.03.2015, 16:51  [ТС]
Теперь точно последний вопрос: как мне это все вернуть и вывести на форму?
класс

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace lab_4_18_2
{
    public class equation
    {
        
        public List <double> Solve(double a, double b, double c)
        {
            double discr,x1,x2;
            List<double> res = new List<double>();
            string s = "корней нет";
            discr =Math.Sqrt( (Math.Pow(b, 2) - 4 * a * c));
 
            if (discr > 0)
            {
                res.Add ((-b + discr) / 2 * a);
                res.Add ((-b - discr) / 2 *a);
            }
            else if (discr == 0)
            {
                res.Add (-b / (2 * a));
                
            }
            else if (discr < 0)
            {
                res.Add(-1);
            }
            return res;            
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.03.2015, 16:51
Помогаю со студенческими работами здесь

Создать объект класса, зная имя класса, а параметры получать из формы
У меня есть форма, на которой есть Combobox, в котором можно выбрать класс. При выборе одно из айтемов, на форме добавляются поля ввода, в...

Связь класса и таблицы
Здравствуйте. Подскажите кто знает можно ли организовать связь между имеющимся классом и таблицей? Например у меня в программе создан...

Связь класса и конфига в Hibernate
@Entity @Table(name = &quot;kek&quot;) public class Lol { @Id @GeneratedValue (strategy = GenerationType.AUTO) @Column (name...

Связь между потомками класса
Здравствуйте! У меня проблема: имеется класс, и у него есть 2 класса-потомки. Мне нужно с экземпляра первого класса-потомка получить...

Связь формы
Всем доброго времени суток. Помогите пожалуйста. Проблема такая: сделал программу, но потом потребовалось, чтобы перед запуском основной...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru