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;
}