• Viernes 19 de Abril de 2024, 07:08

Autor Tema:  Programa Ciclos y strings  (Leído 3643 veces)

ddramirezv

  • Nuevo Miembro
  • *
  • Mensajes: 6
  • Nacionalidad: cr
  • Estudiante de Electrónica
    • Ver Perfil
Programa Ciclos y strings
« en: Domingo 16 de Marzo de 2014, 03:38 »
0
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

  • Miembro activo
  • **
  • Mensajes: 96
    • Ver Perfil
Re:Programa Ciclos y strings
« Respuesta #1 en: Domingo 16 de Marzo de 2014, 16:30 »
0
Hola, mira a ver que te parece así:
Código: [Seleccionar]
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';


ddramirezv

  • Nuevo Miembro
  • *
  • Mensajes: 6
  • Nacionalidad: cr
  • Estudiante de Electrónica
    • Ver Perfil
Re:Programa Ciclos y strings
« Respuesta #2 en: Domingo 16 de Marzo de 2014, 20:47 »
0
te lo agradezco amigo pero soy principiante y no comprendo muy bien tu codigo

chenech

  • Miembro activo
  • **
  • Mensajes: 96
    • Ver Perfil
Re:Programa Ciclos y strings
« Respuesta #3 en: Domingo 16 de Marzo de 2014, 21:41 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 6
  • Nacionalidad: cr
  • Estudiante de Electrónica
    • Ver Perfil
Re:Programa Ciclos y strings
« Respuesta #4 en: Lunes 17 de Marzo de 2014, 00:36 »
0
ah ok agradezco tu ayuda lo que sigo sin comprender es donde recibe los datos del operador   :gracias:

chenech

  • Miembro activo
  • **
  • Mensajes: 96
    • Ver Perfil
Re:Programa Ciclos y strings
« Respuesta #5 en: Lunes 17 de Marzo de 2014, 01:03 »
0
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.

ddramirezv

  • Nuevo Miembro
  • *
  • Mensajes: 6
  • Nacionalidad: cr
  • Estudiante de Electrónica
    • Ver Perfil
Re:Programa Ciclos y strings
« Respuesta #6 en: Lunes 17 de Marzo de 2014, 05:41 »
0
 :gracias: :gracias: ya comprendi agradezco sinceramente tu ayuda