Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 11.02.2019
Сообщений: 23

График функции, ZedGraph, не могу найти ошибку

17.05.2019, 09:46. Показов 645. Ответов 0

Студворк — интернет-сервис помощи студентам
Всем привет, помогите пожалуйста найти ошибку. Где и что я мог пропустить? с С# и Windows Forms столкнулся впервые...
Компилятор ругается на
InputClass.cs:
26 строка:
Ошибка CS1061 "object" не содержит определения "LeftOrder", и не удалось найти доступный метод расширения "LeftOrder", принимающий тип "object" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).

46 строка:
Ошибка CS1061 "object" не содержит определения "RightOrder", и не удалось найти доступный метод расширения "RightOrder", принимающий тип "object" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).

OutputClass.cs:
50, 52, 53 строки:
Ошибка CS1061 "object" не содержит определения "zedGraph", и не удалось найти доступный метод расширения "zedGraph", принимающий тип "object" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).

65, 66, 66, 87, 88, 88 строки:
Ошибка CS1061 "object" не содержит определения "iterList", и не удалось найти доступный метод расширения "iterList", принимающий тип "object" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).

Задание:
Кликните здесь для просмотра всего текста

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



Код:
Program.cs

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

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace MathApp
{
    static class Program
    {
        public static object MainWindow
        {
            get; internal set;            
        }
 
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainWindow());
        }
    }
}


MainWindow.cs
Кликните здесь для просмотра всего текста

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
using System;
using System.Windows.Forms;
 
namespace MathApp
{
    public partial class MainWindow : Form
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        private void Button_Click(object sender, EventArgs e)
        {
            iterList.Items.Clear();
            zedGraph.GraphPane.CurveList.Clear();
            ProcessClass.processDataAndDraw();
        }
 
        private void OnWindowLoad(object sender, EventArgs e)
        {
            zedGraph.GraphPane.XAxis.Title.Text = "Ось X";
            zedGraph.GraphPane.YAxis.Title.Text = "Ось Y";
            zedGraph.GraphPane.Title.Text = "График функции f(x) = 2x^3-11x^2-7x + 41";
        }
    }
}


ProcessClass.cs
Кликните здесь для просмотра всего текста

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
/* 
==========
Модуль обработки данных ProcessClass.cs;
В данном модуле описаны методы для обработки информации в программе
==========
*/
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace MathApp
{
    static class ProcessClass
    {
        /*
        Функция funcDouble вычисляет значение заданной функции f(x) = 2x^3-11x^2-7x+41 и возвращает это значение;
        Параметры функции:
        XCoor_Double - координата по оси X.
        */
        public static double funcDouble(double XCoor_Double)
        {
            return (2 * XCoor_Double * XCoor_Double * XCoor_Double - 11 * XCoor_Double * XCoor_Double - 7 * XCoor_Double + 41);
        }
 
        /*
        Функция funcDiffDouble вычисляет значение производной функции f(x) = 2x^3-11x^2-7x+41 и возвращает это значение;
        Используется функция f'(x) = 6x^2-22x-7 как производная для f(x) = 2x^3-11x^2-7x+41.
        Параметры функции:
        XCoor_Double - координата по оси X.
        */
        public static double funcDiffDouble(double XCoor_Double)
        {
            return (6 * XCoor_Double * XCoor_Double - 22 * XCoor_Double - 7);
        }
 
        /*
        Процедура processDataAndDraw выполняет вычисление корня функции методом Ньютона
        */
        public static void processDataAndDraw()
        {
            /* Объявляем переменные:
            - Eps_Double - точность которую нужно достигнуть при вычислении;
            - XPrev_Double - координата по оси Х на предыдущей итерации
            метода;
            - XCurrent_Double - координата по оси Х на текущей итерации
            метода.
            */
            const double Eps_Double = 0.01;
            // Берем середину отрезка
            double XPrev_Double, XCurrent_Double = (InputClass.getRightOrder() - InputClass.GetLeftOrder()) / 2.0;
            int IterationCount_Int = 0;
            // Выполняем поиск корня методом Ньютона в цикле пока не достигнем точности Eps_Double
            do
            {
                XPrev_Double = XCurrent_Double;
                XCurrent_Double = XPrev_Double - funcDouble(XPrev_Double) / funcDiffDouble(XPrev_Double);
                OutputClass.AddIterationToList(IterationCount_Int, XCurrent_Double);
                // Подсчитываем количество совершенных итераций
                IterationCount_Int++;
            }
            while (Math.Abs(XCurrent_Double - XPrev_Double) > Eps_Double);
            // Выводим найденный корень и количество итераций
            OutputClass.AddLogMessage("==============================");
            OutputClass.AddLogMessage("Корень функции: " + XCurrent_Double);
            OutputClass.AddLogMessage("Количество итераций: " + IterationCount_Int);
            OutputClass.AddLogMessage("==============================");
            // Рисуем график функции на заданном отрезке
            OutputClass.DrawGraph(InputClass.GetLeftOrder(), InputClass.getRightOrder());
        }
    }
}


InputClass.cs
Кликните здесь для просмотра всего текста

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
/* 
==========
Модуль ввода данных InputClass.cs;
В данном модуле описаны методы для ввода данных от пользователя
==========
*/
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace MathApp
{
    static class InputClass
    {
 
        //Функция getLeftOrder берет число которое ввел пользователь в первой текстовой строке и возвращает его;
        public static double GetLeftOrder()
        {
            // Пробуем считать из текстового поля строку как переменную типа Double 
            double LeftOrder_Double;
            try
            {
                LeftOrder_Double = Convert.ToDouble(Program.MainWindow.LeftOrder.Text);
            }
 
            // В случае неудачи выдаем сообщение пользователю на экран и принимаем значение левой границы по умолчанию равное -5
            catch
            {
                OutputClass.ShowMessage("Неверно введена левая граница");
                LeftOrder_Double = -5.0;
            }
            return LeftOrder_Double;
        }
 
 
        //Функция getRightOrder берет число которое ввел пользователь во второй текстовой строке и возвращает его;
        public static double getRightOrder()
        {
            // Пробуем считать из текстового поля строку как переменную типа Double
            double RightOrder_Double;
            try
            {
                RightOrder_Double = System.Convert.ToDouble(Program.MainWindow.RightOrder.Text);
            }
            // В случае неудачи выдаем сообщение пользователю на экран и принимаем значение правой границы по умолчанию равное 5
            catch
            {
                OutputClass.ShowMessage("Неверно введена правая граница");
                RightOrder_Double = 5.0;
            }
            return RightOrder_Double;
        }
 
    }
}


OutputClass.cs
Кликните здесь для просмотра всего текста

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
91
92
/* 
==========
Модуль вывода данных OutputClass.cs;
В данном модуле описаны методы для вывода данных программы на экран
========== 
Подключение стандартных библиотек языка C#:
System - глобальный модуль, в котором содержатся описания всех объектов языка;
System.Windows.Forms - модуль для работы с окнами;
System.Drawing - модуль поддержки графики и рисования;
*/
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;
 
/*
Подключение нестандартной библиотеки ZedGraph - для рисования графика.
ZedGraph это библиотека классов пользовательского интерфейса для C# для
рисования 2D линий, графов, гистрограмм и.т.д.
Распространяется свободно по лицензии GNU GPL.
*/
using ZedGraph;
 
namespace MathApp
{
    static class OutputClass
    {
        /*
        Процедура drawGraph осуществляет рисование графика функции f(x) = 2x^3-11x^2-7x+41 на заданном промежутке.
        Параметры процедуры:
        - XCoorBegin_Double - левая координата по оси Х, с которой начинать рисовать график функции;
        - XCoorEnd_Double - правая координата по оси Х, до которой рисовать график функции;
        В процедуре используется библиотека ZedGraph, а именно:
        - Процедура AddCurve(string label, PointPairList list, Color color, SymbolType symbolType) - добавляет кривую на полотно;
        - Процедура AxisChange() - обновляет данные полотна ZedGraph в буффере рисования;
        - Процедура Invalidate() - применяет буффер рисования на экран;
        */
        public static void DrawGraph(double XCoorBegin_Double, double XCoorEnd_Double)
        {
            // Создаем массив pointList_PointPairList для хранения точек графика функции;
            // Затем в цикле от левой до правой границы с шагом в 0,01 по оси Х заполним массив значениями функции f(x).
            PointPairList pointList_PointPairList = new PointPairList();
            for (double x = XCoorBegin_Double; x <= XCoorEnd_Double; x += 0.01)
                pointList_PointPairList.Add(x, ProcessClass.funcDouble(x));
            // Добавляем кривую с пустым названием, с заданными точками зеленым цветом в буффер полотна.
            Program.MainWindow.zedGraph.GraphPane.AddCurve("", pointList_PointPairList, Color.Green, SymbolType.None);
            // Обновим буффер и применим изменения на экран
            Program.MainWindow.zedGraph.AxisChange();
            Program.MainWindow.zedGraph.Invalidate();
        }
 
        /*
        Процедура addIterationToList добавляет в список в окне очередное значение итерации.
        Параметры процедуры:
        IterationValueX_Double - значение по оси Х на итерации;
        IterationIndex_Int - порядковый номер итерации.
        */
        public static void AddIterationToList(int IterationIndex_Int, double IterationValueX_Double)
        {
            // Добавляем итерацию в список и сдвинем ползунок вниз (в случае переполнения списка)
            Program.MainWindow.iterList.Items.Add((IterationIndex_Int + 1) + ")"+IterationValueX_Double);
            Program.MainWindow.iterList.TopIndex = Program.MainWindow.iterList.Items.Count - 1;
        }
 
        /*
        Процедура showMessage выводит сообщение на экран. Вызывается
        стандартная процедура модуля System.Windows.Forms.MessageBox.Show, 
        создающая диалоговое окно
        Параметры: Message_String - строка сообщения.
        */
        public static void ShowMessage(string Message_String)
        {
            MessageBox.Show(Message_String);
        }
 
        /*
        Процедура addLogMessage выполняет добавление сообщения в лог.
        Параметры: Message_String - строка сообщение.
        */
        public static void AddLogMessage(string Message_String)
        {
            // Добавляем сообщение в список и сдвинем ползунок вниз (в случае переполнения списка)
            Program.MainWindow.iterList.Items.Add(Message_String);
            Program.MainWindow.iterList.TopIndex = Program.MainWindow.iterList.Items.Count - 1;
        }
 
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.05.2019, 09:46
Ответы с готовыми решениями:

Найти ошибку. График функции
Построить график функции на заданном интервале x0, xk график не отображается, хотя при х0 y должен быть равным 8716 public Form1()...

Не могу найти ошибку в функции
Всем привет! ) Вот функция, она удаляет (вырезает) совпадения в строках Memo2 ну и в Столбце таблицы (это в принципе основное =...

Не могу найти ошибку в функции
Доброго времени суток.Помогите дописать программу Вычислить и вывести на экран в виде таблицы значения функции, заданной с по¬мощью ряда...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.05.2019, 09:46
Помогаю со студенческими работами здесь

Не могу найти ошибку в функции
не могу найти ошибку, помогите очень срочно надо. вот код #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; ...

Не могу найти ошибку в процессе минимизации функции
Добрый день. Помогите пожалуйста. Нужно минимизировать функцию с помощью карты Карно. Сначала по таблице истинности записал СДНФ, потом...

Табуляция функции (цикл for), не могу найти ошибку
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { setlocale(LC_ALL,&quot;Russian&quot;); float...

В функции обратной матрицы, не могу найти ошибку
У меня есть программа для нахождения обратной матрицы написанная на Dev C++. #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru