powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перевести код с python на c++
22 сообщений из 22, страница 1 из 1
Перевести код с python на c++
    #40047531
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите перевести код с 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
Перевести код с python на c++
    #40047546
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забей, это переводу не поддаётся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перевести код с python на c++
    #40047561
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

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

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

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

White Owl,

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

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

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

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

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

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

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

Арифметические действия не отличаются. Правда у питона арифметика длинная, так что и в
С++, возможно, придётся взять библиотеку длинной арифметики. С какой именно операцией у
тебя проблема?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перевести код с python на c++
    #40047591
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Перевести код с python на c++
    #40047608
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю Питон но я-бы спросил следующее.

Что-за библиотека 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
Перевести код с python на c++
    #40047609
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

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

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

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

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

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

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

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

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

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

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



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

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



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

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

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


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