How do I turn a dynamic int array into a string

Viewed 35

Hi all I am having an issue where I cannot convert a dynamic int array into a string, if you look at the bottom of SumOf2Strings() you can see where I attempted to work out a way where I can just do the swap.

string returnMe;

    //transform(begin(sumArr), end(sumArr), back_inserter(returnMe), [](int& i));
    
    //std::ostringstream os;

    //for (int i : sumArr) {
        //returnMe += to_string(i);
    //}


    for (int i = 0; i < counter; i++) {
        //returnMe = returnMe[i] + sumArr[i];
        //returnMe.append(i, sumArr[i]);
        //returnMe.push_back(sumArr[i] - '0');
        //returnMe[i] = sumArr[i];
        
        cout << sumArr[i];
    }
    cout << endl << endl << returnMe;
#include <vector>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;



//string Print_array2(string stringOnumbers);
//string Print_array(int* array, int sizeOArray);
void ArrayFill(int stringSize, string stringOnumbers, int* array);
void SUMof2Strings(string var1, string var2);


int main() {
    string var1 = "999"; 
    string var2 = "1";
    SUMof2Strings(var1, var2);
    //return 0;
    //int* arr1;
    //arr1 = new int[0, 1, 2, 3, 4];

    //string arr1 = "01234";
    //cout << Print_array2(arr1);


}


/**********************************************************************************/
/* ArrayFill                                                                       */
/* Input Parameters: (int stringSize, string stringOnumbers, int* array)           */
/* Returns: This turns a number represented as a string into an array              */
/* Description: this function loops through a the size of a string number, it then */
/* makes the number equivlent in ascii by subtracting 0.                           */
/**********************************************************************************/
void ArrayFill(int stringSize, string stringOnumbers, int* array)
{

    for (int i = 0; i < stringSize; i++)
    {
        array[i] = stringOnumbers[i] - '0';
        //cout << array[i];
    }
    //cout << endl;
}







/******************************************************************************************/
/* SUMof2Strings                                                                          */
/* Input Parameters: none                                                                 */
/* Returns: The sum of 2 numbers represented as strings                                   */
/* Description: This function asks for 2 strings, then compares the size of the strings   */
/* and then makes the strings the same length by padding zeros to the front. After this,  */
/* the code initializes 3 dynamic arrays and uses ArrayFill to fill 2 of them.            */
/* then the while loop is encountered and what this does is it adds each element of the   */
/* array and tracks the carry and adds it accordingly. After the loop is done it prints   */
/* using Print_array.                                                                     */
/******************************************************************************************/
void SUMof2Strings(string var1, string var2)
{
    /*
    string var1, var2;
    cout << "Please enter 2 non-negative integer values separated by white space:" << endl;


    cin >> var1;
    cin >> var2;
    */
    //string var1 = "98765"; 
    //string var2 = "123";

    string var1COPY = var1, var2COPY = var2;

    int sizeofString1 = var1.size();
    int sizeofString2 = var2.size();

    if (sizeofString1 > sizeofString2) {
        //Padding Var1 for carry
        var1.insert(0, "0");
        sizeofString1 = var1.size();

        while (sizeofString1 != sizeofString2) {
            var2.insert(0, "0");
            sizeofString2++;
        }
    }
    else if (sizeofString1 < sizeofString2) {
        //Padding Var2 for carry
        var2.insert(0, "0");
        sizeofString2 = var2.size();

        while (sizeofString1 != sizeofString2) {
            var1.insert(0, "0");
            sizeofString1++;
        }
    }
    else if (sizeofString1 == sizeofString2) {
        var1.insert(0, "0"); var2.insert(0, "0");

        sizeofString2 = var2.size(); sizeofString1 = var1.size();

    }


    int* arr1;
    arr1 = new int[sizeofString1];

    int* arr2;
    arr2 = new int[sizeofString2];

    ArrayFill(sizeofString1, var1, arr1);
    ArrayFill(sizeofString2, var2, arr2);

    //string arr1 = var1;
    //string arr2 = var2;

    //string sumArr = "";
    int* sumArr;
    sumArr = new int[sizeofString1];

    int x = sizeofString1 - 1;

    int currentSum = 0;
    int digit = 0;
    int carry = 0;
    int counter = 0;

    while (x >= 0) {

        currentSum = arr1[x] + arr2[x] + carry;
        digit = currentSum % 10;
        carry = currentSum / 10;

        sumArr[x] = digit;
        
        //cout << sumArr[x];

        counter++;
        x--;
    }
    string returnMe;

    //transform(begin(sumArr), end(sumArr), back_inserter(returnMe), [](int& i));
    
    //std::ostringstream os;

    //for (int i : sumArr) {
        //returnMe += to_string(i);
    //}


    for (int i = 0; i < counter; i++) {
        //returnMe = returnMe[i] + sumArr[i];
        //returnMe.append(i, sumArr[i]);
        //returnMe.push_back(sumArr[i] - '0');
        //returnMe[i] = sumArr[i];
        
        cout << sumArr[i];
    }
    cout << endl << endl << returnMe;


    cout << endl << endl << var1COPY << endl << "+" << endl << var2COPY << endl << "=" << endl;
    /*Print_array(sumArr, sizeofString1);*/
    //Print_array2(sumArr);
    cout << endl;
}

0 Answers
Related