С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
1 / 1 / 1
Регистрация: 10.12.2015
Сообщений: 91

Перевести с С++ на Python

04.02.2016, 13:55. Показов 2654. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание: вычислить скалярную величину по формуле
https://www.cyberforum.ru/cgi-bin/latex.cgi?G = \frac{1+\sum }{\sum_{}^{}}
элементы массива заполнить с помощью генератора случайных чисел. Сделал на С++, все в норме. Сделал на Пайтоне, вышел шлак..
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
#include <iostream>
#include <cmath>
 
const int n = 10;
float X[n];
 
double sum();
 
using namespace std;
 
int main()
{
cout << "Massiv X" << endl;
for (int i = 0; i < n; i++)
{
X[i] = rand() % 20 + sin(i) - 9;
cout << X[i] << " ";
}
 
cout << endl;
double g;
if (sum()!=0)
{ g = (1 + sum()) / (sum());
cout << "g=" << g << endl; }
else cout<<"Sum=0"<<endl;
}
 
double sum()
{
double S = 0;
 
for (int i = 0; i < n; ++i)
S += X[i];
 
return S;
}
Code
1
2
3
4
 Результат этой проги норм
Massiv X
-6 -2.15853 8.9093 6.14112 3.2432 5.04108 -3.27942 3.65699 0.989358 -7.58788 
g=1.11167
На пайтоне:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#Lab 7 variant 13
import math
import random
n=(input("Enter the count of elements in array: "))
a=[]
sum=0
for x in xrange(n) :
    a.append(x)
print "Array is: ", a
def sum( ):
    i=0
    while i<a:
        sum+=x[i]
    print "Summa: ",sum
    return sum
    if sum!=0:
        G=(1+sum())/sum()
        print("G = ",G)
    else:
        print("g=0")
Code
1
2
3
4
5
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/py_compile.py", line 117, in compile
    raise py_exc
py_compile.PyCompileError: Sorry: IndentationError: unexpected indent (prog.py, line 18)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.02.2016, 13:55
Ответы с готовыми решениями:

Перевести с c++ на Python
#include &lt;bits/stdc++.h&gt; using namespace std; int main() { #ifdef _DEBUG freopen(&quot;input.txt&quot;, &quot;r&quot;, stdin); ...

Перевести С++ на Python
Требуется вставить в данный массив на данное место данный элемент, сдвинув остальные элементы вправо. Входные данные В первой...

Перевести с C++ на python
Плохо разбираюсь в Питоне, помогите перевести пожалуйста код. vector&lt;int&gt; dp; vector&lt;int&gt; take; int f(const...

13
21 / 21 / 2
Регистрация: 31.12.2015
Сообщений: 100
04.02.2016, 14:54
n - это тип str, а xrange(n) ожидает тип int в качестве аргумента. Сначала sum = 0, т.е. объект int, потом sum объявляется как функция, которая нигде не вызывается. Я могу ошибаться, сам только учусь, причем другой версии языка, но import ни к чему...print("G = ", G) точно не должен выглядеть примерно как print("G = %s" % G) - ?...Короче, каша...
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
04.02.2016, 17:12
sum — зарезервированное слово.
import — зачем что-то импортировать если не использовать
def sum — определили функцию и нигде её не вызываете
return sum — поскольку инструкция безусловная код на этом остановился.

== Короче полная каша. Разберитесь с синтаксисом языка, а потом пробуйте что-то писать на нем.
1
1 / 1 / 1
Регистрация: 10.12.2015
Сообщений: 91
04.02.2016, 20:55  [ТС]
Marinero, подправил, выдает ошибку, не могу понять что это значит:
Code
1
2
3
4
5
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/py_compile.py", line 117, in compile
    raise py_exc
py_compile.PyCompileError: Sorry: IndentationError: unexpected indent (prog.py, line 16)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
n=int(input("Enter the count of elements in array: "))
a=[]
s=0
for x in xrange(n) :
    a.append(x)
print "Array is: ", a
def sum( ):
    i=0
    while i<a:
        s+=x[i]
    print "Summa: ",s
    return s
if sum()!=0:
    G=(1+sum())/(sum())
    print("G = %s" % G)
else:
    print("g=0")
0
21 / 21 / 2
Регистрация: 31.12.2015
Сообщений: 100
04.02.2016, 21:12
Я завтра тебе код напишу, сейчас я на работе просто.
1
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
04.02.2016, 21:32
Лучший ответ Сообщение было отмечено Nickname_2015 как решение

Решение

Nickname_2015, Смысл смотреть ошибки, когда в самой программе 0 логики…
Цитата Сообщение от Nickname_2015 Посмотреть сообщение
X[i] = rand() % 20 + sin(i) - 9
Это где? И вообще, напиши словами, что именно ты хочешь сделать, а то код такой кривой, как и формула в задании — ничего не понятно.

Добавлено через 7 минут
Python
1
2
3
4
5
from random import randint
from math import sin
 
print(1 + 1 / sum(randint(1, 20) + sin(i) - 9 
                  for i in range(int(input("Enter the count of elements in array: ")))))
1
21 / 21 / 2
Регистрация: 31.12.2015
Сообщений: 100
04.02.2016, 21:41
Формула-то дана в задании, или придумана самостоятельно? Я имею ввиду формулу случайного числа.
1
1 / 1 / 1
Регистрация: 10.12.2015
Сообщений: 91
04.02.2016, 22:12  [ТС]
xPANICx, с методички на С взял, а в задании дана формула для нахождения скалярной величины.
Marinero, Хочу чтоб прога вычисляла G.
Задание: вычислить скалярную величину с помощью данной формулы G=1+S(x[i])/S(x[i]),
элементы массива заполнить с помощью генератора 10 случайных чисел+исп.подпрограмму-функцию. Сделал на С++, выдает нужный результат:
Code
1
2
3
4
 
Massiv X
-6 -2.15853 8.9093 6.14112 3.2432 5.04108 -3.27942 3.65699 0.989358 -7.58788 
g=1.11167
а нужно на пайтоне сделать, я совсем недавно начал изучать пайтон, знаю, что большую роль играют ПРОБЕЛЫ.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
04.02.2016, 23:28
Nickname_2015, Да сделано уже, глазки подыми!
1
21 / 21 / 2
Регистрация: 31.12.2015
Сообщений: 100
05.02.2016, 08:24
Лучший ответ Сообщение было отмечено Nickname_2015 как решение

Решение

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#encoding: utf-8
#language: russian
#Python version: 3.4.4
 
#Определяем функцию перед её вызовом, поскольку это интерпретатор (лучше в самом начале)
#Функция считает сумму элементов массива, а затем и значение G
#В случае, если сумма элементов массива = 0, то G = 0
def calculate():
total = 0
    for x in my_lab_array:
        total += x
    try:
        calculate.G = (1 + total)/total
    except ZeroDivisionError:
        calculate.G = 0
    return calculate.G
 
#Начало программы.
#Запрашиваем кол-во(size)элементов массива.
#Защищаемся от ввода неверного типа данных.
choice_acceptable = False
while not choice_acceptable:
    size = input("Введите кол-во элементов массива: ")
    try:
        size = abs(int(size))
        choice_acceptable = True
    except ValueError:
        print("Неверно. Повторите ввод и введите целое число.")
 
print("Ввод произведен успешно. Число элементов в массиве: ", size)
 
#Создаем массив в виде списка с кол-вом элементов = size
#Наполняем его случайными числами
#Выводим массив на экран
from random import randint
from math import sin
my_lab_array = []
for x in range(size):
    element = randint(0,20) + sin(x) - 9
    my_lab_array.append(element)
print("Массив:")
print (my_lab_array)
 
#Вызываем функцию, определенную в начале программы
calculate()
print("G = ", calculate.G)
 
#Замечания по коду:
#1) См. версию питона вверху - синтаксис print и input в версии 2 другой.
#   Может быть есть и другие различия.
#2) Допускается ввод нуля. Тогда массив будет пуст, но G=0 всё равно.
#   Я не знаю, верно ли это по условиям задачи.
#3) randint(0,20) генерит случайные числа в диапазоне 0 <= x <= 20,
#   в каком диапазоне генерятся значения в коде на C++ я не знаю, проверь это.
Добавлено через 17 минут
Потерял-таки отступ в строке 9, поправь самостоятельно.
1
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
05.02.2016, 14:52
xPANICx, Нифига себе, наворотил… Вся задача в 1 строку помещается, а тут больше 20 (даже если комментарии не считать)…
1
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
05.02.2016, 17:40
Цитата Сообщение от Marinero Посмотреть сообщение
sum — зарезервированное слово.
Не то чтобы следует называть переменные sum, но это не зарезервированное слово.
1
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
05.02.2016, 17:50
Цитата Сообщение от Somebody Посмотреть сообщение
sum, но это не зарезервированное слово.
Ну да это не зарезервированное слово конечно, это название стандартной функции, но сути это не меняет. Так делать нельзя, а делаешь, тем более бездумно (как в данном случае), то это может привести к печальным последствиям.
1
21 / 21 / 2
Регистрация: 31.12.2015
Сообщений: 100
05.02.2016, 21:20
Цитата Сообщение от Marinero Посмотреть сообщение
Нифига себе, наворотил…
Это всё Лутц
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.02.2016, 21:20
Помогаю со студенческими работами здесь

Перевести с python на c++
def height(man): if man not in p_tree: return 0 else: return 1 + height(p_tree) p_tree = {} n =...

Перевести с Python на с++
list3 = print('Введите элементы множества X(через пробел): ') list1 = input().split() len1 = len(list1) ...

Перевести с Python на с++
import sys list1 = list2 = print(&quot;инективнисть(1) сюрективнисть(2)биективнисть(3)?&quot;) a = int(input()) if a == 1: ...

Перевести на Python
помогите перевести на Python var i,j,k,n,o:integer; a,t:longint; begin write('Введите k=');readln(k); t:=0;i:=0; repeat t:=t+1; ...

Перевести в python
Rectangle ob = new Rectangle(3, 5); - язык C# Rectangle- class как создать такую же переменную в python?Буду очень благодарен!


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
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 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru