Foro de elhacker.net

Foros Generales => Dudas Generales => Mensaje iniciado por: CoolTesting en 6 Abril 2014, 15:20 pm



Título: Duda en algoritmo matemático
Publicado por: CoolTesting en 6 Abril 2014, 15:20 pm
Disculpen mi ignorancia, por más que he buscado no encuentro porqué tiene que dar este resultado. Simplemente no lo veo lógico (quizás sea porque soy nuevo en c++).

No sean tan duros conmigo, necesito saber porqué me da este resultado miren esto:

Código:
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main(){
   
  int a = 5;
  int b = 10;
   
  int c = a + b;
  int be = c*2;
  cout <<be <<endl;
    system("pause");
    return 0;
   
}

Efectivamente, esto me da 30. Tal y como lo esperaba, pero pasa algo "EXTRAÑO" para mi cuando lo hago de esta forma:


Código:
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main(){
   
  int a = 5;
  int b = 10;
   
  int c = a + b * 2;
  cout <<c <<endl;
    system("pause");
    return 0;
   
}

Ahora, en lugar de darme 30 como lo esperaba, me da 25. Esa es mi duda alguien porfavor que sepa sobre la materia me oriente?


Título: Re: Duda en algoritmo matemático
Publicado por: skapunky en 6 Abril 2014, 15:28 pm
Los operadores en cualquier lenguaje, no solo C++ tienen un orden en caso de no usar ().

Deberías leerte el primer tema de introducción de cualquier libro de programación para aprender que si en las operaciones no pones paréntesis cada operador tiene un orden.

Prueba:

int c = (a + b) * 2;

Ya verás como dá 30...


Título: Re: Duda en algoritmo matemático
Publicado por: CoolTesting en 6 Abril 2014, 15:58 pm
Gracias.


Título: Re: Duda en algoritmo matemático
Publicado por: z3nth10n en 6 Abril 2014, 16:11 pm
Eso no es programación, eso son matemáticas de 1º de ESO:

http://www.ditutor.com/numeros_naturales/jerarquia_operaciones.html

Un saludo.


Título: Re: Duda en algoritmo matemático
Publicado por: Vaagish en 6 Abril 2014, 17:47 pm
Citar
Eso no es programación, eso son matemáticas de 1º

No se que sera ESO, (calculo que liceo como se dice por acá). Como dijo Ikillnukes, no tiene nada que ver con programación,. si CoolTesting realizase la misma cuenta sobre un papel tendría el mismo resultado..

PD: o debería jeje

Saludos!


Título: Re: Duda en algoritmo matemático
Publicado por: Bob1098 en 17 Abril 2014, 18:12 pm
Eso es debido, como ya han dicho todos, a que los operados siguen un orden tanto en matemáticas como en C++ y la mayoría de los lenguajes de programación. En este caso, predomina la multiplicación.

PD: Las librerías stdio.h y stdlib.h me parece que sobran :)