Dev-C++, clase6 – operaciones con decisiones

Hola a todos/as,

Seguimos con las clases, en éste caso entra una nueva instrucción que vamos a usar. La instrucción es del tipo » selectiva doble » y su denominación en codigo es: if / else y nos permite realizar decisiones del tipo:

– Si x vale 100 entonces haga ésto… [ Si = if ]

– Caso contrario haga ésto… [ Caso contrarioelse ]

Esas son decisiones que podemos tomar, las decisiones van normalmente en todo caso a que; si algo es asi, pues haga algo // si algo no es asi, pues haga algo diferente y por ultimo de que si son iguales las cosas, pues se hara algo tambien en ése caso. Recordemos que en la decision es como una comparacion si se fijan, siempre se estan comparando valores 😉

Vamos con un ejercicio para ver más a fondo como va ésto de las decisiones en el lenguaje C++, y aprender más sobre ésta nueva funcion que veremos.

7.-) Hacer un programa que pida dos nuemros. En caso de que el primero sea mayor que el segundo, se le sumará la cantidad de 100. Si al contrario el segundo numero es mayor al primero, se le sumará la cantidad de 200. Mostrar el mayor numero con la suma que le corresponde 100 o 200.

Por favor antes de ver ésta entrada recomiendo ver la entrada:

Uso de la aplicacion

Bien, el ejercicio nos dice que debemos pedir dos numeros, para ello usaremos dos variables n1 y n2.

Tambien nos dice que si el primer numero es mayor al segundo se le sumará la cantidad de 100, y si el segundo es mayor al primero se le sumará 200. Asi que pongamos valores y emulemos lo que vendria a hacer el ejercicio:

n1 = primer numero

n2 = segundo numero

resp1 = en caso de que el primer numero haya sido mayor en ésta variable se almacenará el valor de n1 + 100

resp2 = en caso de que el segundo numero haya sido mayor en ésta variable se almacenará el valor de n2 + 200

Si n1 es mayor a n2 entonces a n1 le sumamos 100

Caso contrario significa que n1 no fue mayor a n2, osea que n2 es mayor a n1 por lo tanto a n2 que vendria a ser el mayor se le suma 200

– – Vamos con valores ahora 😉

n1 = 20

n2 = 60

Si 20 es mayor a 60 entonces resp1 = 20 + 100 [ pero no es así, 20 NO es mayor a 60 ], asi que vamos al caso contrario..

Caso contrario ( osea al revez, que 60 es mayor a 20 ) entonces resp2 = 60 + 200 [ éste si es correcto, pues 60 SI es mayor a 20 ]

Entonces mostrariamos el valor mayo con su suma respectiva asi:

El numero mayor fue: 60 Y se le agrego la cantidad de 200, por lo tanto el resultado es: 260.

Esa es la idea del ejercicio 😉

ATENCION: en las clases anteriores he explicado las lineas y que hace cada una, entonces les sugiero que vean las entradas anteriores para entender las lineas de las que no voy a hacer mucha enfasis.

Las lineas que ya hayamos visto, les colocaré ” *** “  al final para que sepan que ya lo hemos visto con anterioridad ( entiendase como “anterioridad” a la/las clases anteriores ademas de sus correspondientes entradas en la seccion “General” del mapa de sitio ).

#include <iostream.h>
main ()

{

int n1,n2,resp1,resp2;
cout<<» \t \n Ingrese 2 numeros \n \n»;
cout<<» \n Primer nuemro: \n»;
cin>>n1;
cout<<» \n Segundo nuemro: \n»;
cin>>n2;

if ( n1 > n2 )
{
resp1 = n1 + 100;
cout<<» \n El numero mayor fue: «<<n1<<» Y se le agrego la cantidad de 100, por lo tanto el resultado es: «<<resp1<<«\n\n»;
}
else
{
resp2 = n2 + 200;
cout<<» \n El numero mayor fue: «<<n2<<» Y se le agrego la cantidad de 200, por lo tanto el resultado es: «<<resp2<<«\n\n»;
}

system(«pause»);

}

– linea 1: la cabecera y libreria ***

– linea 2: funcion principal ***

– linea 3 – 21 : inicio y fin del programa ***

– linea 4: declaramos variables ***

– linea 5: recurso ” cout ” ***

– linea 6: recurso ” cout ” ***

– linea 7: recurso ” cin ” ***

– linea 8: recurso ” cout ” ***

– linea 9: recurso ” cin ” ***

– linea 10 – 19: instruccion selectiva doble: ” if / else ”

Como ya venia diciendo en el comienzo de ésta clase, la instrucción selectiva doble: » if / else » es para tomar decisiones entre de que:

si esto es como esto.. entonces haga esto..

si esto no es como esto.. entonces haga esto..

si estas cosas son iguales.. entonces haga esto..

Sirve para la toma de decisiones como pueden observar, muy bien y en el ejercicio que vine explicando la logica de él arriba veiamos que si era mayor el primero se le sumaba 100, si era mayor el segundo se le sumaba 200.

Ahora, como sabemos cada instrucción\funcion\recurso\protipo\etc.. tiene su sintaxis ( así como vimos con la sintaxis de los recursos cin y cout ), la instrucción selectiva doble: if / else de igual manera tienen una sintaxis, la cual explicaré a continuacion:

if ( comparacion de datos )

{

operaciones o datos a mostrar si la comparacion resultó como se queria

}

Como podemos observar, primero se coloca la palabra reservada if que significa ( si.. ), entonces ahi comenzariamos con el: » si x vale 1 entonces.. « ( ésto es un ejemplo )

Luego de la palabra reservada if, pues colocamos lo que queremos comparar, dependiendo del ejercicio puede variar. En nuestro caso era que comparabamos dos variables para ver cual era mayor. Así:

if ( n1 > n2 )

Ahora que se hizo la comparacion hay que decirle al programa que va a hacer si eso es cierto. Entonces el programa analiza..

¿ es n1 mayor que n2 ?. Respuesta SI ( supongamos )

Entonces debe hacer algo al respecto, ahi es donde entra en juego lo que va entre llaves » { } «

Asi como decia arriba en la sintaxis de la funcion if, en las llaves se puede hacer tanto, operaciones o simplemente mostrar un dato, en nuestro caso hicimos las dos cosas.

– Hicimos operaciones:

resp1 = n1 + 100;

– Mostramos datos:

cout<<» \n El numero mayor fue: «<<n1<<» Y se le agrego la cantidad de 100, por lo tanto el resultado es: «<<resp1<<«\n\n»;

pero todo eso debe ir entre llaves para indicarle al programa de donde a donde se estan realizando cosas por el hecho de que la resupesta haya sido SI a la decision.

Pero si la respuesta a la decision hubiese sido NO, ahi cambia la cosa. Se salta automaticamente lo que haria el programa si hubiera sido SI y va directamente a hacer lo que tenia previsto cuando la respuesta era NO.

De esta manera:

¿ es n1 mayor que n2 ?. Respuesta NO ( supongamos )

Entonces debe hacer algo al respecto, y eso va a ir entre llaves como en el caso anterior » { } «

Pero ya no va if si no que va else porque if es cuando la respuesta a la condicion  sea SI y else es cuando la respuesta a la condicion sea NO

Ya que suponemos que n1 NO fue mayor que n2, entonces se le sumaba 200 a la cantidad mayor, en éste caso es n2. Y asi mismo se puede hacer operaciones o simplemente mostrar datos, y como en el if, hicimos las dos cosas:

– Hicimos operaciones:

resp2 = n2 + 200;

– Mostramos datos:

cout<<» \n El numero mayor fue: «<<n2<<» Y se le agrego la cantidad de 200, por lo tanto el resultado es: «<<resp2<<«\n\n»;

Así es como funciona if / else. Y su sintaxis aunque ya está explicada en todo lo que he dicho, se la puede dejar expuesta así:

if ( comparacion de datos )

{

operaciones o datos a mostrar si la comparacion resultó como se queria

}

else ———–> caso contrario

{

operaciones o datos a mostrar si la comparacion no resultó como se queria

}

– linea 20: pausando el programa ***

Saludos y cualquier duda o comentario lo atenderé lo más rapido posible 😉

13 respuestas

  1. Ahhh!!! que me quedo atrás!!!! ahora me pongo con el ejercicio 4 😛 es que como es viernes y mañana no hay clase pues… ideal 😀 (ahh y otra cosa, le enseñé tu blog a 2 amigos… :P)

    • Jajaja, tranquilo Lorenzo disfruta el viernes jajaja!!. Gracias Lorenzo por hacer llegar el blog a más personas, espero poder ayudarle a tus amigos tambien (=

      Saludos 😀

  2. oie eddy una cosilla para la doble condicion if/else es necesario usar los corchetes??? tengo esa duda con un ejercicio q es digitar un numero y saber si es primo o no
    entoncs el ejercicio no me sale no c si es por la mala ubicacion de las condiciones o es q no c jejejje te agradesco la ayuda

    • Hola Trish,
      bueno sabes no se a que «corchetes» te refieres Trish, pero tomaré como que te has equivocado de termino y te referias a las «llaves {}»
      bien, pues si; son necesarias cuando en el if o en el else vas a hacer más de una operacion, por ejemplo: VER IMAGEN
      En la 1era parte donde dice «No necesita llaves»
      // Ves que no necesita ni en el if, ni en el else pues va a hacer una sola operacion por verdadero o falso
      En la 2da parte donde dice «Necesita llaves»
      // Podras notar que en el if, uso las llaves para indicar de donde a donde va el if; ya que si no la ponia
      iba a pedir de igual manera el «x» y yo quiero que el «x» lo pida SOLO si a==1, entonces eso debe ir
      entre llaves.
      En conclusion, las llaves indican un ambiente en donde vas a hacer algo ( de donde a donde va y que nomas harás solo ahi )
      Si tienes alguna duda, o no te quedó claro me avisas y puedo ayudarte de otra manera, saludos!

  3. vale ps en cuanto a las llaves qdo claro pero es q mira tengo un problema con un ejercicio me dic q debo escribir un numero y determinar si es primo o no la vdd no he sabido como hacerlo te lo agradeceria mucho

  4. mmmm mira eddy la vdd ps estoy trabajando con while aun no me piden trabajar con vectores entoncs me perdi cuando hiciste vectores y aun mas cuando utilizaste el for

    • Claro, por eso te pregunte si ya estabas por ahi, pero bien mira es voy a ver si lo puedo desarrollar maximo usando while por ahi, para que esté mas accesible a tus conocimientos actuales, pero yo te aviso por mail, ok. Saludos!

  5. agradesco tu colaboracion aun asi he enviado un msn a tu mail con dos programas diseñados en while factorial de un numero y fibonacci espero sirva para explicacion a futuros programadores saludos

  6. oye una pregunta es q tengo un numero por ejemplo 896.23 me piden separa por cifras a un lado la parte entera y a otro lado la decimal ya he sacado la entera ahora el problema es con la decimal me podrias guiar a q debo hacer

    • Hola Trish,
      pues no se muy bien a que te refieres con «separar cifras»; pero si te refieres a hacer esto:
      8 – 9 – 6 . 2 – 3, asi separarlas pues si ya has separado la parte entera, se aplica lo mismo a la parte decimal, yo te recomendaria crearte una variable temporal donde vas a almacenar la parte decimal y luego le aplicas la misma «forma de separacion» que le aplicaste a la parte entera, es decir
      numero = 896.23
      temporal1= 896
      temporal2 = 23
      Luego separas a ambos temporales y ya sabes de por si que cuando termine la parte entera ( temporal1 ) vas a mostrar «un punto ( . )» o coma, que indicará que lo que sigue ( temporal2 ) es la parte decimal, eso se me ocurre hasta el momento con lo que me has dicho. Saludos!

  7. hay voy ahora el inconveniente es q cuando imprimo los valores solo me imprime los enteros y no sigue el programa

  8. Hola
    ando estudiando programacion y me dejaron acer unos ejercicios en Dev c++, el problema es q los ago pero no cumplen las caractaristicas necesarioas, osea tienen herrores! porfavor quisiera que me ayuden! necesito entregar los ejercicios el dia de hoy hasta las 12 de la noche! gracias

    aca les dejo los problemas que no puedo resolver porfa!

    4.Calcular el perímetro de un triangulo, dadas las coordenadas de los puntos A,B y C, que corresponden a los vértices del triángulo en el plano carteciano.

    io lo hice asi

    #include
    #include
    #include
    main()
    {
    double x1,x2,x3,y1,y2,y3,m1,m2,m3,d1,d2,d3;//m=pendiente, d=distancia
    cout<<"Ingresar las cordenadas del triangulo: (x1,y1);(x2,y2);(x3,y3)"<>x1>>y1>>x2>>y2>>x3>>y3;
    m1=(y1-y2)/(x1-x2);
    m2=(y1-y3)/(x1-x3);
    m3=(y3-y2)/(x3-x2);
    system(«cls»);
    if (m1!=m2 && m2!=m3)
    {
    if (m1!=m3)
    {d1=sqrt(pow((x1-x2),2) + pow((y1-y2),2));
    d2=sqrt(pow((x1-x3),2) + pow((y1-y3),2));
    d1=sqrt(pow((x3-x2),2) + pow((y3-y2),2));
    cout<<"El perimetro del triangulo es"<<d1+d2+d3<<endl;
    }}
    else
    cout<<"Los puntos ingresados no generan un triangulo"<<endl;

    getche();
    }

    pero cuando coloco tres puntos iguales no funciona la restriccion.

    7.Elabore un programa que permita leer las coodenadas de dos puntos A(x1,y2) y B(x2,y2) y muestre en pantalla la pendiente que pasa por ambos puntos asi como la ecuacion y=mx + b, donde "m" es la pendiente de la recta y "b" la ordenada en el origen.

    dijo:

    #include
    #include
    main()
    {
    float x1,x2,y1,y2,m;
    cout<<"ingrese las cordenadas del punto A(x1,y1) y del punto B(x2,y2)"<>x1>>y1>>x2>>y2;
    m=(y2-y1)/(x2-x1);
    cout<<"la pendiente de la recta que pasa por los puntos A y B es: "<<m<<endl;
    cout<<"Y="<<m<<"X + "<<(y1 – m*x1)<<endl;

    getche();
    }

    io lo ise asi pero tengo problema con los signos.

    9. Ingrese las coodenadas de dos puntos en el plato cartesiano y, apartir de ellos, mostrar la ecuacion general de la recta Ax + By + C =0.
    este aun no lo termino por que tengo problemas con los coeficientes.

Deja un comentario