ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

LOGICA DE PROGRAMACION


Enviado por   •  3 de Octubre de 2013  •  18.117 Palabras (73 Páginas)  •  278 Visitas

Página 1 de 73

IF :

Posts guardados en "if else":

Devolver cambio en C++

Guardado en: Programas el 10 de febrero del 2011 Etiquetas: if else, while

¿Han pagado algún recibo en una máquina automática y se han preguntado cómo será el programa que les devuelve el cambio? Lo más seguro es que no, pero pues resulta que el profesor de Miguel Ángel le encargó un programa que simulara eso, en sus propias palabras:

“Supón que una maquina de monedas de 10,5,2,1 y 50 centavos. Debes escribir un programa que decida cuantas monedas dará de cambio, dando prioridad las de mayor denominación. Debe recibir como entrada la cantidad de dar a cambio. Ejemplo: para $40.50 será 4 de 10, 0 de 5, 0 de 2, 0 de 1 y 1 de 50 centavos.”

Así que el primer problema se presenta con la entrada ¿cómo hacer que el usuario introduzca sólo cantidades como $50 o $43.50 y no cantidades como $23.45 o $9.70?

Lo que se me ocurrió es pedir la cantidad en una variable float (cambio), en otra variable convertir esa cantidad a tipo int (cambioint). En ese proceso se perderá la parte decimal del número, así que si la resta cambio – cambioint es igual a 0 o igual a 0.50, la cantidad que introdujo el usuario es correcta.

La otra parte es sencilla, sólo se necesita ver si la variable cambio es mayor que 10. Si si, se le restan 10 a la variable y se aumenta un contador. Luego se hace lo mismo con las demás monedas.

Pero bueno, el programa es este:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41 #include<iostream>

using namespace std;

int main()

{

float cambio; int cambioint, m10=0, m5=0, m2=0, m1=0, m50c=0;

do

{

cout << "Cambio?: "; cin >> cambio;

cambioint = (int)cambio;

}while((cambio - cambioint) != 0 && (cambio - cambioint) != 0.50);

while(cambio != 0)

{

if(cambio>=10)

{

m10++;

cambio-=10;

}

else if(cambio>=5)

{

m5++;

cambio-=5;

}

else if(cambio>=2)

{

m2++;

cambio-=2;

}

else if(cambio>=1)

{

m1++;

cambio-=1;

}

else if(cambio>=0.5)

{

m50c++;

cambio-=0.5;

}

}

cout << m10 << ", " << m5 << ", " << m2 << ", " << m1 << ", " << m50c;

}

Solo le faltaría darle un poco de formato a la salida, pero pues ya es cuestión de gustos y ya saben, cualquier duda aquí están los comentarios abajo.

25 Comentarios

Primo o no ¡SIN CICLOS! en C++

Guardado en: Programas el 9 de septiembre del 2010 Etiquetas: if else, primos

Me preguntaban en los comentarios de este post: Primo o no, que si habría alguna forma de hacer ese mismo programa pero sin ciclos. Mmmm…

Pues mi primera respuesta es no. Pero hay una forma muy burda de aproximarse a él. El siguiente programa es para calcular si un número es primo o no sin ciclos y es infalible hasta el 168, a partir de ahí puede que le atine o puede que no.

#include<iostream>

using namespace std;

int main()

{

int n;

cout << "Introduce un numero: "; cin >> n;

if(n!=2 & n%2==0)

cout << "No es primo";

else

{

if(n!=3 & n%3==0)

cout << "No es primo";

else

{

if(n!=5 & n%5==0)

cout << "No es primo";

else

{

if(n!=7 & n%7==0)

cout << "No es primo";

else

{

if(n!=11 & n%11==0)

cout << "No es primo";

else

{

cout << "Es primo";

}

}

}

}

}

}

 Como vemos, primeramente checa si n es igual a 2; si no, checa si el residuo de n/2 es cero. Si si, no es primo; si no, sigue.

 Luego checa si n es igual a 3; si no, checa si el residuo de n/3 es cero. Si si, no es primo; si no, sigue.

 Lo mismo con el 5, el 7 y el 11.

Con eso obtenemos un buen número de números en los que estamos seguros que no fallaremos. Si agregamos el 13, agrandamos esa cantidad; y aún mas con el 17, el 19, … como en esta versión optimizada, que tiene su primer error con el 1681 (que no es primo)

#include<iostream>

using namespace std;

int main()

{

int n;

cout << "Introduce un numero: "; cin >> n;

if((n!=2 & n%2==0)||(n!=3 & n%3==0)||(n!=5 & n%5==0)||(n!=7 & n%7==0)||

(n!=11 & n%11==0)||(n!=13 & n%13==0)||(n!=17 & n%17==0)||(n!=19 & n%19==0)||

(n!=23 & n%23==0)||(n!=29 & n%29==0)||(n!=31 & n%31==0)||(n!=37 & n%37==0))

cout << "No es primo";

else

cout << "Es primo";

}

Pero pues de eso no se trata, los ciclos son para evitar las cantidades interminables de ifs, así que usémoslos.

Ah y recuerden que si corren un programa y su compilador no se pausa solo, tienen que agregar cin.get();cin.get(); al final del programa, antes de la llave de cierre del main.

Si llegaste aquí buscando un programa para saber si un número es primo o no, sigue el link que está al principio del post.

5 Comentarios

Programa: Porcentaje de Hombres

...

Descargar como (para miembros actualizados) txt (114 Kb)
Leer 72 páginas más »
Disponible sólo en Clubensayos.com