1 / 1 / 1
Регистрация: 10.12.2015
Сообщений: 91
1

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

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

Author24 — интернет-сервис помощи студентам
Задание: вычислить скалярную величину по формуле
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;
}
Код
 Результат этой проги норм
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")
Код
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2016, 13:55
Ответы с готовыми решениями:

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

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

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

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

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

== Короче полная каша. Разберитесь с синтаксисом языка, а потом пробуйте что-то писать на нем.
1
1 / 1 / 1
Регистрация: 10.12.2015
Сообщений: 91
04.02.2016, 20:55  [ТС] 4
Marinero, подправил, выдает ошибку, не могу понять что это значит:
Код
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 5
Я завтра тебе код напишу, сейчас я на работе просто.
1
Эксперт NIX
2795 / 2038 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
04.02.2016, 21:32 6
Лучший ответ Сообщение было отмечено 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 7
Формула-то дана в задании, или придумана самостоятельно? Я имею ввиду формулу случайного числа.
1
1 / 1 / 1
Регистрация: 10.12.2015
Сообщений: 91
04.02.2016, 22:12  [ТС] 8
xPANICx, с методички на С взял, а в задании дана формула для нахождения скалярной величины.
Marinero, Хочу чтоб прога вычисляла G.
Задание: вычислить скалярную величину с помощью данной формулы G=1+S(x[i])/S(x[i]),
элементы массива заполнить с помощью генератора 10 случайных чисел+исп.подпрограмму-функцию. Сделал на С++, выдает нужный результат:
Код
 
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
2795 / 2038 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
04.02.2016, 23:28 9
Nickname_2015, Да сделано уже, глазки подыми!
1
21 / 21 / 2
Регистрация: 31.12.2015
Сообщений: 100
05.02.2016, 08:24 10
Лучший ответ Сообщение было отмечено 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
2795 / 2038 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
05.02.2016, 14:52 11
xPANICx, Нифига себе, наворотил… Вся задача в 1 строку помещается, а тут больше 20 (даже если комментарии не считать)…
1
2836 / 1645 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
05.02.2016, 17:40 12
Цитата Сообщение от Marinero Посмотреть сообщение
sum — зарезервированное слово.
Не то чтобы следует называть переменные sum, но это не зарезервированное слово.
1
2741 / 2340 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
05.02.2016, 17:50 13
Цитата Сообщение от Somebody Посмотреть сообщение
sum, но это не зарезервированное слово.
Ну да это не зарезервированное слово конечно, это название стандартной функции, но сути это не меняет. Так делать нельзя, а делаешь, тем более бездумно (как в данном случае), то это может привести к печальным последствиям.
1
21 / 21 / 2
Регистрация: 31.12.2015
Сообщений: 100
05.02.2016, 21:20 14
Цитата Сообщение от Marinero Посмотреть сообщение
Нифига себе, наворотил…
Это всё Лутц
1
05.02.2016, 21:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2016, 21:20
Помогаю со студенческими работами здесь

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

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

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

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

Перевести С++ на Python
c++ to python ошибься в теме #include&lt;iostream&gt; #include&lt;string&gt; using namespace std; int...

Перевести с Python на С++
&lt;program&gt; ::= &lt;statement&gt; &lt;statement&gt; ::= &quot;if&quot; &lt;paren-expr&gt; &lt;statement&gt; | ...

Перевести с C++ на python
Так как я чайник в питоне, помогите разобраться с кодом. Очень хочу понять алгоритм на питоне. ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru