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

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

04.02.2016, 13:55. Показов 2663. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru