Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: CoolTesting en 26 Marzo 2014, 08:07 am



Título: ¿Porqué este resutado matemático?
Publicado por: CoolTesting en 26 Marzo 2014, 08:07 am
Muy buenos dias, bueno estuve en una página en la cual te hacian un test para ver si sabes sobre el lenguage <b> C </b> y saqué 8 respuestas correctas de 18 xD, bueno ese no es el rollo, me explico.

Lo que pasa es que en una de esas preguntas me apareció este código:

#include <stdio.h>
#include <conio.h>
int main(){
int a, b, c;
     a = 5;
     b = 1;
     c = ( a + 5 * 2 ) * ( b + 6 / 2 ) + ( a * 2 );
     printf( "%i", c );
     getch();
     
     
}


y Me preguntaba que cual era el resultado, yo simplemente dije que el resultado es <b> 36 </b>

¿Porqué?
Bueno, ahí dice que a es igual a 5 y b es igual a 1..

Entonces.
( 5 + 5 * 2 ) * ( 1 + 6 / 2 ) + ( 5 * 2 ) = 36.

¿Porqué en la respuesta del el test me dijo que el resultado es 70, y no tanto eso. Yo tambien lo probé en el compilador dev c++ porque pensé que era algún error de la página (Ahora veo que el que está en el error soy yo xD) y bueno efectivamente me dió el resultado 70, alguien me puede explicar? No soy experto en la materia, si no hubiese sabido porqué da 70, muchisimas gracias por adelantado.


Título: Re: ¿Porqué este resutado matemático?
Publicado por: eferion en 26 Marzo 2014, 08:12 am
( a + 5 * 2 ) * ( b + 6 / 2 ) + ( a * 2 )
( a + 10 ) * ( b + 3 ) * ( a * 2 )
( 5 + 10 ) * ( 1 + 3 ) * ( 5 * 2 )
15 * 4 + 10
60 + 10
70

Los operadores de multiplicación y división SIEMPRE tienen prioridad sobre los de suma y resta... son matemáticas básicas.


Título: Re: ¿Porqué este resutado matemático?
Publicado por: da8332 en 29 Marzo 2014, 23:35 pm
Por curiosidad cual es esa web?


Título: Re: ¿Porqué este resutado matemático?
Publicado por: leosansan en 30 Marzo 2014, 09:56 am

Completando a eferion, el orden de prioridad lo podemos resumir en:

* paréntesis, llaves, corchetes (estos dos últimos en Mates).

* potencias y raíces.

* multiplicaciones y divisiones.

* sumas y restas.

* Si existen funciones se les aplica el orden de prioridades anterior.

* Y se opera de izquierda a derecha.

Lo último no tiene nada que ver con la propiedad conmutativa sino con:

* de izquierda a derecha:

   ** 6/2: 6 dividido por 2 correcto.
   ** 6^2: 6 elevado a 2. correcto.

* de derecha a  izquierda:

   ** 6/2: 2 dividido por 6. incorrecto.
   ** 6^2: 2 elevado a 6. incorrecto.


¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)