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

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

04.02.2016, 13:55. Показов 2666. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru