Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Tr0llFeed
0 / 0 / 0
Регистрация: 29.07.2015
Сообщений: 5
1
.NET 4.x

Создание графика в формате ЕГЭ

26.10.2019, 16:54. Просмотров 164. Ответов 0

Добрый вечер, появилась проблема, надеюсь поможете, в чем суть, вообще при нажатии на кнопку вызывается функция task(), которая генерирует 2 массива, xy (который отвечает за наглядность графика) и real (который строит саму линию), потом передает эти 2 массива в функцию chartc(int[,] xy, int[,] real), которая вынимает и записывает все данные по осям, после этого сохраняет и отправляет в другую программу для сохранения в docx, проблема в том, что график неправильный

реал не рандомный, потому что я решил проверить работоспособность на одном из графиков
https://ege.sdamgia.ru/get_file?id=37528

Кусок из функции Task()
Кликните здесь для просмотра всего текста

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
                    case 2:
                        xy = new int[2, 16];
                        real = new int[2, 10];
                        b = new string[2]; 
                        begx = 3; endx = 18; stepx = 1; begy = 14400; endy = 15300; stepy = 100;
                        i = 0;
                        real[0, 0] = 3; real[1, 0] = 14700;
                        real[0, 1] = 4; real[1, 1] = 14600;
                        real[0, 2] = 5; real[1, 2] = 14500;
                        real[0, 3] = 6; real[1, 3] = 14900;
                        real[0, 4] = 7; real[1, 4] = 14900;
                        real[0, 5] = 8; real[1, 5] = 15100;
                        real[0, 6] = 9; real[1, 6] = 15000;
                        real[0, 7] = 10; real[1, 7] = 15000;
                        real[0, 8] = 11; real[1, 8] = 14900;
                        real[0, 9] = 12; real[1, 9] = 15100;
 
 
                        for (var xx = begx; xx<endx; xx+=stepx) {
                            xy[0, i++] = xx;
                        }
                        
                        i = 0;
                        for (var yy = begy; yy < endy; yy += stepy)
                            xy[1, i++] = yy;
 
                        i = 0;
                        chartc(xy,real);
                        b[1] = "1";
                        b[0] = "1";
                        return b;


chartc(int[,] xy, int[,] real) // создает точки на графике и сохраняет его в файл
Кликните здесь для просмотра всего текста

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
void chartc(int[,] xy, int[,] real)
        {
            var x1 = xy.GetLength(0);
            var x2 = xy.GetLength(1);
 
            var y1 = real.GetLength(0);
            var y2 = real.GetLength(1);
            
 
            Series series = this.chart1.Series.Add("0");
            Series series1 = this.chart1.Series.Add("1");
 
            series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
            series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
 
            
                for (var y = 0; y < x2; y++)
                        series.Points.AddXY(xy[0, y], xy[1, y]);
 
                for (var y = 0; y < y2; y++)
                        series1.Points.AddXY(real[0, y], real[1, y]);
            
                        
            /*
                        for (var x = 0; x < y1; x++)
                            for (var y = 0; y < y2; y++)
                                    series1.Points.AddXY(real[x, y], real[x, y + 1]);
            */
            // series1.Points.AddXY();
            chart1.Legends[0].Enabled = false;
            series.Enabled = false;
            chart1.ChartAreas[0].AxisX.Minimum = 1;
            chart1.ChartAreas[0].AxisX.Maximum = 18;
            chart1.ChartAreas[0].AxisX.Interval = 1;
 
            chart1.ChartAreas[0].AxisY.Minimum = 14700;
            chart1.ChartAreas[0].AxisY.Maximum = 15300;
            chart1.ChartAreas[0].AxisY.Interval = 100;
            this.chart1.SaveImage("task.png", ChartImageFormat.Png);
            server();
 
        }


server() //Внешняя программа отвечающая за сохранение файла в docx
Кликните здесь для просмотра всего текста

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
bool server()
        {
            Process cmd = new Process();
            cmd.StartInfo.FileName = "C:\\Users\\kent\\source\\repos\\problemgen2\\\\ConsoleApp2.exe";
            //cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            cmd.StartInfo.Arguments = "";
            cmd.Start();
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
            IPEndPoint Addr = null;
            Addr = new IPEndPoint(IPAddress.Any, 5300);
            s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            s.Bind(Addr);
            s.Listen(10);
            Socket cl_s = s.Accept();
            string data = "";
            while (data != "1")
            {
                byte[] msg = new byte[cl_s.Available];
                cl_s.Receive(msg);
                data = "" + Encoding.UTF8.GetString(msg);
 
            }
            s.Close();
            chart1.Series.RemoveAt(0);
            return true;
        }


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

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
using System;
using System.Net.Sockets;
using System.Net;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
namespace ConsoleApp2
{
    class Program
    {
        
        static void Main(string[] args)
        {
            bool save()
            {
                Document document = new Document();
                document.LoadFromFile("C:\\Users\\kent\\source\\repos\\problemgen2\\[ dev ] school 0.01 a\\bin\\Debug\\1.docx");
                Section s = document.AddSection();
                Paragraph p = s.AddParagraph();
                DocPicture Pic = p.AppendPicture(Image.FromFile(@"C:\Users\kent\source\repos\problemgen2\[ dev ] school 0.01 a\bin\Debug\task.png"));
                Pic.Width = 214;
                Pic.Height = 150;
                document.SaveToFile("C:\\Users\\kent\\source\\repos\\problemgen2\\[ dev ] school 0.01 a\\bin\\Debug\\1.docx", FileFormat.Docx);
                return true;
            }
 
             save();
            
 
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
            IPEndPoint Addr = null;
            s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            Addr = new IPEndPoint(ipAddress, 5300); //"localhost" = 127.0.0.1
            s.Connect(Addr); //Коннектимся к срверу
            while (true) //Вечная истина :)
            {
                byte[] msg = Encoding.UTF8.GetBytes("1"); //Конвертируем
                s.Send(msg); //Отправляем
 
                break;
 
            }
            s.Close();
        }
    }
}



UPD: Если есть предложения по оптимизации, буду рад услышать
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2019, 16:54
Ответы с готовыми решениями:

Разработать приложение в среде VBA для генерации (проверки) заданий в формате ЕГЭ (14, 2016 г.)
Пример. Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две...

Разработать приложение в среде VBA для генерации (проверки) заданий в формате ЕГЭ (14, 2016 г.) и ответов к ним
Вот примерный вид

Арифметический корень (книга Мальцев Математика ЕГЭ минимум Подготовка к ЕГЭ 2016)
Помогите, может у кого есть решибник к книге Мальцев Математика ЕГЭ минимум Подготовка к ЕГЭ 2016....

Сохранение графика в формате (.fig)
Подскажите как сохранить график в формате (.fig). В примере ниже график сохраняется в любом формате...

0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2019, 16:54

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Перевод графика в формате jpeg в график Matlab
Здравствуйте, имеется график (обычная парабола красного цвета на черном фоне с осями х и у),...

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

Создание массивов в формате C#
begin var x := new integer (new integer (1, 2), new integer (3, 4)); end. Выдает: Зато так...

Создание справки в формате .HxS
Здравствуйте, не нашел более подходяшего раздела. Задача состоит в создании help в формате .HxS...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.