С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950

Как правильно распарсить json строку и какой для этого нужен класс?

14.10.2018, 16:27. Показов 5106. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что-то вообще в голову не лезет, как правильно распарсить такую строку и какой для этого нужно написать класс:
JSON
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
{
    "data": [
        {
            "id": 222,
            "text": "Start of chat (WhatsApp)",
            "coordinates": null,
            "transport": "whatsapp",
            "type": "from_client",
            "read": 1,
            "created": "2018-10-13T19:28:52 UTC",
            "pdf": null,
            "remote_id": null,
            "recipient_status": null,
            "ai_tips": null,
            "attachments": [],
            "photo": null,
            "video": null,
            "audio": null,
            "operator_id": 12345,
            "channel_id": 1234,
            "dialog_id": 123,
            "client_id": 12
        },
        {
            "id": 222,
            "text": "Chat assigned to Улан. Initiator – Улан",
            "coordinates": null,
            "transport": "whatsapp",
            "type": "system",
            "read": 1,
            "created": "2018-10-13T19:28:53 UTC",
            "pdf": null,
            "remote_id": null,
            "recipient_status": null,
            "ai_tips": null,
            "attachments": [],
            "photo": null,
            "video": null,
            "audio": null,
            "operator_id": 12345,
            "channel_id": 1234,
            "dialog_id": 123,
            "client_id": 12
        },
        {
            "id": 103699824,
            "text": "jkh",
            "coordinates": null,
            "transport": "whatsapp",
            "type": "to_client",
            "read": 0,
            "created": "2018-10-13T19:29:03 UTC",
            "pdf": null,
            "remote_id": null,
            "recipient_status": null,
            "ai_tips": null,
            "attachments": [],
            "photo": null,
            "video": null,
            "audio": null,
            "operator_id": 12345,
            "channel_id": 1234,
            "dialog_id": 123,
            "client_id": 12
        }
    ],
    "meta": {
        "total": 3,
        "limit": 20,
        "offset": 0
    },
    "status": "success"
}
Мне нужно, чтобы получилась примерно такая конструкция формата string:
operator_id: 12345
channel_id: 1234
dialog_id: 123
client_id: 12
------------------------------------------
from_client: Start of chat (WhatsApp)
system: Chat assigned to Улан. Initiator – Улан
to_client: jkh

Можно ли такое реализовать? И, самое главное, как?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.10.2018, 16:27
Ответы с готовыми решениями:

Как правильно распарсить json-строку autocomplete и вывести результаты в подготовленные поля
Прошу помощи в решении проблемы На страничке в наличии поля для заполнения : textarea id="AC10" - поле "поиска" ...

Как правильно распарсить Json?
protected String doInBackground(String... args) { // Будет хранить параметры List<NameValuePair> params = new...

Подскажите как правильно распарсить json
Доброго дня. Никогда не сталкивался с вопросом, своими силами на примерах из гугла не получилось. Можете объяснить как распарсить json...

17
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
15.10.2018, 10:04
вам надо создать классы
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
public class Datum
{
    public int id { get; set; }
    public string text { get; set; }
    public object coordinates { get; set; }
    public string transport { get; set; }
    public string type { get; set; }
    public int read { get; set; }
    public string created { get; set; }
    public object pdf { get; set; }
    public object remote_id { get; set; }
    public object recipient_status { get; set; }
    public object ai_tips { get; set; }
    public List<object> attachments { get; set; }
    public object photo { get; set; }
    public object video { get; set; }
    public object audio { get; set; }
    public int operator_id { get; set; }
    public int channel_id { get; set; }
    public int dialog_id { get; set; }
    public int client_id { get; set; }
}
 
public class Meta
{
    public int total { get; set; }
    public int limit { get; set; }
    public int offset { get; set; }
}
 
public class RootObject
{
    public List<Datum> data { get; set; }
    public Meta meta { get; set; }
    public string status { get; set; }
}
собственно после того как создадите классы, сообщите, пойдем далее.
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
15.10.2018, 16:30
DenKG, V_Monomax, в задаче прикольная заморочка с нестандартным форматом даты ))
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
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Web.Script.Serialization;
 
namespace Question2334224
{
    public class Datum
    {
        public int id { get; set; }
        public string text { get; set; }
        public object coordinates { get; set; }
        public string transport { get; set; }
        public string type { get; set; }
        public int read { get; set; }
        public string created { get; set; }
        public object pdf { get; set; }
        public object remote_id { get; set; }
        public object recipient_status { get; set; }
        public object ai_tips { get; set; }
        public List<object> attachments { get; set; }
        public object photo { get; set; }
        public object video { get; set; }
        public object audio { get; set; }
        public int operator_id { get; set; }
        public int channel_id { get; set; }
        public int dialog_id { get; set; }
        public int client_id { get; set; }
        [ScriptIgnore]
        public DateTime CreatedCS
        {
            get { return DateTime.Parse(created.Replace(" UTC","Z")); }
        }
    }
 
    public class Meta
    {
        public int total { get; set; }
        public int limit { get; set; }
        public int offset { get; set; }
    }
 
    public class RootObject
    {
        public List<Datum> data { get; set; }
        public Meta meta { get; set; }
        public string status { get; set; }
    }
 
    class Program
    {
        private static RootObject json;
        private static string path = @"c:\temp\json.txt";
 
        static void Main(string[] args)
        {
            LoadFile();
            for (var i = 0; i < json.data.Count; ++i)
            {
                Console.WriteLine($"operator_id: {json.data[i].operator_id}\nchannel_id: {json.data[i].channel_id}\ndialog_id: {json.data[i].dialog_id}\nclient_id: {json.data[i].dialog_id}");
                Console.WriteLine($"{json.data[i].CreatedCS.ToUniversalTime()}");
            }
            Console.ReadKey();
        }
 
        private static void LoadFile()
        {
            var o = new JavaScriptSerializer();
 
            var str = File.ReadAllText(path, Encoding.UTF8);
            json = o.Deserialize<RootObject>(str);
        }
    }
}
Классы то в грубом приближении создаются в http://json2csharp.com/
А дальше тонкая настройка примерно так:
C#
1
2
3
4
5
        [ScriptIgnore]
        public DateTime CreatedCS
        {
            get { return DateTime.Parse(created.Replace(" UTC","Z")); }
        }
2
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
15.10.2018, 16:35
amr-now, зависит от того какой библиотечкой пользоваться для дессериализации, встречал я такую фишку, когда пользуешься
Цитата Сообщение от amr-now Посмотреть сообщение
using System.Web.Script.Serialization;
и если память мне не изменяет, обошел через nutonsoft библиотечку.
1
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
15.10.2018, 18:59  [ТС]
V_Monomax, сообщаю: можно идти далее )
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
16.10.2018, 08:35
DenKG, итак, теперь вам в нюгет надо скачать Newtonsoft.Json далее над всеми свойствами расставить атрибуты [JsonProperty("")] например
C#
1
2
3
4
5
6
7
8
public class Datum
{
    [JsonProperty("id")
    public int id { get; set; }
    [JsonProperty("text")
    public string text { get; set; }
   ...
}
и так надо проделать со всеми свойствами класса. Как сделаете выкладывайте здесь, далее продолжим
1
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
16.10.2018, 10:18
Возня с маппингом излишество. Есть же dynamic, потери там минимальные, а если нужно пяток параметров из сотни, то и выгоднее будет.
1
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
17.10.2018, 00:27
DenKG, Зачем вообще нужен класс ? Просто возьмите нужные значения.
C#
1
2
3
4
5
6
7
8
9
10
11
string file = File.ReadAllText(jsonFile);
var o = JObject.Parse(file);
Console.WriteLine((string)o["data"][0]["operator_id"]);
Console.WriteLine((string)o["data"][0]["channel_id"]);
Console.WriteLine((string)o["data"][0]["dialog_id"]);
Console.WriteLine((string)o["data"][0]["client_id"]);
Console.WriteLine("--------------------------------");
for (int i = 0; i < o.Count; i++)
{
    Console.WriteLine((string)o["data"][i]["type"]+":"+ (string)o["data"][i]["text"]);
}
1
Эксперт .NET
 Аватар для Usaga
14114 / 9331 / 1350
Регистрация: 21.01.2016
Сообщений: 35,065
17.10.2018, 06:26
Цитата Сообщение от PoPsa85 Посмотреть сообщение
Зачем вообще нужен класс ?
Чтобы работать с типизированным представлением данных.
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
17.10.2018, 10:22
Каждый программист должен пройти до конца путь программистских извращений.
Выключение отдельных свойств из сериализации JavaScriptSerializer мы уже рассмотрели.
Второй и более вычурный способ - замапить поля на токены JSON.
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
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Web.Script.Serialization;
 
namespace Question2334224
{
    public class DatumConverter : JavaScriptConverter
    {
        public override IEnumerable<Type> SupportedTypes => new Type[] { typeof(Datum) };
 
        public override object Deserialize(IDictionary<string, object> d, Type type, JavaScriptSerializer serializer)
        {
            var datum = new Datum()
            {
                id = (int)d["id"],
                text = (string)d["text"],
                transport = (string)d["transport"],
                type = (string)d["type"],
                read = (int)d["read"],
                created = DateTime.Parse(((string)d["created"]).Replace(" UTC", "Z")),
                operator_id = (int)d["operator_id"],
                channel_id = (int)d["channel_id"],
                dialog_id = (int)d["dialog_id"],
                client_id = (int)d["client_id"]
            };
            return datum;
        }
 
        /// <summary>
        /// Сериализацию пока не будем реализовывать.
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="serializer"></param>
        /// <returns></returns>
        public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
        {
            throw new NotImplementedException();
        }
    }
 
    class Program
    {
        private static RootObject json;
        private static string path = @"c:\temp\json.txt";
 
        static void Main(string[] args)
        {
            LoadFile();
            for (var i = 0; i < json.data.Count; ++i)
            {
                Console.WriteLine($"operator_id: {json.data[i].operator_id}\nchannel_id: {json.data[i].channel_id}\ndialog_id: {json.data[i].dialog_id}\nclient_id: {json.data[i].dialog_id}");
                Console.WriteLine($"{json.data[i].created.ToUniversalTime()}");
            }
            Console.ReadKey();
        }
 
        private static void LoadFile()
        {
            var o = new JavaScriptSerializer();
            o.RegisterConverters(new JavaScriptConverter[] { new DatumConverter() });
 
            var str = File.ReadAllText(path, Encoding.UTF8);
            json = o.Deserialize<RootObject>(str);
        }
    }
 
    public class Datum
    {
        public int id { get; set; }
        public string text { get; set; }
        public object coordinates { get; set; }
        public string transport { get; set; }
        public string type { get; set; }
        public int read { get; set; }
        public DateTime created { get; set; }
        public object pdf { get; set; }
        public object remote_id { get; set; }
        public object recipient_status { get; set; }
        public object ai_tips { get; set; }
        public List<object> attachments { get; set; }
        public object photo { get; set; }
        public object video { get; set; }
        public object audio { get; set; }
        public int operator_id { get; set; }
        public int channel_id { get; set; }
        public int dialog_id { get; set; }
        public int client_id { get; set; }
    }
 
    public class Meta
    {
        public int total { get; set; }
        public int limit { get; set; }
        public int offset { get; set; }
    }
 
    public class RootObject
    {
        public List<Datum> data { get; set; }
        public Meta meta { get; set; }
        public string status { get; set; }
    }
}
По умолчанию каждый токен JSON там прячет в object наиболее подходящий по его мнению примитивный тип.
Наша задача - ручками замапить каждое свойство для нашего типа Datum.

Привязка маппера к сериализатору:
C#
1
2
            var o = new JavaScriptSerializer();
            o.RegisterConverters(new JavaScriptConverter[] { new DatumConverter() });
--------
А когда надоест, третий способ Newtonsoft JSON Converter как сторонняя приблуда ))
1
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
17.10.2018, 10:59
Цитата Сообщение от amr-now Посмотреть сообщение
Newtonsoft JSON Converter
насколько я помню, он как раз и реализует ваш первый вариант, относительно даты.
1
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
18.10.2018, 22:10  [ТС]
Спасибо всем за ответы, но моя задача немного упростилась. Сервер отвечает мне вот такой json-строкой:
JSON
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
    {
        "id": 105054954,
        "text": "xcvxcv",
        "coordinates": null,
        "transport": "whatsapp",
        "type": "to_client",
        "read": 0,
        "client_id": 29059412,
        "operator_id": 633,
        "channel_id": 90,
        "dialog_id": 4212942,
        "created": "2018-10-18T16:49:39 UTC",
        "remote_id": null,
        "recipient_status": null,
        "attachments": [],
        "ai_tips": null
    },
    {
        "id": 105057085,
        "text": "kjlk",
        "coordinates": null,
        "transport": "whatsapp",
        "type": "to_client",
        "read": 0,
        "client_id": 29059412,
        "operator_id": 633,
        "channel_id": 90,
        "dialog_id": 4212942,
        "created": "2018-10-18T16:57:51 UTC",
        "remote_id": null,
        "recipient_status": null,
        "attachments": [],
        "ai_tips": null
    },
    {
        "id": 105057214,
        "text": "lm",
        "coordinates": null,
        "transport": "whatsapp",
        "type": "to_client",
        "read": 0,
        "client_id": 29059412,
        "operator_id": 633,
        "channel_id": 90,
        "dialog_id": 4212942,
        "created": "2018-10-18T16:58:13 UTC",
        "remote_id": null,
        "recipient_status": null,
        "attachments": [],
        "ai_tips": null
    }
Хотелось бы отсюда получить только два поля: type и text
Если бы в одном сообщении был только один блок, я бы и сам справился, но когда их несколько - не знаю, что делать.
Идеальным вариантом было бы получить на выходе обычную строку типа string вида:
type: text
type: text
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
18.10.2018, 22:43
Лучший ответ Сообщение было отмечено DenKG как решение

Решение

DenKG, Вы квадратные скобки по краям забыли. В таком виде сервер не отдает.

Добавлено через 11 минут
c:\temp\json2334224.txt
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
[
    {
        "id": 105054954,
        "text": "xcvxcv",
        "coordinates": null,
        "transport": "whatsapp",
        "type": "to_client",
        "read": 0,
        "client_id": 29059412,
        "operator_id": 633,
        "channel_id": 90,
        "dialog_id": 4212942,
        "created": "2018-10-18T16:49:39 UTC",
        "remote_id": null,
        "recipient_status": null,
        "attachments": [],
        "ai_tips": null
    },
    {
        "id": 105057085,
        "text": "kjlk",
        "coordinates": null,
        "transport": "whatsapp",
        "type": "to_client",
        "read": 0,
        "client_id": 29059412,
        "operator_id": 633,
        "channel_id": 90,
        "dialog_id": 4212942,
        "created": "2018-10-18T16:57:51 UTC",
        "remote_id": null,
        "recipient_status": null,
        "attachments": [],
        "ai_tips": null
    },
    {
        "id": 105057214,
        "text": "lm",
        "coordinates": null,
        "transport": "whatsapp",
        "type": "to_client",
        "read": 0,
        "client_id": 29059412,
        "operator_id": 633,
        "channel_id": 90,
        "dialog_id": 4212942,
        "created": "2018-10-18T16:58:13 UTC",
        "remote_id": null,
        "recipient_status": null,
        "attachments": [],
        "ai_tips": null
    }
]
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
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Web.Script.Serialization;
 
namespace Question2334224_2
{
    public class Item
    {
        public string text { get; set; }
        public string type { get; set; }
    }
 
    class Program
    {
        private static List<Item> json;
        private static string path = @"c:\temp\json2334224.txt";
 
        static void Main(string[] args)
        {
            LoadFile();
            for (var i = 0; i < json.Count; ++i)
            {
                Console.WriteLine($"type: {json[i].type}\ntext: {json[i].text}\n");
            }
            Console.ReadKey();
        }
 
        private static void LoadFile()
        {
            var o = new JavaScriptSerializer();
 
            var str = File.ReadAllText(path, Encoding.UTF8);
            json = o.Deserialize<List<Item>>(str);
        }
    }
}
1
Эксперт .NET
 Аватар для Usaga
14114 / 9331 / 1350
Регистрация: 21.01.2016
Сообщений: 35,065
19.10.2018, 03:51
Цитата Сообщение от DenKG Посмотреть сообщение
Спасибо всем за ответы, но моя задача немного упростилась.
А она и не усложнялась. Десериализация в объект класса делается на раз-два.
0
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
19.10.2018, 06:11  [ТС]
amr-now, правда, я через StringBuilder сделал )
0
Эксперт .NET
 Аватар для Usaga
14114 / 9331 / 1350
Регистрация: 21.01.2016
Сообщений: 35,065
19.10.2018, 06:55
DenKG, максимально конское решение) Newtonsoft.JSON использовать не получилось?
0
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
19.10.2018, 06:59  [ТС]
Usaga, ну, в смысле, я получил список из type-text с помощью Newtonsoft.JSON, а потом просто сконкатенировал это в строку
0
Эксперт .NET
 Аватар для Usaga
14114 / 9331 / 1350
Регистрация: 21.01.2016
Сообщений: 35,065
19.10.2018, 07:00
DenKG, а, ладно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.10.2018, 07:00
Помогаю со студенческими работами здесь

Как распарсить json строку VK
Делаю запрос на VK API, получаю строку вида: Как теперь достать отсюда элементы? Нашел у себя &quot;DBXJSON.hpp&quot;, но ломаюсь с...

Как распарсить строку JSON и получить оттуда только одно значение?
Сервер возвращает мне длинную JSON строку. Из нее мне нужно вытащить только ID. Я сделал так: public class IDResponse { ...

Как правильно распарсить строку
Решил написать следующую программу, есть string One, в нем текст в такой форме: string One = &quot;{Привет|Здравствуйте|Добрый день}...

Как правильно распарсить строку?
Доброго дня всем. Подскажите, пожалуйста, как можно достать из текстовой строки вида: $str =...

Какой нужен бп для этого железа?
Какой нужен бп для этого железа?тот который стоит ..тянет еле-еле..спс Процессор: Intel Core i5 3450 Ivy Bridge Cooler Zalman CNPS7X LED ...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru