0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 32

Как переделать код из с++ в python

11.02.2016, 19:30. Показов 9788. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код на с++ необходимо переделать его в питон...
ссылка на с++: del
ссылка на python: del
Заранее благодарю
 Комментарий модератора 
Правила форума п.5.19
Запрещено создавать темы в виде ссылок на задания или коды программ, расположенные на других сайтах


Добавлено через 14 минут
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
using namespace std;
 
int n = 6;
 
int max3(int a, int b, int c) {
        return a > b ? (a > c ? a : c) : (b > c ? b : c);
    }
 
int maxSumRec(int *a, int left, int right) 
{
        int maxLeftBorderSum = 0, maxRightBorderSum = 0;
        int leftBorderSum = 0, rightBorderSum = 0;
        int center = (left + right) / 2;
 
        if (left == right) // Base case
            return a[left] > 0 ? a[left] : 0;
 
        int maxLeftSum = maxSumRec(a, left, center);
        int maxRightSum = maxSumRec(a, center + 1, right);
 
        for (int i = center; i >= left; i--) {
            leftBorderSum += a[i];
            if (leftBorderSum > maxLeftBorderSum)
                maxLeftBorderSum = leftBorderSum;
        }
 
        for (int i = center + 1; i <= right; i++) {
            rightBorderSum += a[i];
            if (rightBorderSum > maxRightBorderSum)
                maxRightBorderSum = rightBorderSum;
        }
 
        return max3(maxLeftSum, maxRightSum, maxLeftBorderSum
                + maxRightBorderSum);
    }
 
int maxSubSum3(int *a) 
{
        return n > 0 ? maxSumRec(a, 0, n - 1) : 0;
}
 
 
 
int main() {
        int sequence[] = { -2, 11, -4, 13, -5, -2 };
        int maxSum;
 
        maxSum = maxSubSum3(sequence);
        cout << maxSum;
    }

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
import random
#a = [ random.randint(1,50)-25 for x in xrange(10)]
a = [-2, 11, -4, 13, -5, -2]
print a
def maxSumRec( a, left, right ):
    maxLeftBorderSum = 0
    maxRightBorderSum = 0
    leftBorderSum = 0
    rightBorderSum = 0
    center = (left + right) / 2
    if (left == right):
         if (a[left] > 0):
             return a[left]
         else:
             return 0
    maxLeftSum = maxSumRec(a, left, center)
    maxRightSum = maxSumRec(a, center +1 , right)
    for i in xrange(left, center):
            leftBorderSum += a[i]
            if (leftBorderSum > maxLeftBorderSum):
                maxLeftBorderSum = leftBorderSum
    for i in xrange(center+1 , right):
        rightBorderSum += a[i]
        if (rightBorderSum > maxRightBorderSum):
            maxRightBorderSum = rightBorderSum
    return max3(maxLeftSum, maxRightSum, maxLeftBorderSum + maxRightBorderSum)
 
def max3 (a, b, c):
    if (a > b):
        if (a > c):
            return a
        else:
            return c
    else:
        if (b > c):
            return  b
        else:
            return c
 
def maxSubSum3 (a):
    if (len(a) > 0):
        return maxSumRec(a, 0, len(a) -1 )
    else:
        return 0
 
maxSum = maxSubSum3(a)
print maxSum
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.02.2016, 19:30
Ответы с готовыми решениями:

Переделать код на python
Здравствуйте, не могу переделать код. Сам код: try: from urllib2 import urlopen except ImportError: from urllib.request...

Переделать код с python
Помогите пожалуйста переделать код с python в с++ def hash(key): result = 0 for i in key: result += ord(i) ...

Переделать код в Python
Как переделать код в Питон? #include &lt;cs50.h&gt; #include &lt;stdio.h&gt; int main(void) { // Prompt user for integer int n =...

5
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
11.02.2016, 19:41
Коды это здорово конечно, но разбирать код, чтобы понять что он делает и с чем, когда можно получить искомое у ТС — не рационально (да и не очень-то просто читать чужой код), не находите?
Если не понятно: то где условие, исходные данные и пример желаемого результата?

Добавлено через 5 минут
Я так понимаю ищется непрерывная последовательность элементов, сумма которых наибольшая?
0
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 32
11.02.2016, 19:52  [ТС]
правильно работает код который приведён в с++
вы правы
я просто сам пытался переделать но видимо что-то с циклами намудрил
я на питоне недавно программирую
0
51 / 51 / 18
Регистрация: 03.12.2015
Сообщений: 167
11.02.2016, 20:14
del
0
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 32
11.02.2016, 20:17  [ТС]
проблема в том что вы используете другой алгоритм сортровки, а мне необходимо исплользовать тот тип сортировки который указан у меня.
моя проблема чтобы мне помогли проверить правильно ли я использую циклы итп (от какого элемента и до какого)
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
12.02.2016, 00:30
iiiooj,
Цитата Сообщение от Marinero Посмотреть сообщение
где условие, исходные данные и пример желаемого результата
Не очень охота разбирать Ваш код, потому что Вы пытаетесь принципы С перенести в синтаксис Python и получается коряво. Тут вообще другой алгоритм надо использовать.

Добавлено через 2 часа 6 минут
Находит за 3 прохода: сжатие, прямой и обратный
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
def compress(in_list):
    collect = in_list[0]
    compressed = []
    for x in range(1, len(in_list)):
        if collect < 0 and in_list[x] < 0 or collect >= 0 and in_list[x] >= 0:
            collect += in_list[x]
        else:
            compressed.append(collect)
            collect = in_list[x]
    compressed.append(collect)
    return(compressed)
 
def do_sum(tmp_list, move):
    linesum = 0
    result = []
    last = len(tmp_list) - 1
    if move = 1:
        indexes = range(0, length + 1)
    else:
        indexes = range(last, -1, move)
    for i in indexes:
        if tmp_list[i] < 0:
            if tmp_list[i+move] > abs(tmp_list[i]) and 0 < i < last:
                linesum += tmp_list[i]
            else:
                result.append(linesum)
                linesum = 0
        else:
            linesum += tmp_list[i]
    if linesum:
        result.append(linesum)
    return max(result)
 
a = [-2, 11, -4, 13, -5, -2]
 
ca = compress(a)
print(max(do_sum(ca, 1), do_sum(ca, -1))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.02.2016, 00:30
Помогаю со студенческими работами здесь

Переделать код С в Python
Есть вот такой код который нужно переделать в код Python для Sandbox #include &lt;stdio.h&gt; #include &lt;string.h&gt; int...

Переделать код с С в Python
#include &lt;cs50.h&gt; #include &lt;stdio.h&gt; int main(void) { // Prompt user for integer int n = get_int(&quot;n: &quot;); // Check parity of...

Переделать код с Python в C#
days = int(input('возраст в днях: ')) months = days // 30 if months == 12: years = 1 months = 0

Переделать код с python на C#
class Space(): def __init__(self,A, B, C, D): self.__A = A self.__B = B self.__C = C self.__D...

Переделать код с python на c++
Как переделать код с питона на с++?Он считает блочную энтропию и идеально работает.Но нужно переделать на с++. import math import...


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

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

Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
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
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru