Гость
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перевести код с python на c++ / 22 сообщений из 22, страница 1 из 1
20.02.2021, 15:44
    #40047531
xamelione25
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
Помогите перевести код с python на c++ дополнительно добавив вывод значений в excel из строки 25
авторprint(*list(zip(bins, lambd * np.exp(-lambd * bins))), sep='\n')
**********************************
Код: python
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.
import numpy as np
if __name__ == '__main__':
    import matplotlib.pyplot as plt
    lambd1 = 0.1
    N = 10000
    def expa(lambd, N):
        import random
        import math
        xi = []
        yi = []
        sum = 0
        sig = 0
        for i in range(N):
            xi.append(random.random())
            yi.append(-1/lambd * math.log(xi[i]))
            sum += yi[i]
        my = sum / N
        for i in range(N):
            sig = (yi[i] - my) ** 2
        sig = sig / (N - 1)
        return yi
    arr = expa(lambd1, N)
    def test_exponential(lambd, arr):
        count, bins, ignored = plt.hist(arr, 30, density=True)
        print(*list(zip(bins, lambd * np.exp(-lambd * bins))), sep='\n')
        plt.plot(bins, lambd * np.exp(-lambd*bins), linewidth=1, color='y')
        i = 0
        plt.grid()
        plt.show()
    s = test_exponential(lambd1, arr)
...
Рейтинг: 0 / 0
20.02.2021, 16:35
    #40047546
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
Забей, это переводу не поддаётся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.02.2021, 17:54
    #40047561
xamelione25
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
Dimitry Sibiryakov,

ну подается или нет,

мне нужно просто таже самое выполнить только на c++ просто нарисовать график и его опорные точки по которым он строиться - вывести в иксель
...
Рейтинг: 0 / 0
20.02.2021, 17:58
    #40047563
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
С++ тебе зачем? Такие задачи на нем неудобно решать, возьми C#, производительность почти такая же и есть готовые библиотеки под твою задачу.
...
Рейтинг: 0 / 0
20.02.2021, 17:59
    #40047565
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
xamelione25,

Заплатишь за перевод?
...
Рейтинг: 0 / 0
20.02.2021, 18:04
    #40047566
xamelione25
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
Dima T,

White Owl,

поймите я сам понимаю что некоторые не просто так на питоне сделали...

у меня основа уже сделана на c++ и мне нужно просто сделать график, даже правильнее сказать не сам мне график сделать как просто значения координат точек вывести в иксель по которым я потом смогу в самому икселе график построить

мне сама прорисовка графика не так важна
...
Рейтинг: 0 / 0
20.02.2021, 18:42
    #40047570
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
xamelione25даже правильнее сказать не сам мне график сделать как просто значения координат точек
вывести в иксель

Как тебе уже сказали в предыдущем топике: выводи данные в CVS файл. Всё упрощается тем,
что они у тебя числовые. В чём проблема?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.02.2021, 20:15
    #40047586
xamelione25
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
Dimitry Sibiryakov,

Да проблема не с выводом в excel ...

проблема в том что мне нужно просто координаты формируемого графика вывести (даже не сам график) .... хоть в txt ...(в excel не сильно принципиально)

а там это выполнено в питоне..... вот у меня возник ступор.... чтобы сделать аналогично на c++
...
Рейтинг: 0 / 0
20.02.2021, 20:30
    #40047588
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
xamelione25а там это выполнено в питоне..... вот у меня возник ступор.... чтобы сделать аналогично на c++

Арифметические действия не отличаются. Правда у питона арифметика длинная, так что и в
С++, возможно, придётся взять библиотеку длинной арифметики. С какой именно операцией у
тебя проблема?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.02.2021, 20:52
    #40047591
xamelione25
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
Dimitry Sibiryakov,


Dimitry Sibiryakov
С какой именно операцией у
тебя проблема?


ну смотрите, у меня есть программа на с++
Код: plaintext
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.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
#include<iostream>
#include<conio.h>
#include<locale.h>
#include<math.h>
#include<time.h>
#include<cmath>
#include<fstream>
#include<string>
float tpostyp = 0;//random
float tobrk = 0;//random
float tobrevm = 0;//random
int k = 0;
int t0 = 0;
int emkost = 0;
float lambda = 0.1;
float Xi = 0;
bool KanalSvob = true;
float proizvoditelnost = 0;
float stoimost = 0;
float cena = 1;
float vsignala = 0.01;
float p = 0;
using namespace std;

float FuncPostuplenie_v_kanal_vrem(int regim)
{
	if (regim == 2)
	{
		return tpostyp = 10;
	}
	else
	{
		Xi = (double)(1 + rand() % 100) / 100;
		tpostyp = -1 / 0.1 * log(Xi);
		return tpostyp;
	}
}
float FuncObrabotka_v_kanal_vrem(int regim)
{
	if (regim == 2)
	{
		return tobrk = 10;
	}
	else
	{
		Xi = (double)rand() / RAND_MAX;
		tobrk = 1.5 * cos(2 * 3.14 * Xi) * sqrt(-2 * log(Xi)) + 10;
		return tobrk;
	}
}
float FuncObrabotka_v_evm_vrem(int regim)
{
	if (regim == 2)
	{
		return tobrevm = 33;
	}
	else
	{
		Xi = (double)rand() / RAND_MAX;
		tobrevm = 3 * cos(2 * 3.14 * Xi) * sqrt(-2 * log(Xi)) + 33;
		return tobrevm;
	}
}
float FuncEmkost(int regim)
{
	if (regim == 2)
	{
		return emkost = 4;
	}
	else
	{
		return emkost = 2 + rand() % 6;
	}
}

int main()
{
	int N = 0;
	int reg = 0;
	int j = 0;
	int min = -1;
	int mindex = 0;
	string stroka = "";
	//int **Mass;
	setlocale(LC_ALL, "Russian");
	srand(time(NULL));
	ofstream f1;
	f1.open("log.txt", ios_base::trunc);
	if (f1)
	{
		cout << "Файл успешно открыт для записи в него статистики" << endl;
	}
	cout << "	Введите количество ЭВМ, участвующих в процессе = ";
	cin >> N;//столько будет массивов (очередей)
	f1 << "Всего ЭВМ " << N << endl;
	int* MassEVM = new int[N];
	for (int i = 0; i < N; i++)
	{
		MassEVM[i] = 0;//эвм без сигналов
	}
	int* EmkostEVM = new int[N];//массив емкостей эвм
	for (int i = 0; i < N; i++)
	{
		EmkostEVM[i] = 4;//инициализация
	}
	int* countSignalEVM = new int[N];//сколько сигналов обработала каждая эвм (для статистики)
	for (int i = 0; i < N; i++)
	{
		countSignalEVM[i] = 0;//инициализация
	}
	int countDestroySignal = 0;//сколько сигналов было уничтожено из - за смены емкости эвм
	int* SvobodnostEVM = new int[N];//состояние  емкостей эвм 0 -свободно, 1-работает
	for (int i = 0; i < N; i++)
	{
		SvobodnostEVM[i] = 0;//инициализация
	}
	int* TimerEVM = new int[N];//Таймер на каждой ЭВМ, отвечающий за обработку сигнала
	for (int i = 0; i < N; i++)
	{
		TimerEVM[i] = 0;//инициализация
	}
	int buffer = 10000;
	cout << "Введите режим работы генератора 1- случайно, 2 - постоянно" << endl;
	cin >> reg;
	float time1 = 0;
	float time2 = 0;
	float time3 = 0;
	float tend1 = 0;
	float tend2 = 0;
	float* tend3 = new float[N];
	for (int i = 0; i < N; i++)
	{
		tend3[i] = 0;
	}
	bool flag = true;
	bool newsignal = false;
	bool flagkanal = true;
	int* flagevm = new int[N];
	for (int i = 0; i < N; i++)//0 - свободная, 1 - обрабатывает
	{
		flagevm[i] = 0;
	}
	do
	{
		t0 = t0 + 1;
		if (KanalSvob == true)//проверка на свободность канала
		{
			if (flagkanal == true)
			{
				tend1 = t0 + (time1 = FuncPostuplenie_v_kanal_vrem(reg));
				//f1 << "Yi " << tpostyp << endl;
				flagkanal = false;
			}
			KanalSvob = false;
		}
		else
		{
			if (buffer != 0)//если в буфере есть место, заносим сигнал в него
			{
				buffer--;//буфер уменьшен на величину сигнала
			}
		}
		//начало обработки сигнала в канале
		if (KanalSvob == false)//значит в канале есть сигнал
		{
			if (flag == true)
			{
				tend2 = t0 + (time2 = FuncObrabotka_v_kanal_vrem(reg));
				flag = false;
			}
			if (t0 < tend2)
			{//идет обработка сигнала
			}
			else
			{
				k++;//увеличиваем счетчик количества обработанных сигналов на 1
				newsignal = true;
				f1 << "Прошло " << t0 << " мск " << " Канал " << KanalSvob << " Из канала вышел новый сигнал. Всего сигналов обработано в канале = " << k << endl;
				if (t0 >= tend1)
				{
					KanalSvob = true;
					flag = true;
					flagkanal = true;
					buffer++;//берем из буфера следующий необработанный сигнал и освобождаем место
				}
			}
		}
		//поступление в ЭВМ
		if ((k != 0) && (newsignal == true))
		{
			//min=FuncCountElementinEVM(MassEVM,N); //ищем ЭВМ с наименьшей занятостью
			min = MassEVM[0];
			mindex = 0;
			for (j = 1; j < N; j++)//проход по каждой эвм
			{
				if (MassEVM[j] < min)//ищем наименьший элемент в очереди эвм
				{
					min = MassEVM[j];///////!!!!!
					mindex = j;
				}
			}
			//cout<<"минимальный элемент равен"<<min;
			MassEVM[mindex] = MassEVM[mindex] + 1;//добавляем сигнал в очередь на обработку ЭВМ
			if (MassEVM[mindex] > 0)//если машина обрабатывает сигнал, то её емкость не меняем
			{
				SvobodnostEVM[mindex] = 1;
				time3 = FuncObrabotka_v_evm_vrem(reg);
				TimerEVM[mindex] = time3;//Заводим таймер для выбранной ЭВМ
			}
		}
		//сама обработка
		for (int j = 0; j < N; j++)
		{
			if ((flagevm[j] == 0) && (newsignal == true))
			{
				tend3[j] = t0 + TimerEVM[j];
				flagevm[j] = 1;
				newsignal = false;
			}
			if (t0 <= tend3[j])
			{
				//сигнал еще обрабатывается
				f1 << "Прошло " << t0 << " мск" << "Канал " << KanalSvob << " Сигнал обрабатывается в " << j + 1 << " ЭВМ" << endl;
				for (int index = 0; index < N; index++)
				{
					if (SvobodnostEVM[index] == 0)//если ЭВМ не работает, то изменяем её емкость
					{
						EmkostEVM[index] = FuncEmkost(reg);
						countDestroySignal = countDestroySignal + MassEVM[index];
						MassEVM[index] = 0;//очищаем очередь ЭВМ, т.к была изменена её ёмкость
					}
				}
			}
			else
			{
				//SvobodnostEVM[j]=0;
				for (int index3 = 0; index3 < N; index3++)
				{
					if ((t0 > tend3[index3]) && (tend3[index3] > 0) && (SvobodnostEVM[index3] == 1))//вм закончила обработку
					{
						if (flagevm[index3] == 1)
						{
							SvobodnostEVM[index3] = 0;
							countSignalEVM[index3] = countSignalEVM[index3] + 1;//увеличиваем счетчик количесва обработанных ЭВМ сигналов
							f1 << "Прошло " << t0 << " мск" << "Сигнал обработался в " << index3 + 1 << " ЭВМ" << endl;
							TimerEVM[index3] = 0;//обнуляем таймер ЭВМ, которая закончила свою работу
							flagevm[index3] = 0;
						}
					}
				}
			}
		}
		if (min == -1)
		{
			f1 << "Прошло " << t0 << " мск " << " Канал " << KanalSvob << " Сигнал обрабатывается в канале и не поступал в ЭВМ" << endl;
		}
		else
		{
		}
	} while ((k < 1000) && (buffer != 0));//k=1000
	cout << "Запись в файл завершена" << endl;
	int signalovobr = 0;
	f1 << "Прошло " << t0 << " мск " << " Канал " << KanalSvob << " Обработка завершена. Обработано сигналов каждой ЭВМ:" << endl;
	for (int index = 0; index < N; index++)
	{
		f1 << "ЭВМ № " << index + 1 << " " << countSignalEVM[index] << endl;
		signalovobr = signalovobr + countSignalEVM[index];
	}
	f1 << "В результате изменения емкости ЭВМ было уничтожено " << countDestroySignal << " сигналов" << endl;
	proizvoditelnost = float(k) / float(t0);
	stoimost = signalovobr * cena;
	p = emkost / vsignala / k;
	f1 << "Производительность системы = " << proizvoditelnost << " сигналов / мск " << endl;
	f1 << "Стоимость обработки сигналов  в ЭВМ = " << stoimost << " руб." << endl;
	f1 << "Вероятность переполнения накопителя = " << p << endl;
	f1.close();
	system("Pause");
}



мне нужно чтобы процедура авторFuncPostuplenie_v_kanal_vrem выполняла те манипуляции которые выполняются (прописаны) в коде из первого поста, за исключением формирования графика. Не принципиально куда должны будут выводиться координаты сформированного графика или в txt или в xlsx - без разницы.
...
Рейтинг: 0 / 0
20.02.2021, 22:38
    #40047608
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
Не знаю Питон но я-бы спросил следующее.

Что-за библиотека Numpy. Что-то с числами? Длинная арифметика? Нужно найти ей аналог в сях.

Что за отсутсвие типизации в шапке функции? Какой тип она возвращает.
Код: python
1.
2.
3.
4.
5.
6.
import numpy as np
if __name__ == '__main__':
    import matplotlib.pyplot as plt
    lambd1 = 0.1
    N = 10000
    def expa(lambd, N):



Предположительно это может быть аналог

Код: plaintext
1.
2.
3.
std::vector<double> expa(double lambd, int N) {

}



Но я-бы еще проверил. Чортов змей выводит типы в рантайме.
...
Рейтинг: 0 / 0
20.02.2021, 22:46
    #40047609
xamelione25
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
mayton,

Да питоновский код он чисто чтобы показать сам факт формирования координат графика.... Я его вставил, чтобы просто показать, то как там эти координаты вычисляются/генерируются.

Там тоже самое фактически есть и в коде c++ в том что я скинул... Но там нету просто вывода самих этих координат графика...

У меня сама проблема то в том что мне нужно чтобы у меня эти координаты отображались
...
Рейтинг: 0 / 0
20.02.2021, 23:10
    #40047612
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
xamelione25Но там нету просто вывода самих этих координат графика...

Как это нет? Там же в каждой второй строчке что-то выводится в f1.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.02.2021, 23:18
    #40047613
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
Непонятно зачем там что-то про Excel написано. Это только сбивает с толку читающего.

Лучше сразу писать что выводим в текстовый файл в нужном формате.
...
Рейтинг: 0 / 0
21.02.2021, 00:10
    #40047615
xamelione25
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
mayton, Dimitry Sibiryakov,

вот посмотрите как получается на скрине итоговый вывод значений - вот мне так же нужно чтобы у меня выводилось или в txt или xlsx, с помощью кода c++
...
Рейтинг: 0 / 0
21.02.2021, 01:20
    #40047619
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
xamelione25вот мне так же нужно чтобы у меня выводилось или в txt или xlsx, с помощью кода c++

Ну значит берите и строчку за строчкой гугльте. Потом пишите аналог этой строчки на С++.
Про отдельные особо заковыристые строки можете спросить здесь.

А чтобы "у меня есть <нагугленные много нипанятных букаф>, а мне нужно чтобы они делали
<другие нагугленные буквы>" - это так на форуме не работает.

PS: И таки да, два приведённых листинга делают совершенно разные вещи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.02.2021, 14:08
    #40047894
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
Это что?

Код: python
1.
import matplotlib.pyplot as plt



Поддержка графического виджета для рисования графиков и диаграмм?
Как это переносить на С++? Подозреваю что никак. Тогда вызывать из С++
Python приложение как процесс? Какое-то извращение выходит.
...
Рейтинг: 0 / 0
22.02.2021, 21:33
    #40048012
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
это стиль милторга
...
Рейтинг: 0 / 0
23.02.2021, 11:38
    #40048091
NekZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
Nuitka в помощь
...
Рейтинг: 0 / 0
23.02.2021, 12:08
    #40048100
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
NekZ, учитывая нулевой уровень вопрощающего, данный совет столь-же полезен
как и совет мастера Йоды - "использовать силу".
...
Рейтинг: 0 / 0
23.02.2021, 14:13
    #40048131
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
mayton
Это что?

Код: python
1.
import matplotlib.pyplot as plt



Поддержка графического виджета для рисования графиков и диаграмм?
Как это переносить на С++? Подозреваю что никак. Тогда вызывать из С++
Python приложение как процесс? Какое-то извращение выходит.

Модератор: Редактировано

https://matplotlib-cpp.readthedocs.io/en/latest/
...
Рейтинг: 0 / 0
23.02.2021, 14:21
    #40048134
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести код с python на c++
Хм.. не знал про Matplotlib.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перевести код с python на c++ / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]