URGENT: Need C++ and PYTHON CODE HELP.

profiledSMAN76
GivenCodePythonC.docx

CPP Code for Assignment.

#include <Python.h>

#include <iostream>

#include <Windows.h>

#include <cmath>

#include <string>

using namespace std;

/*

Description:

To call this function, simply pass the function name in Python that you wish to call.

Example:

callProcedure("printsomething");

Output:

Python will print on the screen: Hello from python!

Return:

None

*/

void CallProcedure(string pName)

{

char *procname = new char[pName.length() + 1];

std::strcpy(procname, pName.c_str());

Py_Initialize();

PyObject* my_module = PyImport_ImportModule("PythonCode");

PyErr_Print();

PyObject* my_function = PyObject_GetAttrString(my_module, procname);

PyObject* my_result = PyObject_CallObject(my_function, NULL);

Py_Finalize();

delete[] procname;

}

/*

Description:

To call this function, pass the name of the Python functino you wish to call and the string parameter you want to send

Example:

int x = callIntFunc("PrintMe","Test");

Output:

Python will print on the screen:

You sent me: Test

Return:

100 is returned to the C++

*/

int callIntFunc(string proc, string param)

{

char *procname = new char[proc.length() + 1];

std::strcpy(procname, proc.c_str());

char *paramval = new char[param.length() + 1];

std::strcpy(paramval, param.c_str());

PyObject *pName, *pModule, *pDict, *pFunc, *pValue = nullptr, *presult = nullptr;

// Initialize the Python Interpreter

Py_Initialize();

// Build the name object

pName = PyUnicode_FromString((char*)"PythonCode");

// Load the module object

pModule = PyImport_Import(pName);

// pDict is a borrowed reference

pDict = PyModule_GetDict(pModule);

// pFunc is also a borrowed reference

pFunc = PyDict_GetItemString(pDict, procname);

if (PyCallable_Check(pFunc))

{

pValue = Py_BuildValue("(z)", paramval);

PyErr_Print();

presult = PyObject_CallObject(pFunc, pValue);

PyErr_Print();

}

else

{

PyErr_Print();

}

//printf("Result is %d\n", _PyLong_AsInt(presult));

Py_DECREF(pValue);

// Clean up

Py_DECREF(pModule);

Py_DECREF(pName);

// Finish the Python Interpreter

Py_Finalize();

// clean

delete[] procname;

delete[] paramval;

return _PyLong_AsInt(presult);

}

/*

Description:

To call this function, pass the name of the Python functino you wish to call and the string parameter you want to send

Example:

int x = callIntFunc("doublevalue",5);

Return:

25 is returned to the C++

*/

int callIntFunc(string proc, int param)

{

char *procname = new char[proc.length() + 1];

std::strcpy(procname, proc.c_str());

PyObject *pName, *pModule, *pDict, *pFunc, *pValue = nullptr, *presult = nullptr;

// Initialize the Python Interpreter

Py_Initialize();

// Build the name object

pName = PyUnicode_FromString((char*)"PythonCode");

// Load the module object

pModule = PyImport_Import(pName);

// pDict is a borrowed reference

pDict = PyModule_GetDict(pModule);

// pFunc is also a borrowed reference

pFunc = PyDict_GetItemString(pDict, procname);

if (PyCallable_Check(pFunc))

{

pValue = Py_BuildValue("(i)", param);

PyErr_Print();

presult = PyObject_CallObject(pFunc, pValue);

PyErr_Print();

}

else

{

PyErr_Print();

}

//printf("Result is %d\n", _PyLong_AsInt(presult));

Py_DECREF(pValue);

// Clean up

Py_DECREF(pModule);

Py_DECREF(pName);

// Finish the Python Interpreter

Py_Finalize();

// clean

delete[] procname;

return _PyLong_AsInt(presult);

}

void main()

{

CallProcedure("printsomething");

cout << callIntFunc("PrintMe","House") << endl;

cout << callIntFunc("SquareValue", 2);

}

Python Code.

import re import string

def printsomething(): print("Hello from python!")

def PrintMe(v): print("You sent me: " + v) return 100;

def SquareValue(v): return v * v