Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 1
Регистрация: 27.11.2010
Сообщений: 8

Ошибка в передаче данный, клиент-сервер, пин-понг, теннис

22.03.2011, 20:27. Показов 1922. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Не могу понять, почему и где происходит ошибка. Косячит сама передача данных, клиент подключается к серверу, вроде начинается игра, но сервер молчит, а клиент наигрывается вволю сам с собой и заканчивает игру и только после этого отвисает сервер и начинается прорисовка игры.

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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Design;
using System.Text;
using System.Threading;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;
 
namespace TennisDotNetSocket
{
    public partial class Form1 : Form
    {
        public static int Player1 = 0, Player2 =  0;
        public int ID = 0;
        public bool Fx = true;
        public bool Fy = true;
        public int BallX = 20, BallY = 50;
        public bool GameStartEnd = true;
        public bool WinLose = true;
       
 
        public const int RocketX = 15;
        public const int RocketY = 45;
        public const int RadiusBall = 10;
        public const int BallDx = 2;
        public const int BallDy = 2;
        static Thread Th;
        static bool IsServer;
        static long IsWaited = 0;
         static long   IsSended = 0;
        
        
        public Form1()
        {
           
            IsServer = (MessageBox.Show("Ты чЁ  сервер штоле?", "", MessageBoxButtons.YesNo) == DialogResult.Yes);
            InitializeComponent();
            if (IsServer)
            {
                ID = 1;
                toolStripTextBox1.Text = "Server";
                Th = new Thread(new ThreadStart(ServerThread));
            }
            else
            {
                ID = 2;
                toolStripTextBox1.Text = "Klient";
                Th = new Thread(new ThreadStart(ClientThread));
            }
            
        }
        public static void ServerThread()
        {
           
            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            sock.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 57000));
            sock.Listen(1);
           // this.timer1.Start();
            Socket client = sock.Accept();
            Byte[] data = new Byte[1];
            while (true)
            {
                while (Interlocked.Read(ref IsSended) == 0) {///
                }
                data[0] = Convert.ToByte(Player1);
                client.Send(data, 1, SocketFlags.None);
                              
                Interlocked.Increment(ref IsWaited);
                client.Receive(data, 1, SocketFlags.None);
                Player2 = Convert.ToInt32(data[0]);
                Interlocked.Decrement(ref IsSended);
                Interlocked.Decrement(ref IsWaited);
       
            }
        }
        public static void ClientThread()
        {
            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            sock.Connect("127.0.0.1", 57000);
            if (!sock.Connected)
            {
                MessageBox.Show("Невозможно подключиться!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Application.Exit();
            }
           
            Byte[] data = new Byte[1];
            while (true)
            {
                
                Interlocked.Increment(ref IsWaited);
                sock.Receive(data, 1, SocketFlags.None);
                Player1 = Convert.ToInt32(data[0]);
                Interlocked.Decrement(ref IsWaited);
 
 
                while (Interlocked.Read(ref IsSended) == 0) {  }
                data[0] = Convert.ToByte(Player2);
                            
                sock.Send(data, 1, SocketFlags.None);
               
                Interlocked.Decrement(ref IsSended);
            }
        }
 
 
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("Чё Засцал? Да?", "Выход", MessageBoxButtons.YesNo) == DialogResult.No)
                Close();
        }
 
        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            switch (ID)
            {
                case 0: 
                { 
                    Player1 = e.Y;
                    Player2 = e.Y;
                    break;
                }
                case 1:
                {
                    Player1 = e.Y;
                    break;
                }
                case 2:
                {
                    Player2 = e.Y;
                    break;
                }
            }
            
        }
 
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics gr  = e.Graphics;
            SolidBrush black = new SolidBrush(Color.Black);
            SolidBrush red = new SolidBrush(Color.Red);
            // убираем ракетки
            gr.FillRectangle(black, 0, 0, RocketX, panel1.Height);
            gr.FillRectangle(black, panel1.Width - RocketX, 0, RocketX, panel1.Height);
 
            // рисуем новые ракетки
            gr.FillRectangle(red, 0, Player1, RocketX, RocketY);
            gr.FillRectangle(red, panel1.Width - RocketX, Player2, RocketX, RocketY);
 
            // убираем шарик
            gr.FillRectangle(black, RocketX, 0, panel1.Width - 2 * RocketX, panel1.Height);
 
            // рисуем новый шарик
            gr.FillEllipse(red, BallX, BallY, RadiusBall, RadiusBall);
        }
 
        public void timer1_Tick(object sender, EventArgs e)
        {
            #region // Если конец игры
 
            if (((BallX - RadiusBall) <= 0) || ((BallX + RadiusBall) >= panel1.Width))
                {
                    GameStartEnd = false;
                    timer1.Stop();
                    MessageBox.Show("Игра окончена");
                    if (ID == 0) MessageBox.Show("Как бэ конец...и проиграли, и победили...");
                    if (BallX - RadiusBall < RocketX)
                    {
                        if (ID == 1)
                            MessageBox.Show("Вы проиграли");
                        if (ID == 2)
                            MessageBox.Show("Ура! Вы победили!");
                    }
                        if (BallX + RadiusBall > panel1.Width - RocketX)
                        {
                            if (ID == 2)
                                MessageBox.Show("Вы проиграли");
                            if (ID == 1)
                                MessageBox.Show("Ура! Вы победили!");
                        }
                }
            #endregion
            #region Если продолжаем играть
            if (GameStartEnd != false)
            {
                // попадание в ракетку игрока 1
                if(((BallY - RadiusBall) <= Player1 + RocketY) && ((BallY + RadiusBall) >= Player1))
                {
                    if ((BallX - RadiusBall) <= RocketX)
                        Fx = true;
                }
                // попадание в ракетку игрока 2
                if (((BallY - RadiusBall) <= Player2 + RocketY) && ((BallY + RadiusBall) >= Player2))
                {
                    if ((BallX + RadiusBall) >= (panel1.Width - RocketX))
                        Fx = false;
                }
 
                // попадание вверхнюю границу
                if ((BallY - RadiusBall >= 0) && (BallY - RadiusBall < 2))
                    Fy = true;
                // попадание нижнюю границу
                if ((BallY + RadiusBall > panel1.Height - 2) && (BallY + RadiusBall <= panel1.Height))
                    Fy = false;
 
                // перераспределение координат для шарика
                if (Fx == true)
                    BallX += BallDx;
                else BallX -= BallDx;
                if (Fy == true)
                    BallY += BallDy;
                else BallY -= BallDy;
 
                toolStripTextBox2.Text = BallX + ":" + BallY;
                panel1.Refresh();
            }
            #endregion
        }
 
        private void игратьToolStripMenuItem_Click(object sender, EventArgs e)
        {            timer1.Start();                  }
        private void подключитьсяToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Th.Start();
            игратьToolStripMenuItem.Enabled = true;
            
        }
 
        private void Form1_Load(object sender, EventArgs e)       {        }
        
    }
}
Вложения
Тип файла: rar TennisDotNetSocket.rar (35.2 Кб, 33 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.03.2011, 20:27
Ответы с готовыми решениями:

Пин-понг
Здравствуйте, в целях изучения Java делаю мини-игру &quot;пинг-понг&quot;, сейчас пытаюсь сделать просто что б шарик отскакивал от границ поля(низ,...

ИГра Пин Понг
Ребят вообщем не могу прописать, не знаю как..нужно , чтобы шарик ударяясь о стену...сразу вылезало окно..что игрок выиграл или...

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

2
1 / 1 / 1
Регистрация: 27.11.2010
Сообщений: 8
24.03.2011, 15:00  [ТС]
вообщем сам написал, сам разобрался, сам себе ответил....вдруг кому понадобиться рабочая уже.

Code
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Design;
using System.Text;
using System.Threading;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;
 
namespace TennisDotNetSocket
{
    public partial class Form1 : Form
    {
        public static int Player1 = 20, Player2 =  20;
        public int ID = 0;
        public bool Fx = true;
        public bool Fy = true;
        public int BallX = 20, BallY = 50;
        public bool GameStartEnd = true;
        public bool ConnnetStart = true;
        public const int RocketX = 15;
        public const int RocketY = 45;
        public const int RadiusBall = 10;
        public const int BallDx = 2;
        public const int BallDy = 2;
        static Thread Th;
        static bool IsServer;
        public static bool FlagStart = false;
        public static string IP = null, port = null;
 
        
        
        public Form1()
        {
            Form2 re = new Form2();
            re.ShowDialog();
            IsServer = (MessageBox.Show("сервер?", "", MessageBoxButtons.YesNo) == DialogResult.Yes);
            InitializeComponent();
            if (IsServer)
            {
                ID = 1;
                toolStripTextBox1.Text = "Server";
                Th = new Thread(new ThreadStart(ServerThread));
            }
            else
            {
                ID = 2;
                toolStripTextBox1.Text = "Client";
                Th = new Thread(new ThreadStart(ClientThread));
            }
            
        }
        public static void ServerThread()
        {
            
                //Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                //sock.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 57000));
            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            sock.Bind(new IPEndPoint(IPAddress.Parse(IP),Convert.ToInt32(port)));
                sock.Listen(1);
               
                Socket client = sock.Accept();
                Byte[] data = new Byte[4];
                Byte[] outPl = new Byte[4];
                FlagStart = true;
            try
            {
                while (true)
                {
 
                    outPl[0] = Convert.ToByte(Player1);
                    client.Send(outPl);
                    client.Receive(data);
                    Player2 = Convert.ToInt16(data[0]);
                    client.SendTimeout = 5;
                   
                }
            }
            catch (Exception ex)
            {
                client.Shutdown(SocketShutdown.Both);
                client.Close();
                FlagStart = false;
                MessageBox.Show(ex.Message + "\n\n"+ ex.InnerException+ "\n\n"+ ex.Source + "\n\n"+ ex.StackTrace + "\n\n", "Server error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Application.Exit();
            }
        }
        public static void ClientThread()
        {
 
            //Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //sock.Connect("127.0.0.1", 57000);
            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            sock.Connect(IP, Convert.ToInt32(port));
            if (sock.Connected)
            {
                FlagStart = true;
                try
                {
                    
                    Byte[] data2 = new Byte[4];
                    Byte[] outPl2 = new Byte[4];
                    while (true)
                    {
                        sock.SendTimeout = 5;
                        sock.Receive(data2);
 
                        Player1 = Convert.ToInt16(data2[0]);
                        outPl2[0] = Convert.ToByte(Player2);
                        sock.Send(outPl2);
 
                    }
                }
                catch(Exception ex)
                {
                    sock.Shutdown(SocketShutdown.Both);
                    sock.Close();
                    FlagStart = false;
                    MessageBox.Show(ex.Message + "\n\n" + ex.InnerException + "\n\n" + ex.Source + "\n\n" + ex.StackTrace + "\n\n", "Client error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Application.Exit();
                }
            }
            else
            {
                MessageBox.Show("Невозможно подключиться!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Application.Exit();
            }
 
        }
 
        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            switch (ID)
            {
                case 0: 
                { 
                    Player1 = e.Y;
                    Player2 = e.Y;
                    break;
                }
                case 1:
                {
                    Player1 = e.Y;
                    break;
                }
                case 2:
                {
                    Player2 = e.Y;
                    break;
                }
            }
            
        }
 
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics gr  = e.Graphics;
            SolidBrush black = new SolidBrush(Color.Black);
            SolidBrush red = new SolidBrush(Color.Red);
            // убираем ракетки
            gr.FillRectangle(black, 0, 0, RocketX, panel1.Height);
            gr.FillRectangle(black, panel1.Width - RocketX, 0, RocketX, panel1.Height);
 
            // рисуем новые ракетки
            gr.FillRectangle(red, 0, Player1, RocketX, RocketY);
            gr.FillRectangle(red, panel1.Width - RocketX, Player2, RocketX, RocketY);
 
            // убираем шарик
            gr.FillRectangle(black, RocketX, 0, panel1.Width - 2 * RocketX, panel1.Height);
 
            // рисуем новый шарик
            gr.FillEllipse(red, BallX, BallY, RadiusBall, RadiusBall);
        }
 
        public void timer1_Tick(object sender, EventArgs e)
        {
            #region // Если конец игры
            try
            {
                if (FlagStart)
                {
                    if (((BallX - RadiusBall) <= 0) || ((BallX + RadiusBall) >= panel1.Width))
                    {
                        GameStartEnd = false;
                        timer1.Stop();
                        if (ID == 0) MessageBox.Show("Как бэ конец...и проиграли, и победили...");
                        if (BallX - RadiusBall < RocketX)
                        {
                            if (ID == 1)
                                MessageBox.Show("Вы проиграли");
                            if (ID == 2)
                                MessageBox.Show("Ура! Вы победили!");
                        }
                        if (BallX + RadiusBall > panel1.Width - RocketX)
                        {
                            if (ID == 2)
                                MessageBox.Show("Вы проиграли");
                            if (ID == 1)
                                MessageBox.Show("Ура! Вы победили!");
                        }
 
 
                    }
            #endregion
                    #region Если продолжаем играть
                    if (GameStartEnd != false)
                    {
                        // попадание в ракетку игрока 1
                        if (((BallY - RadiusBall) <= Player1 + RocketY) && ((BallY + RadiusBall) >= Player1))
                        {
                            if ((BallX - RadiusBall) <= RocketX)
                                Fx = true;
                        }
                        // попадание в ракетку игрока 2
                        if (((BallY - RadiusBall) <= Player2 + RocketY) && ((BallY + RadiusBall) >= Player2))
                        {
                            if ((BallX + RadiusBall) >= (panel1.Width - RocketX))
                                Fx = false;
                        }
 
                        // попадание вверхнюю границу
                        if ((BallY - RadiusBall >= 0) && (BallY - RadiusBall < 2))
                            Fy = true;
                        // попадание нижнюю границу
                        if ((BallY + RadiusBall > panel1.Height - 2) && (BallY + RadiusBall <= panel1.Height))
                            Fy = false;
 
                        // перераспределение координат для шарика
                        if (Fx == true)
                            BallX += BallDx;
                        else BallX -= BallDx;
                        if (Fy == true)
                            BallY += BallDy;
                        else BallY -= BallDy;
 
                        toolStripTextBox2.Text = BallX + ":" + BallY;
                        panel1.Refresh();
                    }
                    #endregion
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\n\n" + ex.InnerException + "\n\n" + ex.Source + "\n\n" + ex.StackTrace + "\n\n", "Client error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Application.Exit();
            }
 
        }
 
        private void подключитьсяToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Th.Start();
            подключитьсяToolStripMenuItem.Enabled = false;
            
        }
 
        
    }
}
Form2.cs

Code
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.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace TennisDotNetSocket
{
    public partial class Form2 : Form
    {
        public string IPs = null, ports = null;
        public Form2()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            IPs = textBox1.Text;
            ports = textBox2.Text;
            Form1.IP = IPs;
            Form1.port = ports;
            button1.Enabled = false;
            button1.Text = "Сохранено";
            button2.Visible = true;
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Close();
        }
    }
}
Вложения
Тип файла: rar TennisDotNetSocket.rar (39.1 Кб, 71 просмотров)
0
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 1
22.11.2016, 16:26
А как к самому себе подключиться? Как запустить с одного компьютера? Запускаю программу, далее появляется окошко, в нём прописаны IP и порт, нажимаю ОК, затем Играть, далее появляется окошко с выбором сервер ты или клиент, далее появляется окно с самой игрой, но в нём игра не начинается, нужно ещё подключиться другому игроку, с другой стороны, но как это сделать с одной машины? Что не прописываю ничего не подходит..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.11.2016, 16:26
Помогаю со студенческими работами здесь

Потеря пакетов при передаче клиент->сервер - Boost C++
Написал простенькую реализацию сервера и клиента. Клиент: #include &quot;stdafx.h&quot; #include &lt;boost/asio.hpp&gt; #include...

Ошибка при передаче данных в клиент-серверном приложении
Здравствуйте, вот код клиент-серверного приложения: Клиент: private void button1_Click(object sender, EventArgs e) { ...

Клиент-сервер: При передаче одного кадра все хорошо, но при отсылке потоком возникает ряд ошибок
Добрый день, коллеги. Пишу клиент-серверное приложение для передачи потокового видео. Сервер на linux, клиент на win. Данные с камеры...

Расшифровать данные Wireshark. Ошибка при передаче файла на сервер
Доброго времени суток. Помогите расшифровать логи Wireshark. При передаче файла ~9кб, все строки в логе Wireshark зеленные, как я понимаю...

Взаимодействие WinCC с Labview 2013, как сервер-клиент, так и клиент-сервер
Здравствуйте. Интересует информация о взаимодействии WinCC с Labview 2013, как сервер-клиент, так и клиент-сервер через ОРС-инфтерфейс. ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru