elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Colocar una expresión aritmética en un vector
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Colocar una expresión aritmética en un vector  (Leído 1,716 veces)
GominaTilted

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Colocar una expresión aritmética en un vector
« en: 15 Abril 2019, 15:06 pm »

Buenas, ya tengo arreglado el código de las notaciones, pero revisando el resto del programa, me he dado cuenta de que hice una cosa mal. Mi intención era guardar en un vector cada elemento de una expresión aritmética, pero lo que estaba haciendo en realidad era guardar toda la expresión en un elemento:

Código:
void Expresion :: SetExp (string x)
{
    infija.push_back(x); // infija es un vector de la clase Expresion
}

Lo que yo había pensado era recorrer el string x carácter a carácter con un bucle, pero eso tiene un inconveniente, y es que para números mayores de una cifra estaría mal el algoritmo. Entonces, tengo esto:

Código:
void Expresion :: SetExp (string x)
{
    unsigned int i, j = 0;
    for (i = 0; x[i] < x.length(); i++)
    {
         while (isdigit(c[j]))
         {
              /* aquí hacer algo de tal forma que se guarden todos los numeros, que es lo
               que vengo a preguntar. Se me ha ocurrido crear una string vacía e ir
               guardando los numeros ahí para al salir del bucle while almacenarlo en el
               vector, pero no sé cómo hacerlo realmente. Ahora que pienso esto necesitaría
               además, antes del while, un if con la misma condición para realizar el
               guardado correctamente. Como véis tengo una idea más o menos clara pero
               no lo sé implementar*/
         }
         j = 0;
         infija.push_back[x[i]]


En línea

GominaTilted

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: Colocar una expresión aritmética en un vector
« Respuesta #1 en: 15 Abril 2019, 18:29 pm »

Bueno, de momento tengo esto, pero no hace nada, o eso parece xD:

Código:
void Expresion::PonerExpresion (string c)
{
    int i, j;
    string x, y;
   
    for (i = 0; i < c.length(); i++)
    {

    if(y == "+" || y == "-" || y == "*" || y == "/" || y == "(" || y == ")")
{
infija.push_back(y);
cout << y << " Signos " << endl;
}

while (isdigit(c[i]))
{
x += c[i];
cout << x << " while isdigit " << endl;
i++;
}

infija.push_back(x);
x = "";
y = c[i];

    for (j = 0; j < infija.size(); j++) //muestra el vector para verificar el resultado.
{
cout << infija[j];
}
}
    return;
}

Edit: Arreglado :)


« Última modificación: 15 Abril 2019, 19:55 pm por GominaTilted » En línea

lfgmespino

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Colocar una expresión aritmética en un vector
« Respuesta #2 en: 18 Abril 2019, 13:34 pm »

Ligera modificación para que funcione.

Código
  1.  
  2. void PonerExpresion (std::string c)
  3. {
  4.    int i, j;
  5.    std::string x, y;
  6.    std::vector<std::string> infija;
  7.  
  8.    i=0;
  9.    while (i < c.length()) {
  10.  
  11.   x = "";  
  12.   while (isdigit(c[i])) {
  13.   x += c[i];
  14.   std::cout << x << " while isdigit " << '\n';
  15.   i++;
  16.   }
  17. infija.push_back(x);  
  18.  
  19.   y = c[i];
  20.     if(y == "+" || y == "-" || y == "*" || y == "/" || y == "(" || y == ")") {
  21.   infija.push_back(y);
  22.   std::cout << y << " Signos " << '\n';
  23.   }
  24.  
  25.   i++;
  26.  
  27.     for (j = 0; j < infija.size(); j++) //muestra el vector para verificar el resultado.
  28.   {
  29.   std::cout << infija[j];
  30.     }  
  31. }
  32.    return;
  33. }
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Operación aritmética
PHP
WHK 5 2,772 Último mensaje 20 Diciembre 2007, 23:20 pm
por WHK
calcular media aritmética con while
Programación C/C++
indict 6 8,902 Último mensaje 8 Noviembre 2012, 22:49 pm
por leosansan
Aritmética Binaria
Electrónica
bl@ck 0 2,288 Último mensaje 22 Septiembre 2014, 18:04 pm
por bl@ck
problema con aritmetica modular
Java
+ 1 Oculto(s) 2 2,126 Último mensaje 22 Mayo 2016, 18:30 pm
por + 1 Oculto(s)
ayuda con aritmetica de punteros
Programación C/C++
leo soto 2 2,401 Último mensaje 17 Marzo 2017, 19:21 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines