Question

3.3 Adding big integers Write a function that adds two non-negative integers represented as strings, returning the result as

C== LANGUAGE. Only use iostream and string header file. A bunch of checks i am also giving that needs to be satisfied for the code to be successful

if (add("123", "456") != "579")
if (add("123", "4") != "127")

if (add("1234", "9") != "1243")
if (add("88", "12") != "100")
if (add("1234567890123456789", "10000000000000999")
!= "1244567890123457788")

string longone(120, '2');
longone[0] = '3';
string longother(123, '1');
longother[0] = '4';
longother[3] = '2';
string longresult(123, '3');
longresult[0] = '4';
longresult[1] = '1';
longresult[2] = '1';
longresult[3] = '5';

if (add(longone, longother) != longresult )

0 0
Add a comment Improve this question Transcribed image text
Answer #1

Here is the completed code for this problem. Comments are included, go through it, learn how things work and let me know if you have any doubts or if you need anything to change. If you are satisfied with the solution, please rate the answer. Thanks

#include<iostream>

#include<string>

using namespace std;

//required method, assuming inputs are numeric strings only

string add(const string& num1, const string num2){

                //creating an empty string to store result

                string result="";

                //variables to store the carry, sum and auxiliary digits and a character0

                int carry=0, sum, digit1, digit2;

                char chr;

                //finding last indices of both strings

                int index1=num1.length()-1;

                int index2=num2.length()-1;

                //loops as long as at least one of the indices is valid

                while(index1>=0 || index2>=0){

                                //setting digits to 0

                                digit1=0;

                                digit2=0;

                                //if index 1 is valid, extracting digit at index1 in num1 to digit1

                                if(index1>=0){

                                               //subtracting a digit by 0 returns the corresponding digit value

                                               //between 0 and 9

                                               digit1=num1[index1]-'0';

                                }

                                //doing the same for digit at num2

                                if(index2>=0){

                                               digit2=num2[index2]-'0';

                                }

                                //adding digits (and carry if any)

                                sum=digit1+digit2+carry;

                                //resetting carry

                                carry=0;

                                //if sum is greater than 9

                                if(sum>9){

                                               //storing 10th digit as carry

                                               carry=sum/10;

                                               //storing unit digit as sum

                                               sum=sum%10;

                                }

                                //adding a digit with character '0' converts an int to corresponding char value

                                //like 0 becomes '0', 1 becomes '1' etc

                                chr='0'+sum;

                                //prepending this character to result

                                result=chr+result;

                                //moving to previous indices

                                index1--;

                                index2--;

                }

                //at the end, if the carry is more than 0, prepending the carry to result

                if(carry>0){

                                chr='0'+carry;

                                result=chr+result;

                }

                return result;

}

int main(){

                //testing

                //creating two arrays of numeric strings

                string num1[]={"123","123","1234","88","1234567890123456789"};

                string num2[]={"456","4","9","12","10000000000000999"};

                //looping and adding element corresponding indices in both array

                for(int i=0;i<5;i++){

                                cout<<num1[i]<<" + "<<num2[i]<<" = "<<add(num1[i],num2[i])<<endl;

                }

                return 0;

}

/*OUTPUT*/

123 + 456 = 579

123 + 4 = 127

1234 + 9 = 1243

88 + 12 = 100

1234567890123456789 + 10000000000000999 = 1244567890123457788

Add a comment
Know the answer?
Add Answer to:
C== LANGUAGE. Only use iostream and string header file. A bunch of checks i am also...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • I only need the "functions" NOT the header file nor the main implementation file JUST the impleme...

    I only need the "functions" NOT the header file nor the main implementation file JUST the implementations for the functions Please help, if its difficult to do the complete program I would appreciate if you could do as much functions as you can especially for the derived class. I am a beginer so I am only using classes and pointers while implementing everything using simple c++ commands thank you in advanced Design and implement two C++ classes to provide matrix...

  • For Python, I am a little confused on the use of reduce,map, and lambda. My assignment wants me t...

    For Python, I am a little confused on the use of reduce,map, and lambda. My assignment wants me to not use .join() and write a SINGLE LINE function to join each letter in a list with another string.(See problem below). Using reduce, map, and lambda, write the single-expression function myJoin(L, sep) that takes a non-empty list L and a string sep, and without calling sep.join(L), works roughly the same as that returning a single string with the values in L...

  • Assembly language 64 bit please ! An example file for set up ==========+ ;| Data Segment...

    Assembly language 64 bit please ! An example file for set up ==========+ ;| Data Segment BEGINS Here | ;+======================================================================+ segment .data ;Code this expression: sum = num1+num2 num1 dq 0 ;left operand of the addition operation num2 dq 0 ;right operand of the addition operation sum dq 0 ;will hold the computed Sum value RetVal dq 0 ;Integer value RETURNED by function calls ;can be ignored or used as determined by the programmer ;Message string prompting for the keyboard...

  • c++ Write a rational number class. A rational number is a number that can be written...

    c++ Write a rational number class. A rational number is a number that can be written as p/q where p and q are integers. The division is not carried out, only indicated. Thus you should represent rational numbers by two int values, numerator and denominator. Constructors must be present to create objects with any legal values. You should provide constructors to make objects out of pairs of int values; that is, a constructor with two int parameters. Since very int...

  • Please note that I cannot use the string library function and that it must be coded...

    Please note that I cannot use the string library function and that it must be coded in C89, thank you! Formatting: Make sure that you follow the precise recommendations for the output content and formatting: for example, do not change the text in the first problem from “Please enter a string of maximum 30 characters:” to “Enter string: ”. Your assignment will be auto-graded and any changes in formatting will result in a loss in the grade. 2.Comments: Header comments...

  • Using recursion only (no loops allowed!), write a C++ function of the form int count7s(int)

    please do in c++Q4. Using recursion only (no loops allowed!), write a C++ function of the form int count7s(int) that when passed a non-negative integer, returns the number of occurrences of the digit 7 in the number. So, for example: count7s(717) → 2 count75(7) →1 count7s(123) → 0 Q5. Write a C++ function of the form string mirrorEnds(string)that when given a string, looks for a mirror image (backwards) string at both the beginning and end of the given string. In other words, zero or...

  • I need help implementing class string functions, any help would be appreciated, also any comments throughout...

    I need help implementing class string functions, any help would be appreciated, also any comments throughout would also be extremely helpful. Time.cpp file - #include "Time.h" #include <new> #include <string> #include <iostream> // The class name is Time. This defines a class for keeping time in hours, minutes, and AM/PM indicator. // You should create 3 private member variables for this class. An integer variable for the hours, // an integer variable for the minutes, and a char variable for...

  • please write the code in C++ 2 Base class File 3 Derived class PDF 3.1 Class...

    please write the code in C++ 2 Base class File 3 Derived class PDF 3.1 Class declaration • The class PDF inherits from File and is a non-abstract class 1. Hence objects of the class PDF can be instantiated. 2. To do so, we must override the pure virtual function clone) in the base class • The class declaration is given below. • The complete class declaration is given below, copy and paste it into your file. . It is...

  • DIRECTIONS FOR THE WHOLE PROJECT BELOW BigInt class The purpose of the BigInt class is to...

    DIRECTIONS FOR THE WHOLE PROJECT BELOW BigInt class The purpose of the BigInt class is to solve the problem using short methods that work together to solve the operations of add, subtract multiply and divide.   A constructor can call a method called setSignAndRemoveItIfItIsThere(). It receives the string that was sent to the constructor and sets a boolean variable positive to true or false and then returns a string without the sign that can then be processed by the constructor to...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT