MHB Calculate Strings with int calculate(string exp) Function

  • Thread starter Thread starter needOfHelpCMath
  • Start date Start date
  • Tags Tags
    Computation String
AI Thread Summary
The discussion centers around creating a function, `calculate(string exp)`, that evaluates mathematical expressions represented as strings. The function aims to parse the input string, identify operators, and compute the result of the expression. Key points include the need to separate the left and right operands from the operator, convert character digits to integers, and perform the corresponding arithmetic operations based on the identified operator. A suggestion is made to use the `atoi` function for converting strings to integers, which simplifies the conversion process. The user expresses confusion about converting strings to numbers and performing calculations, indicating a need for further clarification on these concepts.
needOfHelpCMath
Messages
70
Reaction score
0
If input is 2: call int calculate(string exp) function. This function will return the
computation of a string expression (exp). For example:
calculate(“54321+222”) will return 54543
calculate(“120*20”) will return 2400
calculate(“235/3”) will return 78
calculate(“356-32”) will return 324My code:

HTML:
// function should return int, not void: int calculate(..)
int calculate(string exp) 
{
	int answer = 0; // store answer in here
	string left = "right";
	char op; //operator
	int i = 0;
	 // use to code left the operator and right seperating it in order to convert it into real numbers
	for (i = 0; i < exp.size(); ++i) {
		if (isdigit(exp.at(i))) { 
		
			left =  left + exp.at(i);
		}
		
		else {
			op = exp.at(i);
			break;
		}
	} ++i;
	
	for (int j = i; j < exp.size(); ++j) {
		right = "right" + exp.at(i);
	}
	// use ASCII char to get int conversion: '0' == 48, '1' == 49, '2' == 50, ... and so on
	// subtract each character in string by 48 to get int values
	// examle: if exp = "9", then exp[0] - 48 = 9
	
	for(i = 0; i < exp.length(); i++) {
		// put your if statements to check for plus, minus, times, divide
		if (i < exp.length()) {
			answer = exp.at(i)-48;
		}
			
		if (isdigit(exp.at(i))) {
		
			answer = exp.at(i)- 48;
		}
	}
	// check for a plus
		// if found add the two numbers
	// check for minus
		// if found, subtract the two numbers
	// check for a times
		// if found, multiply the two numbers
	// check for divide
		// if found, divide the to numbers
	// if nothing is found
		// return
	return answer;     
}
what I can't and don't understand is how convert into strings into numbers and also compute them.
 
Technology news on Phys.org
needOfHelpCMath said:
what I can't and don't understand is how convert into strings into numbers and also compute them.

Hey needOfHelpCMath! ;)

To convert a string into a number we can use:
Code:
int number = atoi(str.c_str());
[m]atoi[/m] is short for ascii-to-integer.
 
I like Serena said:
Hey needOfHelpCMath! ;)

To convert a string into a number we can use:
Code:
int number = atoi(str.c_str());
[m]atoi[/m] is short for ascii-to-integer.

thank you! ill try that out
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...
Back
Top