Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
 Аватар для bedvit
1208 / 259 / 22
Регистрация: 20.05.2016
Сообщений: 1,136
Записей в блоге: 21

Сравнение производительности С++ и С# на конкретном примере

31.03.2017, 19:33. Показов 6571. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую знатоков С++ !
Можно ли на С++ вычислить быстрее, чем на C#, переменные для решения уравнения x ^ 3 + y ^ 3 = z ^ 3 - 1
К примеру в диапазоне до 100000.
Код на С#
Кликните здесь для просмотра всего текста
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
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading.Tasks;
 
namespace NET_Framework4
{
    //поиск переменных для решения уравнения x^3 + y^3 = z^3 - 1
    class Program
    {
        static long n;
        static long an;
        static long lim;
        static long k = 0;
        static long[] a;
        static int threadsN = Environment.ProcessorCount; //задать количество потоков
 
        static void Main(string[] args)
        {
            Console.WriteLine("Enter the maximum value of the variables for equation (x ^ 3 + y ^ 3 = z ^ 3 - 1), followed by <Enter>:\n");
            n = Convert.ToInt64(Console.ReadLine());
            Stopwatch sw = Stopwatch.StartNew();
            an = n * n * n;
            a = new long[n + 1];
            lim = (long)(Math.Pow((an - 1) / 2, 1d / 3d));
 
                for (long i = 1; i <= n; i++)
                    a[i] = i * i * i;
 
            var task = new List<Task>();
                for (int i = 1; i <= threadsN; i++)
                {
                    int k = i;
                    task.Add(new Task(() => Func(k)));
                }
            task.ForEach(t => t.Start());//стартуем task
            task.ForEach(t => t.Wait()); //ждем выполнения всех task
            sw.Stop();
            Console.WriteLine("Time {0}", sw.Elapsed);
            Console.Write("\nPress any key to continue... ");
            Console.ReadKey();
        }
 
        static void Func(long start)
        {
            long m = n;
            unsafe
            {
                fixed (long* a = Program.a)
                {
                    for (long x = start; x <= lim; x = x + threadsN)
                    {
                        long ax = a[x];
                        long r = an - ax - 1;
                        while (a[m] > r) m--;
                        long z = (long)(x * 1.2599);
 
                        for (long y = x; y <= m; y++)
                        {
                            long z3 = ax + a[y] + 1;
 
                            for (long az = a[z]; az <= z3; z++, az = a[z])
                            {
                                if (az == z3) Console.WriteLine(k++ + "   " + x + "   " + y + "   " + z);
                            }
                        }
                    }
                }
            }
        }
    }
}

Обсуждение на ветке С#.
Решение на C# прилагаю.
Вложения
Тип файла: rar XYZ_NET_Framework4.rar (3.2 Кб, 8 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.03.2017, 19:33
Ответы с готовыми решениями:

На конкретном примере
Добрый вечер! На конкретном примере показать как с помощью документа переносить данные из одного справочника в другой. Пусть это будет...

Маршрутизация на конкретном примере
ОС Win7 config Настройка протокола IP для Windows Имя компьютера . . . . . . . . . : NamePC Основной DNS-суффикс . ....

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

51
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
06.04.2017, 17:14
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от bedvit Посмотреть сообщение
на этапе компиляции не известно сколько логический ядер процессора будет в системе
Есть std::thread::hardware_concurrency().
Цитата Сообщение от bedvit Посмотреть сообщение
что бы не смешиваться у разных потоков
C++
1
2
s = to_wstring(k++) + L"   " + to_wstring(x) + L"   " + to_wstring(y) + L"   " + to_wstring(z) + L"\n";
std::wcout << s;
1
 Аватар для bedvit
1208 / 259 / 22
Регистрация: 20.05.2016
Сообщений: 1,136
Записей в блоге: 21
06.04.2017, 17:48  [ТС]
nmcf, я извиняюсь, у вас "s" это "std::string s" ?
не заходит так.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
06.04.2017, 18:04
Цитата Сообщение от bedvit Посмотреть сообщение
Что это даст?
извиняюсь, в данном случае такое не прокатит, просто показалось, что это константа.
0
 Аватар для bedvit
1208 / 259 / 22
Регистрация: 20.05.2016
Сообщений: 1,136
Записей в блоге: 21
06.04.2017, 19:36  [ТС]
nmcf, вместо
C++
1
2
3
SYSTEM_INFO sysinfo;
    GetSystemInfo(&sysinfo);
    threadsN = sysinfo.dwNumberOfProcessors;
сделал
C++
1
threadsN = thread::hardware_concurrency();
GbaLog-, все равно спасибо, почитал про constexpr.

Добавлено через 3 минуты
Где то упускаю (см.ниже), видимо нужен new. Пока не понимаю как проще реализовать запуск в разных потоках, через массив.
C++
1
2
3
4
5
6
    thread *thr = new thread[threadsN];
    
    for (int i = 1; i <= threadsN; i++)
    {
        thr[i] = thread(Func,i);
    }
Добавлено через 6 минут
Наверняка можно полернуть еще молотилку чисел (есть ли смысл в ассемблерных вставках?):
Кликните здесь для просмотра всего текста
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
void Func(long long start)
    {
        long long m = n;
        for (long long x = start; x <= lim; x = x + threadsN)
        {
            long long ax = a[x];
            long long r = an - ax - 1;
            while (a[m] > r)
            {
                m--;
            }
            long long z = static_cast<long long>(x * 1.2599);
 
            for (long long y = x; y <= m; y++)
            {
                long long z3 = ax + a[y] + 1;
 
                for (long long az = a[z]; az <= z3; z++, az = a[z])
                {
                    if (az == z3)
                    {
                        wcout << k++ << wstring(L"   ") << x << wstring(L"   ") << y << wstring(L"   ") << z << endl;
                    }
                }
            }
        }
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
06.04.2017, 20:33
Цитата Сообщение от bedvit Посмотреть сообщение
"s" это "std::string s"?
Нет, конечно. Это wstring.

Добавлено через 17 минут
C++
1
2
    vector<thread> thr(threadsN);
    for (int i = 1; i <= threadsN; ++i) thr[i - 1] = thread(Func, i);
1
 Аватар для bedvit
1208 / 259 / 22
Регистрация: 20.05.2016
Сообщений: 1,136
Записей в блоге: 21
07.04.2017, 11:30  [ТС]
Итого благодаря помощи форума вышло следующее:
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
#include "stdafx.h"
#include <string>
#include <vector>
#include <iostream>
#include <thread>
 
using namespace std;
 //поиск переменных для решения уравнения x^3 + y^3 = z^3 - 1
    long long n=0;
    long long an=0;
    long long lim=0;
    long long k=1;
    string s;
    vector<long long> a;
    int threadsN; //задать количество потоков
 
    void Func(long long start)
    {
        long long m = n;
        wstring s;
        for (long long x = start; x <= lim; x = x + threadsN)
        {
            long long ax = a[x];
            long long r = an - ax - 1;
            while (a[m] > r)
            {
                m--;
            }
            long long z = static_cast<long long>(x * 1.2599);
 
            for (long long y = x; y <= m; y++)
            {
                long long z3 = ax + a[y] + 1;
 
                for (long long az = a[z]; az <= z3; z++, az = a[z])
                {
                    if (az == z3)
                    {
                        s = to_wstring(k++) + L"   " + to_wstring(x) + L"   " + to_wstring(y) + L"   " + to_wstring(z) + L"\n";
                        wcout << s;
                    }
                }
            }
        }
 
    }
 
int main()
{
    threadsN = thread::hardware_concurrency();
    wcout << wstring(L"Enter the maximum value of the variables for equation (x ^ 3 + y ^ 3 = z ^ 3 - 1), followed by <Enter>:\n") << endl;
    getline(cin, s);
    n = stoll(s);
    unsigned int start_time = clock(); // начальное время
    an = n * n * n;
    a = vector<long long>(n + 1);
    lim = static_cast<long long>(pow((an - 1) / 2, 1.0 / 3));
 
    for (long long i = 1; i <= n; i++) a[i] = i * i * i;
 
    vector<thread> thr(threadsN);
    for (int i = 1; i <= threadsN; ++i) thr[i-1] = thread(Func, i);
    for (int i = 1; i <= threadsN; ++i) thr[i-1].join();
    
    unsigned int end_time = clock(); // конечное время
    unsigned int search_time = end_time - start_time; // искомое время
 
    wcout << wstring(L"Time ") << endl;;
    cout << (search_time / 1000.0) << endl;;
 
    system("pause");
    return 0;
    }
При компиляции через MVS2017, что бы .exe работал без выброса ошибки с требованием msvp140.dll, в свойствах проекта - С++ - Создание кода - Библиотека времени выполнения, выбрать: Многопоточная (MT), при сборке Release.
Вложения
Тип файла: rar C++(x^3+y^3=z^3-1).rar (198.4 Кб, 2 просмотров)
0
 Аватар для bedvit
1208 / 259 / 22
Регистрация: 20.05.2016
Сообщений: 1,136
Записей в блоге: 21
07.04.2017, 11:36  [ТС]
С++ примерно на 8% быстрее. (считал в диапазоне переменных до 300 тыс.)
0
 Аватар для Nosey
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
07.04.2017, 11:54
bedvit, А шарповый Stopwatch возвращает процессорное время? Он зависит от количества рабочих потоков?
Если не зависит, то всё примерно ок. Но если зависит, то в плюсах используйте :
C++
1
2
3
4
5
6
#include <chrono>
....
auto start_time = std::chrono::high_resolution_clock::now();
....
auto end_time = std::chrono::high_resolution_clock::now();
auto search_time = std::chrono::duration_cast<std::chrono::microseconds>(end_time - start_time).count(); // искомое время
0
 Аватар для bedvit
1208 / 259 / 22
Регистрация: 20.05.2016
Сообщений: 1,136
Записей в блоге: 21
07.04.2017, 12:53  [ТС]
Если прогнать несколько итераций в диапазоне до 500 тыс., то время выполнения примерно меньше на 6-8%. Каждый проход уменьшается по времени и в плюсах и в шарпе.

Добавлено через 3 минуты
Nosey, вот что пишут здесь (машинный перевод).
Кликните здесь для просмотра всего текста
Stopwatch Измеряет затраченное время с помощью подсчета тактов таймера в базового механизма таймера. Если установленное оборудование и операционная система поддерживают счетчики производительности высокого разрешения, то Stopwatch класс использует этот счетчик для измерения затраченного времени. В противном случае — Stopwatch класс использует системного таймера для измерения затраченного времени. ...

...На многопроцессорном компьютере он не имеет значения, на каком процессоре выполняется поток. Однако из-за ошибок в BIOS или слой абстрагирования оборудования (HAL), можно получить различные результаты расчета времени на разных процессорах. Чтобы задать сходство процессоров для потока, используйте ProcessThread.ProcessorAffinity метод.
0
 Аватар для Nosey
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
07.04.2017, 13:28
Цитата Сообщение от bedvit Посмотреть сообщение
вот что пишут здесь (машинный перевод).
Да, это я погуглил предварительно, но это не дало мне уверенности, поэтому и написал.
Просто запустите шарповый код на одном потоке, и если выведенный результат времени сохранится с результатом многопоточной версии - то всё ок, если же будет много больше, то у меня для шарпа очень плохие новости.
Ну а вообще, я помню что, шарп отлично справляется с числодробилками, поэтому думаю что всё верно, но вам бы советовал таки проверить.
0
 Аватар для bedvit
1208 / 259 / 22
Регистрация: 20.05.2016
Сообщений: 1,136
Записей в блоге: 21
07.04.2017, 15:48  [ТС]
На ПК послабее, выигрыш на 20%, отчего так?

Добавлено через 2 минуты
Цитата Сообщение от Nosey Посмотреть сообщение
на одном потоке
выполняется дольше, что логично
0
 Аватар для Nosey
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
07.04.2017, 16:11
Цитата Сообщение от bedvit Посмотреть сообщение
На ПК послабее, выигрыш на 20%, отчего так?
Не знаю но и это не важно, ибо:
Цитата Сообщение от bedvit Посмотреть сообщение
выполняется дольше, что логично
, тогда в плюсовом коде, для измерения времени, используйте код из 28 сообщения. Поскольку в плюсовом коде(std::clock) вы изменяли "время" всех потоков.
И оптимизируйте шарповую версию, если это челендж С++ vs C#

На всякий случай мануалы:
http://en.cppreference.com/w/cpp/chrono/c/clock
http://en.cppreference.com/w/cpp/chrono
0
 Аватар для bedvit
1208 / 259 / 22
Регистрация: 20.05.2016
Сообщений: 1,136
Записей в блоге: 21
07.04.2017, 16:44  [ТС]
проверил на секундомере тупо с телефона, из-за несовершенства срабатывания пальца получил отклонения в 5% результатов в секундомере от результатов в программе. Можете сами проверить. Посему точность для данного вида сравнения приемлемая. Сравнил на двух ПК, .exe-ки, 6 подходов.
Добавил и ваш код, результат в рамках погрешности измерения (т.е. не изменился)
Кликните здесь для просмотра всего текста
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
// ConsoleApplication4.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <string>
#include <vector>
#include <iostream>
#include <thread>
 
using namespace std;
//поиск переменных для решения уравнения x^3 + y^3 = z^3 - 1
    long long n=0;
    long long an=0;
    long long lim=0;
    long long k=1;
    string s;
    vector<long long> a;
    int threadsN; //задать количество потоков
 
    void Func(long long start)
    {
        long long m = n;
        wstring s;
        for (long long x = start; x <= lim; x = x + threadsN)
        {
            long long ax = a[x];
            long long r = an - ax - 1;
            while (a[m] > r)
            {
                m--;
            }
            long long z = x * 12599/10000;
 
            for (long long y = x; y <= m; y++)
            {
                long long z3 = ax + a[y] + 1;
 
                for (long long az = a[z]; az <= z3; z++, az = a[z])
                {
                    if (az == z3)
                    {
                    s = to_wstring(k++) + L"   " + to_wstring(x) + L"   " + to_wstring(y) + L"   " + to_wstring(z) + L"\n";
                        wcout << s;
                    }
                }
            }
        }
 
    }
 
int main()
{
    threadsN = thread::hardware_concurrency();
    wcout << wstring(L"Enter the maximum value of the variables for equation (x ^ 3 + y ^ 3 = z ^ 3 - 1), followed by <Enter>:\n") << endl;
    getline(cin, s);
    n = stoll(s);
    //unsigned int start_time = clock(); // начальное время
    auto start_time = std::chrono::high_resolution_clock::now();
    an = n * n * n;
    a = vector<long long>(n + 1);
    lim = static_cast<long long>(pow((an - 1) / 2, 1.0 / 3));
 
    for (long long i = 1; i <= n; i++) a[i] = i * i * i;
 
    vector<thread> thr(threadsN);
    for (int i = 1; i <= threadsN; i++) thr[i-1] = thread(Func, i);
    for (int i = 1; i <= threadsN; i++) thr[i-1].join();
    
    //unsigned int end_time = clock(); // конечное время
    auto end_time = std::chrono::high_resolution_clock::now();
    //unsigned int search_time = end_time - start_time; // искомое время
    auto search_time = std::chrono::duration_cast<std::chrono::microseconds>(end_time - start_time).count(); // искомое время
    
    wcout << wstring(L"Time ") << endl;;
    cout << (search_time / 1000000.0) << endl;;
 
    system("pause");
    return 0;
    }


Добавлено через 2 минуты
Цитата Сообщение от Nosey Посмотреть сообщение
оптимизируйте шарповую версию
Что конкретно?
0
 Аватар для Nosey
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
07.04.2017, 17:39
Цитата Сообщение от bedvit Посмотреть сообщение
Добавил и ваш код, результат в рамках погрешности измерения (т.е. не изменился)
Это очень странно.
Попробуйте следующий код :
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
// ConsoleApplication4.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <string>
#include <vector>
#include <iostream>
#include <thread>
#include <ctime>
#include <cmath>
 
using namespace std;
//поиск переменных для решения уравнения x^3 + y^3 = z^3 - 1
long long n = 0;
long long an = 0;
long long lim = 0;
long long k = 1;
string s;
vector<long long> a;
int threadsN; //задать количество потоков
 
void Func(long long start) {
    long long m = n;
    wstring s;
    for (long long x = start; x <= lim; x = x + threadsN) {
        long long ax = a[x];
        long long r = an - ax - 1;
        while (a[m] > r) {
            m--;
        }
        long long z = x * 12599 / 10000;
 
        for (long long y = x; y <= m; y++) {
            long long z3 = ax + a[y] + 1;
 
            for (long long az = a[z]; az <= z3; z++, az = a[z]) {
                if (az == z3) {
                    s = to_wstring(k++) + L"   " + to_wstring(x) + L"   "
                            + to_wstring(y) + L"   " + to_wstring(z) + L"\n";
//                  wcout << s;
                }
            }
        }
    }
 
}
 
void doIt(unsigned int threadCount) {
    threadsN = threadCount;
    unsigned int start_time_clock = clock(); // начальное время
    auto start_time = std::chrono::high_resolution_clock::now();
    an = n * n * n;
    a = vector<long long>(n + 1);
    lim = static_cast<long long>(pow((an - 1) / 2, 1.0 / 3));
 
    for (long long i = 1; i <= n; i++)
        a[i] = i * i * i;
 
    vector<thread> thr(threadsN);
    for (int i = 1; i <= threadsN; i++)
        thr[i - 1] = thread(Func, i);
    for (int i = 1; i <= threadsN; i++)
        thr[i - 1].join();
 
    unsigned int end_time_clock = clock(); // конечное время
    auto end_time = std::chrono::high_resolution_clock::now();
    double search_time_clock = end_time_clock - start_time_clock; // искомое время
    auto search_time = std::chrono::duration_cast<std::chrono::microseconds>(
            end_time - start_time).count(); // искомое время
 
    wcout << "thread count : " << threadCount << endl;
    wcout << "chrono time: " << search_time << endl;
    wcout << "clock time: " << search_time_clock / CLOCKS_PER_SEC * 1000000
            << std::endl;
}
 
int main() {
    wcout
            << wstring(
                    L"Enter the maximum value of the variables for equation (x ^ 3 + y ^ 3 = z ^ 3 - 1), followed by <Enter>:\n")
            << endl;
    getline(cin, s);
    n = stoll(s);
 
    doIt(1);
    doIt(thread::hardware_concurrency());
 
    system("pause");
 
    return 0;
}
Цитата Сообщение от bedvit Посмотреть сообщение
Что конкретно?
Я очень далёк от шарпа, извините.

Добавлено через 12 минут
bedvit, Пардоньте, в винде clock возвращает wall clock. Все мои предыдущие слова вас не должны волновать.
0
 Аватар для bedvit
1208 / 259 / 22
Регистрация: 20.05.2016
Сообщений: 1,136
Записей в блоге: 21
07.04.2017, 18:56  [ТС]
Nosey, вот и хорошо, что все выяснилось
Вопрос знатокам солнцеликого АССЕМБЛЕРА: будет ли прирост производительности, если перевести числодробилку в ассемблерную вставку в функции Func (в Visual Studio через __asm (?)) И насколько сложно создать код. Далек от этого, как программист VBA от C#.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.04.2017, 21:06
Каких чудес ты ожидаешь от ассемблера? Компилятор C++ и так оптимизирует.
0
 Аватар для bedvit
1208 / 259 / 22
Регистрация: 20.05.2016
Сообщений: 1,136
Записей в блоге: 21
10.04.2017, 11:01  [ТС]
Хочу понять, сколько еще можно будет отжать времени.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
10.04.2017, 12:03
Не смысла время тратить. Включи максимальную оптимизацию и всё. Тем более, что ты не знаешь ассемблер.
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
10.04.2017, 13:19
bedvit, какой алгоритм используешь, скинь ссылочку или объясни на пальцах.
0
 Аватар для bedvit
1208 / 259 / 22
Регистрация: 20.05.2016
Сообщений: 1,136
Записей в блоге: 21
10.04.2017, 13:33  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Включи максимальную оптимизацию
студия 2017->в свойствах с/с++ ->Оптимизация? Или есть еще нюансы ?
Есть некоторое убеждение, что прямые руки в ассемблере быстрее компилятора.
Ассемблер я не знаю - это верно, надеюсь на помощь форума и знающего человека, которому будет интересно сравнить результаты (платформа x64).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2017, 13:33
Помогаю со студенческими работами здесь

Принцип работы цикла на конкретном примере
Приветствую, форумчане. Учу PHP. В процессе обучения наткнулся на пример использования данных из массива в цикле: &lt;?php ...

Оптимальная реализация построения БД на конкретном примере
Добрый день! Вопрос следующий: базу данных вроде как принято наполнять посредством добавления новых записей. А что если у меня...

Использование функции округления на конкретном примере
Как использовать функцию округления на конкретном примере: #include &lt;iostream&gt; #include &lt;Math.h&gt; using namespace std; int...

Как распарсить JSON на джаве на конкретном примере?
I have the following JSON text that I need to parse to get &quot;id&quot;: 176514, What is the required code? Help my please!!! ...

Написать математическое решение задачи на конкретном примере
Здравствуйте, помогите пожалуйста написать математическое решение на конкретном примере. Условия задачи: Пользователь вводит 10 записей...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru