Programación General > C/C++

 Programa Ciclos y strings

(1/2) > >>

ddramirezv:
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:

chenech:
Hola, mira a ver que te parece así:

--- Código: --- 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';


--- Fin del código ---

ddramirezv:
te lo agradezco amigo pero soy principiante y no comprendo muy bien tu codigo

chenech:
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.

ddramirezv:
ah ok agradezco tu ayuda lo que sigo sin comprender es donde recibe los datos del operador   :gracias:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa