SoloCodigo
		Programación General => C/C++ => Mensaje iniciado por: ddramirezv en Domingo 16 de Marzo de 2014, 03:38
		
			
			- 
				Saludos amigos programadores soy nuevo aca y le he dado por todo lado a este problema y no logro resolverlo, podrian ayudarme:
 
 Realice un programa en C++ que reciba un string con el formato "n(x)m" donde n es un numero entero, m tambien es un numero entero y (X) puede ser cualquier simbolo entre los siguientes ("+","-","*"/"). El programa debe de realizar la operacion matematica e imprimir el resultado. Por ejemplo si el usuario digita "45*2" el programa imprima "90".
 
 :lightsabre:
- 
				Hola, mira a ver que te parece así:
 	string text = "123*12";
 string caracter = "X";
 int iPosicion;
 for(unsigned int i = 0; i < text.length(); ++i)
 {
 if(text[i] == '+' || text[i] == '-' ||
 text[i] == '*' || text[i] == '/')
 {
 caracter = text[i];
 iPosicion = i;
 }
 }
 string primero = text.substr(0, iPosicion);
 string segundo = text.substr(iPosicion+1, text.length());
 int iPrimero = atoi(primero.c_str());
 int iSegundo = atoi(segundo.c_str());
 cout << iPrimero;
 cout << '\n';
 cout << iSegundo;
 cout << '\n';
 int iResultado;
 if(caracter == "+")
 iResultado = iPrimero + iSegundo;
 if(caracter == "-")
 iResultado = iPrimero - iSegundo;
 if(caracter == "*")
 iResultado = iPrimero * iSegundo;
 if(caracter == "/")
 iResultado = iPrimero / iSegundo;
 cout << iResultado;
 cout << '\n';
 
 
- 
				te lo agradezco amigo pero soy principiante y no comprendo muy bien tu codigo
			
- 
				OK, te explico:
 
 string text = "123*12";     // defino el dato donde va a estar lo que quieres hacer, por ejemplo, multiplicar 123 por 12
 string caracter = "X";        // Defino un dato donde almacenare el *, el +, el - o la /, el signo de la operacion
 int iPosicion;                     // Creo este dato para saber en que posición esta el dato de la operación
 
 este bucle es para saber donde esta el dato que separa los dos numero y guardarlo en "carácter" y en "iPosicion" la posición.
 
 for(unsigned int i = 0; i < text.length(); ++i)
 {
 if(text == '+' || text == '-' ||
 text == '*' || text == '/')
 {
 caracter = text;
 iPosicion = i;
 }
 }
 
 Aquí paso el primer dato numérico a primero, que es desde la posición 0 hasta iPosicion, que lo obtuve en el bucle anterior
 luego el segundo numero, que es desde iPosicion hasta la longuitud del texto y luego los convierto a numéricos con atoi,
 una función que convierte de string a integer
 
 string primero = text.substr(0, iPosicion);
 string segundo = text.substr(iPosicion+1, text.length());
 int iPrimero = atoi(primero.c_str());
 int iSegundo = atoi(segundo.c_str());
 
 Y por ultimo aquí hago la peracion según el carácter:
 
 if(caracter == "+")
 iResultado = iPrimero + iSegundo;
 if(caracter == "-")
 iResultado = iPrimero - iSegundo;
 if(caracter == "*")
 iResultado = iPrimero * iSegundo;
 if(caracter == "/")
 iResultado = iPrimero / iSegundo;
 
 Los cout son para ir mostrando por pantalla los datos.
 
 Un saludo.
 
- 
				ah ok agradezco tu ayuda lo que sigo sin comprender es donde recibe los datos del operador   :gracias:
			
- 
				Eso no te lo puse para que tu hagas algo  :ball:
 pon un cin al principio y aceptas el valor que yo tengo fijo en "text".
 Un saludo.
- 
				 :gracias: :gracias: ya comprendi agradezco sinceramente tu ayuda