Cuaderno de Ejercicios de C

Embed Size (px)

Citation preview

  • 7/31/2019 Cuaderno de Ejercicios de C

    1/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 1

    CUADERNO DE TRABAJO DE C++

  • 7/31/2019 Cuaderno de Ejercicios de C

    2/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 2

    ContenidoPARTE I ............................................................................................................................................. 5 INSTRUCCIONES ................................................................................................................................ 6 Ejercicio 1 Hola Mundo .................................................................................................................. 7 Ejercicio 2 Tipos de datos ............................................................................................................... 7

    Ejercicio 3 Mezcla de tipos de datos ............................................................................................... 8 Ejercicio 4 Simplificando comandos y datos ................................................................................... 9 Ejercicio 5 Variables de preprocesador ......................................................................................... 10 Ejercicio 6 Salida por pantalla ....................................................................................................... 11 Ejercicio 7 Entrada y salida por pantalla ....................................................................................... 11 Ejercicio 8 Operadores y tipos de datos ........................................................................................ 12 Ejercicio 9 Operaciones simples ................................................................................................... 13 Ejercicio 10 - Concatenacion ........................................................................................................... 14 Ejercicio 11 IfElse ....................................................................................................................... 15 Ejercicio 12 Operaciones condicionales ........................................................................................ 15 Ejercicio 13 IFELSE anidados ...................................................................................................... 16

    Ejercicio 14 Salida a un archivo externo ....................................................................................... 18 Ejercicio 15 - Switch ........................................................................................................................ 20 Ejercicio 16 Area de poligonos con Switch .................................................................................... 20 Ejercicio 17 Ciclo For .................................................................................................................... 23 Ejercicio 18 Ciclo while ................................................................................................................. 24 Ejercicio 19 Ciclos anidados .......................................................................................................... 25 Ejercicio 20 Ciclo While ................................................................................................................ 26 PRACTICA 1 ..................................................................................................................................... 26 Ejercicio 21 - Juego del Granjero ..................................................................................................... 27 Ejercicio 22 - Juegos ........................................................................................................................ 33

    Ejercicio 22a Juego de Adivinanzas ........................................................................................... 34

    Ejercicio 22b - Tragamonedas .......... .......... ......... ........... ......... ............ ......... ........ .......... ........... .. 36 Ejercicio 22c Pseudovirus ......................................................................................................... 38 Ejercicio 23 - Juego del Ahorcado .................................................................................................... 40 Ejercicio 24 - Juego Las Torres de Hanoi .......................................................................................... 48 Ejercicio 25 Arreglos ..................................................................................................................... 52 Ejercicio 26 ..................................................................................................................................... 54 Ejercicio 27 Cadenas .................................................................................................................... 56 Ejercicio 28 - Arreglos y cadenas ..................................................................................................... 58 Ejercicio 29 - Juego del Gato (Tic-Tac-Toe) ...................................................................................... 60 Ejercicio 30 Estructuras ................................................................................................................ 64 Practica/Ejercicio 1 Zodiaco ......................................................................................................... 66 Practica/Ejercicio 2 Califaciones Estilo USA .................................................................................. 70 Practica/Ejercicio 3 Sueldos a trabajador...................................................................................... 72 Practica/Ejercicio 4 Promocion de Ventas .................................................................................... 74 Practica/Ejercicio 5 Retraso en renta peliculas ............................................................................. 77 Practica/Ejercicio 6 Dados ............................................................................................................ 79 PRACTICA 7 Contando dinero ....................................................................................................... 82 PRACTICA 8 Numeros ................................................................................................................... 82 PRACTICA 9 Numeros ordenados ................................................................................................. 82 PRACTICA 10 Boletos .................................................................................................................... 82

  • 7/31/2019 Cuaderno de Ejercicios de C

    3/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 3

    PRACTICA 11 Conversiones metricas ............................................................................................ 82 PRACTICAS DE VARIABLES, TIPOS DE DATOS, ASIGNACIONES, OPERADORES .................................. 83

    PRACTICA 12 Rectangulo .......................................................................................................... 83 PRACTICA 13 Pies ..................................................................................................................... 83 PRACTICA 14 Triangulo ............................................................................................................. 83 PRACTICA 15 Raices .................................................................................................................. 83 PRACTICA 16 Tiempos .............................................................................................................. 83 PRACTICA 17 Prestamo ............................................................................................................ 83 PRACTICA 18 Metros ................................................................................................................ 83 PRACTICA 19 Millonario ........................................................................................................... 84 PRACTICA 20 Promedio ............................................................................................................ 84 PRACTICA 21 Circulo ................................................................................................................. 84 PRACTICA 22 Maquina reversadora de numeros ...................................................................... 84 PRACTICA 23 Nibles .................................................................................................................. 84 PRACTICA 24 Multiplicacion por 300 ........................................................................................ 84 PRACTICA 25 Peso .................................................................................................................... 84 PRACTICA 26 Fahrenheit .......................................................................................................... 84 PRACTICA 27 Celsius ................................................................................................................. 84 PRACTICA 28 Determinante ...................................................................................................... 85 PRACTICA 29 Don Manolo ........................................................................................................ 85 PRACTICA 30 - ISBN .................................................................................................................... 85 PRACTICA 31 Odometer ........................................................................................................... 86 PRACTICA 32 Triangulo II .......................................................................................................... 86 PRACTICA 33 Distancia Euclidiana ............................................................................................ 86 PRACTICA 34 Validacion de Tarjetas de credito ........................................................................ 86 PRACTICA 35 Suma de fracciones ............................................................................................. 87

    PRACTICAS DE ESTRUCTURAS DE CONTROL .................................................................................... 87 PRACTICA 36 Max ..................................................................................................................... 87

    PRACTICA 37 Positivo Negativo ................................................................................................ 87 PRACITCA 38 Par Impar ............................................................................................................ 87 PRACTICA 39 Convertidor de divisas ......................................................................................... 87 PRACTICA 40 Grado Promedio .................................................................................................. 88 PRACTICA 41 Bisiesto ............................................................................................................... 88 PRACTICA 42 Diferencia............................................................................................................ 88 PRACTICA 43 Saludo ................................................................................................................. 88 PRACTICA 44 - Control ................................................................................................................ 88 PRACTICA 45 Multiplo .............................................................................................................. 89 PRACTICA 46 ASCII ................................................................................................................... 89 PRACTICA 47 Super Raices ........................................................................................................ 89

    PRACTICA 48 Dia semana ........................................................................................................ 89 PRACTICA 49 Super Triangulo ................................................................................................... 89

    PRACTICAS DE ESTRUCTURAS REPETITIVAS ..................................................................................... 89 PRACTICA 50 Countdown ......................................................................................................... 89 PRACTICA 51 Factorial .............................................................................................................. 89 PRACTICA 52 Serie 1 ................................................................................................................. 90 PRACTICA 53 Primo .................................................................................................................. 90 PRACTICA 54 Ingenieros 2050 .................................................................................................. 90

  • 7/31/2019 Cuaderno de Ejercicios de C

    4/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 4

    PRACTICA 55 Super Primos ....................................................................................................... 90 PRACTICA 56 Mayor Menor ...................................................................................................... 90 PRACTICA 57 Cuadrado ............................................................................................................ 90 PRACTICA 58 Decimal a Hexadecimal ....................................................................................... 90 PRACTICA 59 Rombo ................................................................................................................ 90 PRACTICA 60 Binario ................................................................................................................ 90 PRACTICA 61 Tablas de Multiplicar ........................................................................................... 91 PRACTICA 62 Divisores ............................................................................................................. 91 PRACTICA 63 Calculadora ......................................................................................................... 91 PRACTICA 64 Adivinar............................................................................................................... 91 PRACTICA 65 Nicomaco ............................................................................................................ 91 PRACTICA 66 Perfectos ............................................................................................................. 92 PRACTICA 67 Sumatorias .......................................................................................................... 92 PRACTICA 68 Guess my age ...................................................................................................... 92 PRACTICA 69 Power ................................................................................................................. 92 PRACTICA 70 Amigos ................................................................................................................ 92

    PRACTICAS CON VECTORES ............................................................................................................. 92 PRACTICA 71 Minimo ............................................................................................................... 92 PRACTICA 72 Cafeteria ............................................................................................................. 93 PRACTICA 73 Traductor de Codigo Morse ................................................................................. 93 PRACTICA 74 Serie .................................................................................................................... 93

  • 7/31/2019 Cuaderno de Ejercicios de C

    5/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 5

    PARTE ILos ejercicios y practicas de esta primera parte estan enfocados a entender los conceptos y el modode sintaxis de C++. Se vera la estructura basica de un programa, las instrucciones estandar y alfinalizar algunos ejemplos de comandos condicionales SIENTONCES.

  • 7/31/2019 Cuaderno de Ejercicios de C

    6/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 6

    INSTRUCCIONES

    En este cuaderno de trabajo tendras los EJERCICIOS y PRACTICAS que veras en el curso deProgramacion I. Los ejercicios seran instrucciones paso a paso o programas ya resueltos para que losteclees, te familiarices con la sintaxis, comados y realices alguna tarea sobre ellos como generar losdiagramas de flujo, pseudocodigo o indicar su funcionamiento. Las practicas , no tendran aqu larespuesta, sino que deberas realizarla desde cero.Debes teclear cada uno de los programas en tu compilador de C++. Hacer la compilacion yencadenamiento y ver los resultados.

    Recuerda que debes guardarlos y entregar tanto el compilado (.EXE) como el codigo fuente a tu profesor. Ambos deben ir en un archivo ZIP como se describe a continuacion, si se los envias por correo electronico:

    Alumno_Grado_NoEjercicio...... Ejemplo: ReynolHernandez_03_Prog01.zip

    Ademas, cada ejercicio debera ir acompaado de su diagrama de flujo y pseudocodigo.

    Los programas fueron creados en Visual C++ 6.0, de la suite Microsoft Visual Studio 6.0 quesoporta hasta Windows XP. Para versiones Windows Vista y Windows 7, este compilador nofuncionara. Necesitaras descargar el Visual C++ 2008 Studio Express y posiblemente haceralgunas modificaciones en el codigo.

  • 7/31/2019 Cuaderno de Ejercicios de C

    7/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 7

    Ejercicio 1 Hola Mundo

    1. El primer programa es el clasico HOLA MUNDO. Aqui lo hemos nombrado hola.cpp

    Primero.cpp#include

    int main(){std::cout

  • 7/31/2019 Cuaderno de Ejercicios de C

    8/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 8

    Que operaciones estamos realizando?

    Cual es el comando para mostrar salida por pantalla?

    Ejercicio 3 Mezcla de tipos de datos

    El tercer programa es una variacion del segundo que incorpora un tipo de dato caracter para mezclar los dos

    Segundob.cpp#include int main(){

    int x = 5;int y = 7;std::cout

  • 7/31/2019 Cuaderno de Ejercicios de C

    9/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 9

    Ejercicio 4 Simplificando comandos y datos

    El cuarto programa es otra variacion del no. 2, pero aqui pedira una entrada por el teclado, sealmacena en una variable caracter y luego muestra todos los resultados.

    Tercero.cpp/* Tercero.cppEste es el tercer programa y vamos a ver la entrada del teclado y salidapor pantallaen la consola */

    /* Esta es la libreria basica */#include

    /* Para no repetir la libreria std, la declaramos aqui */using std::cout;using std::cin;

    int main(){

    int x = 5;int y = 7;char nombre [200];cout

  • 7/31/2019 Cuaderno de Ejercicios de C

    10/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 10

    Ejercicio 5 Variables de preprocesador

    En este ejercicio veremos como usar variables para ejecutarse en el preprocesador

    Prog05.cpp/* Prog05_Case.cppUn programa que pregunta su nombre y le saludaDe: El C++ por la practica. FICHA 1. Pag. 15Por: Lic. Sergio Hugo Sanchez O.Para: Universidad Valle del Bravo

    17, Mayo,2009 */

    #include

    #define FRIEND 1int main ( void ){

    char name [200];std::cout > name;

    #ifdef FRIENDstd::cout

  • 7/31/2019 Cuaderno de Ejercicios de C

    11/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 11

    Ejercicio 6 Salida por pantalla

    Simple programa de salida por pantalla

    Prog06.cpp

    /* Prog06_17.cppPrograma del ejercicio propuesto pag. 17 C++ por la practica.Para repasar la forma de mostrar mensajes en la pantalla.Por: Lic. Sergio Hugo Sanchez O.Para: Universidad Matamoros17,Mayo, 2009 */#include int main( void ){

    cout

  • 7/31/2019 Cuaderno de Ejercicios de C

    12/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 12

    Que tipo de dato estamos declarando? Y como?

    Ejercicio 8 Operadores y tipos de datos

    Programa que muestra el uso de operadores y tipos de datos

    Prog08.cpp/* Prog08_19.cppPrograma de la pagina 19 Curso C++ a la practicaPara conocer los tipos basicos de datos en CPor: Lic. Sergio Hugo Sanchez O

    Para: Universidad Matamoros17, Mayo, 2009

    FICHA2*/#include

    int global = 5;

    int main ( void ){

    int a= 1;double x = 1.2 ;double y = 2.3 ;

    cout

  • 7/31/2019 Cuaderno de Ejercicios de C

    13/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 13

    Ejercicio 9 Operaciones simples

    Otro ejemplo de operaciones simples con tipos de datos numericos

    Prog09.cpp/* Prog09_21.cppPrograma pag 21 El C++ por la practicaTipos de datos numericos y operaciones simplesPor: Lic. Sergio Hugo Sanchez O.Para: Universidad Valle del Bravo17, Mayo, 2009

    Ficha2*/#include int main ( void ){

    double x, y, z;cout x;

    cout y;z = x+y;cout

  • 7/31/2019 Cuaderno de Ejercicios de C

    14/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 14

    Ejercicio 10 - Concatenacion

    Suma de caracteres, tambien llamada CONCATENACION.

    Prog11.cpp/*Prog11.cpp

    Programa que permite la suma (concatenacion) de 2 caracteres.Por: Lic. Sergio Hugo Sanchez O.Para: Universidad Matamoros17, Mayo, 2009

    Ficha 2*/#include int main ( void ){

    char a; //declaracion de la variable tipo caracterchar b;

    cout a;cout b;

    a+=b; // a=a+b, suma o concatenacion de caracterescout

  • 7/31/2019 Cuaderno de Ejercicios de C

    15/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 15

    Ejercicio 11 IfElse

    Ejercicio para usar la sentencia IF/ELSE

    Prog12.cpp/* Sentencias tipo if/else. Anidamientos y operaciones logicas */

    #include int main (){

    int i = 1; int j = 2;if (i>j){cout

  • 7/31/2019 Cuaderno de Ejercicios de C

    16/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 16

    Realiza el pseudocdigo del programa anterior

    Ejercicio 13 IFELSE anidados

    Ejercicio mas complejo de IF...ELSE anidados

    Prog14.cpp/*Calcular el area de diferentes poligonos */#include int main(){

    double a, b;double area;int figura;cout

  • 7/31/2019 Cuaderno de Ejercicios de C

    17/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 17

    cin >>a;cout > b;area = a*b;}

    else if (figura==3){ cout > a;cout > b;area=a*b/2.0;}

    else{ cout

  • 7/31/2019 Cuaderno de Ejercicios de C

    18/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 18

    Ejercicio 14 Salida a un archivo externo

    Programa mas complejo que involucra: IF...ELSE, matrices, mas de 1 libreria, creacion de archivo detexto, entrada y salida por pantalla. Nuevos comandos

    Prog15.cpp

    /* Se define la dimesion de un vector mediante un entero, el concepto dematrizse restringe de momento a un vector, se escribe un texto de salidamediante sentencialogica

    Aqui veremos otras librerias de C, como se crean los vectores y el uso deun archivode texto

    */#include #include

    #define MAX_SIZE 25int main (){

    int size;ofstream MyReport( "resultado.txt" );

    cout MAX_SIZE){

    cerr

  • 7/31/2019 Cuaderno de Ejercicios de C

    19/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 19

    Indica lo siguiente:Qu libreras estamos incorporando alprograma?

    Qu es lo que hace el programa?

    Cules son los comandos de archivo quese presentan?

    Realiza el pseudocdigo correspondiente:

  • 7/31/2019 Cuaderno de Ejercicios de C

    20/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 20

    Ejercicio 15 - Switch

    Programa de ejemplo para el Switch, variacion del primer programa IF...ELSE

    Prog16.cpp/* Uso de switch en lugar de IFIgual al prog13 */

    #include int main (){

    double a, b; int c;cout

  • 7/31/2019 Cuaderno de Ejercicios de C

    21/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 21

    switch (figura){case 1:

    cout >a;cout > b;area = a*b; break ;

    case 2:cout > a;cout > b;area=a*b/2.0; break ;

    default :cout

  • 7/31/2019 Cuaderno de Ejercicios de C

    22/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 22

    PARTE II En esta segunda parte se incluyen ejemplos para realizar ciclos. Ademas de incorporar funciones,matrices, y ejemplos de algunos juegos los cuales preparan al estudiante en la logica de laprogramacion.

  • 7/31/2019 Cuaderno de Ejercicios de C

    23/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 23

    Ejercicio 17 Ciclo For

    Primero haremos uno fcil. Escribir un programa que muestre una lista de nmeros del 1 al20, indicando a la derecha de cada uno si es divisible por 3 o no.

    Prog19.cpp// Este programa muestra una lista de nmeros, indicando para cada uno// si es o no mltipo de 3.// 11/09/2000 Salvador Pozo

    #include // librera para uso de cout

    int main() // funcin principal

    {

    int i; // variable para bucle

    for (i = 1; i

  • 7/31/2019 Cuaderno de Ejercicios de C

    24/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 24

    Ejercicio 18 Ciclo while

    Escribir el programa anterior, pero usando una funcin para verificar si el nmero esdivisible por tres, y un bucle de tipo "while".

    Prog20.cpp// Este programa muestra una lista de nmeros, indicando para cada uno// si es o no mltipo de 3.

    #include // librera para uso de cout

    // Prototipos:bool MultiploDeTres( int n);

    int main() // funcin principal

    {

    int i = 1; // variable para buclewhile (i

  • 7/31/2019 Cuaderno de Ejercicios de C

    25/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 25

    Ejercicio 19 Ciclos anidados

    Escribir un programa que muestre una salida de 20 lneas de este tipo:11 21 2 31 2 3 4...

    Prog21.cpp// Este programa muestra una lista de nmeros// de este tipo:// 1// 1 2// 1 2 3// ...

    #include // librera para uso de cout

    int main() // funcin principal

    {

    int i, j; // variables para buclesfor (i = 1; i

  • 7/31/2019 Cuaderno de Ejercicios de C

    26/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 26

    Ejercicio 20 Ciclo While

    Escribir un programa que muestre una salida con la siguiente secuencia numrica:1, 5, 3, 7, 5, 9, 7, ..., 23

    La secuencia debe detenerse al llegar al 23.El enunciado es rebuscado, pero ilustra el uso de los bucles "do...while".

    La secuencia se obtiene partiendo de 1 y sumando y restando 4 y 2, alternativamente.

    Veamos cmo resolverlo:Prog21.cpp

    /* Prog22 */

    #include

    int main() // funcin principal

    {

    int i = 1; / / variable para buclesbool sumar = true ; // Siguiente operacin es sumar o restarbool terminado = false ; // Se ha alcanzado la condicin de fin

    do { // Hacercout

  • 7/31/2019 Cuaderno de Ejercicios de C

    27/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 27

    Ejercicio 21 - Juego del Granjero

    Aqui vamos a hacer un alto o un parentesis en los temas que llevamos visto, para mostrar un

    ejemplo mas practico y divertido sobre la programacion y sobre C++. Nada mejor que checar la

    logica de un programa, asi como ver nuevas instrucciones que con un juego. Este programa incluye

    algunas cosas que no se han visto hasta este momento en el curso. Como estructuras, funciones,

    nuevas librerias y comandos (sentencias). Pero que por lo demas no son dificiles de entender.

    1. Deberas teclear todo el codigo en C++

    2. Deberas ejecutarlo... Y JUGARLO.

    3. Deberas realizar el algoritmo. LINEA X LINEA del codigo del juego indicando que es lo que crees

    que hace.

    4. Si tienes una duda sobre alguna instruccion... consulta la ayuda del editor o en la wikipedia.

    5. Opcial (para obtener mas puntos) realizar el diagrama de flujo del juego.

    NOTA: Puedes usar el siguiente programa ONLINE y gratuito para hacer tu diagrama de

    flujo. No olvides guardarlo o invitar al profesor con tu registro para que lo evalue.

    http://www.gliffy.com/

    He aqui el codigo:

    granjero.cpp/** G R A N J E R O** El problema del granjero cruzando el rio**/

    #include #include #include

    #define BELL 7#define K_ESC 27#define NBYTES 80

    /** Estructura de datos de los jugadores (bitfield)*/struct player_st {

    unsigned granjero : 1;unsigned zorra : 1;unsigned gallina : 1;unsigned maiz : 1;

    };

    struct player_st Player; // variable generica bitfield

  • 7/31/2019 Cuaderno de Ejercicios de C

    28/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 28

    /** Prototipos de funcion*/void Instruct( void );int GetMove( int );void DoMove( int );int CheckMap( int );int MadeIt( void );void YouLose( void );void PrintMap( void );

    int main(){

    int bank; //0 significa que el granjero esta enel banco izquierdo

    int move; // el codigo de la tecla para elmovimiento requerido

    int trips; // numero de viajes a traves del riochar reply[NBYTES]; //respuesta del usuario

    /** Poner las condiciones iniciales. Todos los elementos estan en el* banco oeste y no se han hecho ningun viaje*/Player.granjero = Player.gallina = Player.zorra = Player.maiz = 0;bank = Player.granjero;trips = 0;

    printf( "\n============= GRANJERO =================\n" );printf( "Presione ESC en cualquier tiempo para salir.\n\n" );printf( "Necesita instrucciones? (Pulse S o N): " );gets(reply);if (reply[0] == 'S' || reply[0] == 's' )

    Instruct();PrintMap();

    while (1) {move = GetMove(bank);DoMove(move);++trips;bank = Player.granjero;PrintMap();if (CheckMap(bank))

    YouLose();if (MadeIt())

    break ;}printf( "Felicidades! Has llegado a salvo!\n" );printf( "El numero de viajes fueron %d\n" , trips);

    return (0);}

    /** Instruct()** Despliega las reglas del juego**/void

  • 7/31/2019 Cuaderno de Ejercicios de C

    29/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 29

    Instruct(){

    printf( "**************************** INSTRUCCIONES********************************** \n" );

    printf( "Un granjero debe cruzar un rio en un bote.\n" );printf( "El tiene una zorra, una gallina y un balde de maiz.\n" );printf( "El granjero solo puede tomar una cosa a la vez en el

    bote.\n" );printf( "La zorra no se puede quedar sola con la gallina porque se

    la come.\n" );printf( "Tampoco puede dejar a la gallina con el maiz.\n" );printf( "Cuando el granjero esta presente, los animales se portan

    bien.\n" );printf( "Usted es el granjero. Intente llegar desde el lado oeste

    del rio \n" );printf( "al lado este con su equipaje a cuestas mientras hace el

    \n" );printf( "posible numero de viajes.\n" );

    }

    /*** GetMove()* Hacer los movimientos*/

    intGetMove( int bank){

    int key;

    /** Pregunte al usuario solo con los comandos disponibles.

    */printf( "\nComandos: S(olo) " );if (Player.zorra == bank)

    printf( "Z(orra) " );if (Player.gallina == bank)

    printf( "G(allina) " );if (Player.maiz == bank)

    printf( "M(aiz) " );printf( ":" );while (1) {

    key = toupper(getch());if (key == 'S' )

    break ;else if (key == 'Z' && Player.zorra == bank)

    break ;else if (key == 'G' && Player.gallina == bank)

    break ;else if (key == 'M' && Player.maiz == bank )

    break ;else if (key == K_ESC) {

    putchar( '\n' );exit (0);

    }else

    putchar(BELL); // mal comando

  • 7/31/2019 Cuaderno de Ejercicios de C

    30/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 30

    }putchar( '\n' );return (key);

    }

    voidDoMove( int move){

    switch (move) {case 'S' :

    break ;case 'Z' :

    Player.zorra = !Player.zorra;break ;

    case 'G' :Player.gallina = !Player.gallina;break ;

    case 'M' :Player.maiz = !Player.maiz;break ;

    }Player.granjero = !Player.granjero;

    }

    /** CheckMap()** Verificar que ningun elemento hostil se quedo solo* Regresar 1 si lo estan o 0 si no*/intCheckMap( int bank){

    int status = 0;

    if (Player.zorra != bank && Player.gallina != bank)

    status = 1;if (Player.gallina !=bank && Player.maiz != bank)status = 1;

    return (status);}

    /** PrintMap()** Desplegar el mapa actual mostrando las posiciones* del granjero y los demas elementos*/voidPrintMap(){

    char wc, ec;

    /* El granjero */wc = ec = ' ' ;if (Player.granjero)

    ec = 'G' ;else

    wc = 'G' ;printf( "\n%c ^^^^^ %c\n" ,wc, ec);

  • 7/31/2019 Cuaderno de Ejercicios de C

    31/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 31

    /* La zorra */wc = ec = ' ' ;if (Player.zorra)

    ec = 'z' ;else

    wc = 'z' ;printf( "\n%c ^^^^^ %c\n" ,wc, ec);

    /* La gallina */wc = ec = ' ' ;if (Player.gallina)

    ec = 'g' ;else

    wc = 'g' ;printf( "\n%c ^^^^^ %c\n" ,wc, ec);

    /* El maiz */wc = ec = ' ' ;if (Player.maiz)

    ec = 'm' ;else

    wc = 'm' ;printf( "\n%c ^^^^^ %c\n" ,wc, ec);

    }

    /** MadeIt()** Determinar si todos los elementos fueron satisfactoriamente* transportados al lado este del rio*/intMadeIt()

    {

    int status;status =0;if (Player.granjero && Player.zorra && Player.gallina &&

    Player.maiz)status = 1;

    return (status);}

    /** Cuando pierdes*/

    voidYouLose()

    {printf( "Lo sentimos, has perdido. " );if (Player.zorra == Player.gallina)

    printf( "La zorra se comio a la gallina.\n" );else if (Player.gallina == Player.maiz)

    printf( "La gallina se comio el maiz.\n" );

    exit(1);}

  • 7/31/2019 Cuaderno de Ejercicios de C

    32/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 32

    Responde a lo siguiente:Cual es el objetivo del juego?

    Cuantas y cuales son las funciones que tiene el juego?

    Porque el juego esta dividido en funciones?

    Cuales son las nuevas libreras incluidas?

    Cuales son los commandos que sustituyen acout y cin ?

    Que tipo de datos estamos declarando ycomo?

    Que significa cada constante declarada?

  • 7/31/2019 Cuaderno de Ejercicios de C

    33/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 33

    Ejercicio 22 - Juegos

    Para terminar de ver los ejemplos acerca de las condicionales y los ciclos, vamos a ver 3 juegos mas.Sin embargo, es importante hacer la siguiente aclaracion:

    Estos juegos fueron adaptados de otras versiones de compilador C++. Como habiamos visto en la primer leccion, hay varios compiladores de C++, y ademas del Microsot Visual C++, otro muy usadoes el Turbo C++ o Borland C++. Estos compiladores traen unas librerias no estandar de C, que

    permiten extender un poco el lenguaje y facilitar algunas tareas en modo DOS para accesar algunasfunciones graficas.

    De entre ellas, hay una libreria llamada CONIO.H y STDLIB.H, que si bien existen en la version delcompilador de Microsoft que estamos usando, no contiene las mismas instrucciones.

    Por lo tanto, hay que seguir algunas reglas para que estos juegos funcionen y apliques estas nuevasinstrucciones que generalmente son utiles en los juegos. Sin embargo, algunas setenciones no serecomiendan en su uso porque precisamente no son librerias estandar que puedan ser emuladas

    facilmente.

    Asi que habra que seguir un par de instrucciones para que estos programas funcionen de maneracorrecta.

    INSTRUCCIONES ANTES DE EJECUTAR LOS PROGRAMAS.

    1. Ve a la seccion de Manuales y Video y deberas bajar CONSOLA.H y CONSOLA.LIB2. Estos dos archivos deberas incluirlos donde este tu proyecto de programa.3. Sera muy importante que primero crees un proyecto de programa, porque deberas anexar estosdos archivos. Uno bajo HEADER y el otro bajo RESOURCES.4. Ademas, deberas incluir el archivo CONSOLA.H al inicio de tu programa pero veras que en lugar

    de , lo haras con " ", ya que, estaras indicando que sera de manera local.5. Tambien se deberan sustituir algunas instrucciones (que veras como comentarios en algunoscasos) por otras compatibles con esta version del compilador (como RANDOM y RANDOMIZE).

    Cualquier duda, preguntale a tu profesor.

  • 7/31/2019 Cuaderno de Ejercicios de C

    34/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 34

    Ejercicio 22a Juego de Adivinanzas

    El siguiente es un pequeo juego de adivinanzas. La computadora "pensara" un numero entre 1 y 100y tu deberas adivinarlo en maximo 9 oportunidades.

    prog22a_adivinanzas.cpp

    #include #include #include #include

    void main(){int i, a, b;//randomize();//clrscr();system( "cls" );//a=rand()%100;srand(time(0));a = 1 + rand() % 100;coutb;if (b == a) {

    cout

  • 7/31/2019 Cuaderno de Ejercicios de C

    35/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 35

  • 7/31/2019 Cuaderno de Ejercicios de C

    36/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 36

    Ejercicio 22b - Tragamonedas

    Ahora, un pequeo juego muy popular en las vegas. El clasico tragamonedas, el cual cada vez que loejecutes generara aleatoriamente las columnas con los elementos. Si le "atinas" a que las 3 columnascontengan lo mismo... YA GANASTE!.

    prog22b_tragamonedas.cpp/* progb22b_tragamonedas.cppJUEGO: El clasico de las Vegas. */

    #include #include #include #include #include #include #include "consola.h"

    void Frutas( int col);

    int i, a, b, c, m;char fruta[10][10];int cuenta, columna = 0;int frutas[4];

    void main() {//randomize();//clrscr();srand(time(0)); // for seed based on current timesystem( "cls" );

    strcpy(fruta[0], "Melocoton" );strcpy(fruta[1], "Melon" );strcpy(fruta[2], "Sandia" );

    strcpy(fruta[3], "Naranja" );strcpy(fruta[4], "Pia" );strcpy(fruta[5], "Fresa" );strcpy(fruta[6], "Frambuesa" );strcpy(fruta[7], "Mango" );strcpy(fruta[8], "Pera" );strcpy(fruta[9], "Durazno" );// b = random(5);// c = random(5);b = 1 + rand() % 5;c = 1 + rand() % 5;

    for (cuenta =1; cuenta

  • 7/31/2019 Cuaderno de Ejercicios de C

    37/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 37

    cout

  • 7/31/2019 Cuaderno de Ejercicios de C

    38/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 38

    Ejercicio 22c Pseudovirus

    Quieres hacer una pequea demostracion de un virus? Aqui tienes la oportunidad mientras practicaslos ciclos.

    prog22c_pseudovirus.cpp/* Pseudovirus.cppPrograma que muestra un supuesto virus en la pantalla

    Por: LSC Sergio Hugo Sanchez.NOTA: Recordar que necesitamos el archivo CONSOLA.H y CONSOLA.LIBen el mismo directorio del programa para compilar*/#include #include #include

    #include #include "consola.h"

    void derecha( int fila);void izquierda( int fila);void final();

    int col,i, j, r;

    void main(){clrscr();r=50;

    for (j=1; j

  • 7/31/2019 Cuaderno de Ejercicios de C

    39/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 39

    void derecha( int fila) {for (col=1; col

  • 7/31/2019 Cuaderno de Ejercicios de C

    40/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 40

    Qu tipos de datos estamos declarando?

    Qu funciones propias estamos usando?

    Ejercicio 23 - Juego del Ahorcado

    Para seguir probando lo que son las funciones y como un programa se divide en estaspara hacer mas facil de administrar, ahora veamos este juego un poco mas largo: elAhorcado.

    Si bien, es un juego sencillo ya que solo acepta 3 palabras, contiene un menu inicial y laforma basica para jugarlo. En la seccion de practicas de este curso apareceran otrosmodelos de juego del ahorcado (incluso con graficas, mas temas y el uso de archivos paralas palabras) que estan hechos en Borland C++ (en lugar de MS Visual C++) y con loscuales podras practicar.

    Mientras, divirtete y si quieres modifica el programa para que acepte mas palabras una vez

    que te funcione. Aqui aplicaremos los temas anteriores:El programa esta un poco largo, pero te gustara:

  • 7/31/2019 Cuaderno de Ejercicios de C

    41/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 41

    prog23_ahorcado.cpp/*Pro23_ahorcado.cppEste es el juego del Ahorcado.Solamente contiene 3 palabras iniciales pero puede seragrandado hasta donde quieras.

    Por: LSC Sergio Hugo Sanchez

    NOTA: No oldivar poner el header y libreria CONSOLA.H, CONSOLA.LIB en lamisma carpeta*/

    #include #include #include #include #include "consola.h"

    #define num_palabras 3

    void construye_todo();void captura_las_palabras();void muestra_las_palabras();void exhibe_el_menu();void elegir_palabra();void construye_cabeza();void construye_tronco();void construye_brazo_izquierdo();void construye_brazo_derecho();void construye_pie_izquierdo();void construye_pie_derecho();void construye_hora();

    int opcion_elegida;int posicion_de_palabra_a_adivinar;int cant_de_palabras = num_palabras;

    int longitud_de_las_palabras[num_palabras];char todas_las_palabras[20] [num_palabras];char palabra_actual[20];int logitud_palabra_actual=0;

    main(){

    opcion_elegida = 0;clrscr();exhibe_el_menu();getche();return 0;

    }

    //***********************************************************void exhibe_el_menu( void ){

    //clrscr();do{

    gotoxy(25,2);printf( "PRESIONA EL NUMERO DE LA OPCION QUE DESEE" );gotoxy(25,3);

    printf( "-----------------------------------------" );

  • 7/31/2019 Cuaderno de Ejercicios de C

    42/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 42

    gotoxy(25,3.5);printf( "-" );gotoxy(59,3.5);printf( "!" );gotoxy(25,4);printf( "- MENU DEL JUEGO EL AHORCADO !" );gotoxy(25,5);printf( "- 1 - INGRESAR LAS PALABRAS !" );gotoxy(25,6);printf( "- 2 - JUGAR EL AHORCADO !" );gotoxy(25,7);printf( "- 3 - MOSTRAS LAS PALABRAS !" );gotoxy(25,8);printf( "- 4 - ABANDONAR EL PROGRAMA !" );gotoxy(25,9);printf( "----------------------------------------" );gotoxy(25.5,15);printf( "ELIJA LA OPCION QUE DESEE Y PULSE ACEPTAR:" );gotoxy(67,15);scanf( "%d" ,&opcion_elegida);

    }while (opcion_elegida < 1 || opcion_elegida > 4 );switch (opcion_elegida){

    case 1: captura_las_palabras();case 2: elegir_palabra();case 3: muestra_las_palabras();case 4: break ;

    }}

    //*****************************************************************void captura_las_palabras( void ){

    int ia,ja;clrscr();

    for (ia=0; ia>palabra_actual;longitud_palabra_actual = strlen(palabra_actual);longitud_de_las_palabras[a] = longitud_palabra_actual;for (ja=0; ja

  • 7/31/2019 Cuaderno de Ejercicios de C

    43/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 43

    {gotoxy(19+j, i+10);printf( "%c" , todas_las_palabras[j][i]);

    }}printf( "\n Pulse una tecla para continuar..." ;getche();exhibe_el_menu();

    }

    //***************************************************************void elegir_palabra( void ){

    int longitud_de_palabra_a_adivinar, l;int i,j,sw=0, errores=0,contaP=0;char letra[l], completa[20];clrscr();do{

    gotoxy(10,4);printf( "Escriba un numero entre 1 y %d y pulse enter:" ,

    cant_de_palabras);gotoxy(55,4);scanf( "%d" , &posicion_de_palabra_a_adivinar);clrscr();

    }while (posicion_de_palabra_a_adivinar < 1 ||

    posicion_de_palabra_a_adivinar > cant_de_palabras);longitud_de_palabra_a_adivinar =

    longitud_de_las_palabras[posicion_de_palabra_a_adivinar-1];for (i=0: i>letra;sw=0;for (j=0; j

  • 7/31/2019 Cuaderno de Ejercicios de C

    44/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 44

    }

    if (contaP=longitud_de_palabra_a_adivinar){

    gotoxy(37,10);printf( "\nGANASTES EL JUEGO...." );errores=4;i=longitud_de_palabra_a_adivinar;getch();exhibe_el_menu();

    }else{

    if (sw==0)errores++;if (errores==1)

    construye_cabeza();else

    if (errores==2)construye_tronco();

    elseif (errores==3)

    construye_brazo_derecho();else

    if (errores==4)

    construye_brazo_izquierdo();else

    if (errores==5)

    construye_pie_derecho();else

    if (errores==6)

    construye_pie_izquierdo();else

    if (errores==7){clrscr();

    construye_todo();errores=7;

    }}

    } while (i

  • 7/31/2019 Cuaderno de Ejercicios de C

    45/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 45

    //***********************************************************************void construye_tronco( void ){

    gotoxy(41,9);printf( "|" );gotoxy(41,10);printf( "|" );gotoxy(41,11);printf( "|" );gotoxy(41,12);printf( "|" );

    }

    //********************************************************************void construye_brazo_derecho( void ){

    gotoxy(40,9);printf( "/" );gotoxy(38,10);printf( "/" );

    }

    //********************************************************************void construye_brazo_izquierdo( void ){

    gotoxy(42,9);printf( "\");gotoxy(44,10);printf( "\");

    }

    //*******************************************************************void construye_pie_izquierdo( void ){

    gotoxy(42,13);printf( "" );

    gotoxy(44,14);printf( "" );}

    //*******************************************************************void construye_pie_derecho( void ){

    gotoxy(40,13);printf( "/" );gotoxy(38,14);printf( "/" );

    }

    //******************************************************************void construye_horca( void ){

    int i;gotoxy(41,5);printf( ":" );gotoxy(41,4);printf( ":" );gotoxy(41,3);printf( ":" );gotoxy(42,3);printf( ":::::::::::::::" );

  • 7/31/2019 Cuaderno de Ejercicios de C

    46/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 46

    for (i=3; i

  • 7/31/2019 Cuaderno de Ejercicios de C

    47/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 47

    Cules son los nuevos comandos de C, que seincluyen en este programa?

    Qu tipos de datos se declaran en este programa?

    Dnde se almacenan las palabras?

    Cmo se pueden poner mas palabras?

    Qu funcin o proceso es lo que mas realizaeste programa y se repite?

  • 7/31/2019 Cuaderno de Ejercicios de C

    48/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 48

    Ejercicio 24 - Juego Las Torres de Hanoi

    Generalmente para probar el tema de la recursividad se aplica el ejercicio del juego de las

    torres de Hanoi. En este juego, el usuario tiene que mover unos aros que estan desde elposte 1 hasta el poste 3, pasando a veces por el poste 2, de tal forma que quedenacomodados de menor a mayor hacia abajo como estaban en el poste 1.

    Prueba hacer el codigo siguiente en MS Visual C++

    prog24_hanoi.cpp/*prog24_hanoi.cppPrograma de la Torre de HanoiPor: Enrique R. Mosqueda */#include #include #include

    /* include #define BG_BLACK (0) #define FG_RED (12) #defineFG_BLUE (9) #define FG_WHITE (15)#define FG_GREEN (2) */

    //void clrscr()/* {

    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE), COORD cor = {0,0},DWORD count;

    CONSOLE_SCREEN_BUFFER_INFO csbi;GetConsoleScreenBufferInfo(hStdOut, &csbi);FillConsoleOutputCharacter(hStdOut, ' ', csbi.dvSize.X * csbi.dvSize.Y,

    coord, &count);SetConsoleCursorPosition(hStdOut, coord);

    }*/

    void Towers( int , int , char , char , char );int n=0, a=0, b=0, c=0;void main(){

    //clsscr();printf( "\n\n\t\tTORRE DE HANOI\n" );printf( "CREADO POR ENRIQUE RADHAMES MOSQUEA MARTINEZ\n" );printf( "las torres estan representadas como A,B,C\n" );printf( "Digite el 0 para salir del sistema.\n" );printf( "Digite la cantidad de Discos ===> " ,n); scanf( "%d" ,&n);Towers( n,a, 'A' , 'B' , 'C' );c=((a+b)-1);

    printf( "\n\n Con %d DISCOS %d" , n, c);printf( "\n\tEl numero de Dias es => %d" , c);printf( "\n\n\n\tnota: estas variables solo alcanzan para 30

    discos" );printf( "\n\ty usando la funcion POW(2,n)-1" );c=pow(2,n)-1;printf( "\n\tEl resultado es el mismo => %d" ,c);printf( "\n\tpara jugar con los colores solo activen las

    funciones" );printf( "\n\tque estan como comentarios." );printf( "\nEspero que les guste " );

  • 7/31/2019 Cuaderno de Ejercicios de C

    49/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 49

    getch();}

    /* juego del sistema */void Towers( int n, int a, char frompeg, char topeg, char auxpeg ){

    /* HANDLE hStdInput = INVALID_HANDLE_VALUE,hStdOutPut = INVALID_HANDLE_VALUE;hStdInput = GetStdHandle(STD_INPUT_HANDLE);hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hStdOutput, BG_BLACK | FG_RED); */if (n==1){

    b=b+2;c*=a+b;printf( "\n%s%d%s%c%s%c" , "\t\t\t DISCO " , n, " DESDE " ,

    frompeg, " HACIA " , topeg, a);return ;

    } a=a+1;Towers( n-1,a, frompeg, auxpeg, topeg);//SetConsoleTextAttribute(hStdOutput, BG_BLACK | FG_BLUE );printf( "\n%s%d%s%c%s%c" , "\t\t\t DISCO " , n, " DESDE " , frompeg, "

    HACIA " , topeg, a);Towers( n-1,a, frompeg, auxpeg, topeg);//SetConsoleTextAttribute(hStdOutput, BG_BLACK | FG_BLUE );

    }

    Y despues, ve a la seccion de BIBLIOTECA\DESCARGAS y baja el archivo de HANOIG(BORLAND), para que ejecutes el ejecutable. Este ultimo programa esta escrito en BorlandC++ y utiliza bibliotecas graficas de MSDOS.

  • 7/31/2019 Cuaderno de Ejercicios de C

    50/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 50

    NOTA:En ambos es posible que solo veas a la computadora jugar. Podrias modificar elprograma para que tu seas el que haga los movimientos?Es un buen reto. =)

    Responde a lo que se indica:Qu es la recursin?

    Por qu estn variasinstrucciones concomentarios?

  • 7/31/2019 Cuaderno de Ejercicios de C

    51/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 51

    PARTE IIIARREGLOS Y ESTRUCTURAS

  • 7/31/2019 Cuaderno de Ejercicios de C

    52/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 52

    Ejercicio 25 Arreglos

    Realiza la siguiente practica, tecleando los siguientes programas para que veas elfuncionamiento de los arreglos. Primero un programa que cuenta los numeros sin usararrelgos:

    prog24_vectores.cpp/* prog24 - Ejemplo de vectores */#include #define MAX 100

    //Declara funcion de vectores//void vectores()

    // Comenzamos con la funcion normal/* A continuacion se muestra un programa que cuenta el numero deapariciones de los numeros 0, 1, 2 y3 en una secuencia de enteros acabada en -1. */

    int main(){

    int num, c0=0, c1=0, c2=0, c3=0;printf( "El siguiente programa cuenta en numero de apariciones de

    los numeros 0 al 3\n" );printf( "Por lo que se te preguntara por un numero, teclealo y pulsa

    ENTER \n" );printf( "Para finalizar el ciclo, teclea -1 y te apaceran los

    resutados \n\n" );scanf( "%d" , &num);while (num != -1){

    if (num == 0) c0++;if (num == 1) c1++;if (num == 2) c2++;if (num == 3) c3++;scanf( "%d" , &num );

    }printf( "Resultado Contadores:%d, %d, %d, %d \n\n" , c0, c1, c2, c3

    );

    return 0;}

    Y ahora basado en el mismo concepto de contar numeros, usando arrays:

  • 7/31/2019 Cuaderno de Ejercicios de C

    53/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 53

    prog30_vectores.cpp/* Pro30 - Uso de vectores *//* Que ocurriria si tuviesemos que contar las apariciones de los cien

    primeros numeros enteros? Deberamos declarar cien contadores yescribir cien construcciones if para cada caso? La respuesta, como era deesperar, se halla en el uso de vectores.Veamoslo en el siguiente codigo que llama a la funcion:

    */#include #define MAX 100

    int main(){

    int i, num2, cont[MAX];

    printf( "El siguiente programa cuenta en numero de apariciones delos numeros 0 al 3\n" );

    printf( "Por lo que se te preguntara por un numero, teclealo y pulsaENTER \n" );

    printf( "Para finalizar el ciclo, teclea -1 y te apaceran losresutados \n\n" );

    for (i= 0; i< MAX; i++)cont[i] = 0;scanf( "Numero %d" , &num2);while (num2 != -1) {

    if ((num2 >= 0) && (num2

  • 7/31/2019 Cuaderno de Ejercicios de C

    54/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 54

    Por qu cambiaron las instrucciones paralos ciclos?

    Ejercicio 26

    Ahora un ejercicio para aprender sobre arrays multidimensionales:

    prog31.cpp/* Prog31 - Arrays multidimensionales

    El siguiente ejemplo muestra el empleo de una tabla multidimensional.Concretamente, el programa utiliza una tabla de 3 dimensiones paraalmacenar 1000 numerosaleatorios. Para generar numeros aleatorios se usa la funcion rand de lalibreria estandarstdlib.h. Tambien se ha usado la funcion getchar (stdio.h), queinterrumpe el programa yespera a que el usuario presione una tecla.*/

    #include #include #define DIM 10

    void main(){

    int tabla_random [DIM][DIM][DIM], a, b, c;for (a= 0; a< DIM; a++)for (b= 0; b< DIM; b++)for (c= 0; c< DIM; c++)tabla_random[a][b][c] = rand();

    /* Muestra series de DIM en DIM elementos. */for (a= 0; a< DIM; a++)for (b= 0; b < DIM; b++){

    for (c= 0; c < DIM; c++){

    printf( "\n\n tabla[%d][%d][%d] = " , a, b, c );printf( "%d" , tabla_random[a][b][c] );

    }printf( "\n\nPulse ENTER para seguir" );getchar();

    }}

  • 7/31/2019 Cuaderno de Ejercicios de C

    55/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 55

    Responde a lo siguiente:

    Que son los arrays multidimensionales?

    Como generamos los numerousaleatorios?

    Como declaramos las variables?

  • 7/31/2019 Cuaderno de Ejercicios de C

    56/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 56

    Ejercicio 27 Cadenas

    Para repasar los temas, realiza estos dos programas:

    prog32.cpp/* Prog32 - Ejemplo de cadenas

    El siguiente programa cuenta el numero de veces que se repite una palabraen una frase.El programa emplea la funcion de comparacion de cadenas strcmp.Dicha funcion devuelve 0 en caso de que las cadenas comparadas seaniguales */

    #include #include #define MAXLIN 100

    void main(){

    char pal[MAXLIN]; /* La que buscamos. */char palfrase[MAXLIN]; /* Una palabra de la frase. */char c;int total = 0;printf( "\nPALABRA:" );scanf( "%s" , pal );printf( "\nFRASE:" );c= ' ' ;while (c != '\n' ){

    scanf( "%s%c" , palfrase, &c );if (strcmp(pal, palfrase) == 0)total++;

    }printf( "\nLa palabra %s aparece %d veces." , pal, total );

    }

    Y tambien este otro:

    prog33.cpp/* Prog33 - Otro ejemplo de cadenas

    A continuacion se muestra otro ejemplo que hace uso de las cadenas de

    caracteres.El programa lee dos cadenas de caracteres, las concatena, convierte lasletras minusculasen mayusculas y viceversa, y finalmente escribe la cadena resultante. */

    #include #include

    void main(){

    char cad1[80], cad2[80], cad3[160];

  • 7/31/2019 Cuaderno de Ejercicios de C

    57/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 57

    int i, delta;printf( "Introduzca la primera cadena:\n" );gets(cad1);printf( "Introduzca la segunda cadena:\n" );gets( cad2 );/* cad3 = cad1 + cad2 */strcpy( cad3, cad1 );strcat( cad3, cad2 );i = 0;delta = 'a' - 'A' ;while (cad3[i] != '\0' ){

    if ((cad3[i] >= 'a' ) && (cad3[i] = 'A' ) && (cad3[i]

  • 7/31/2019 Cuaderno de Ejercicios de C

    58/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 58

    Cmo se declaran las variables en ambosprogramas y por que de esa manera?

    Ejercicio 28 - Arreglos y cadenas

    Para repasar la leccion anterior sobre los arrays, realiza el siguiente ejercicio para que

    veas como se determinan y que resultados muestran: prog23_arrays.cpp

    /*ej4.cInicializacion y manejo de "arrays", cadenas y estructuras.*/# include

    void main(){

    int i, j;//Aqui inicializamos los arrays, tanto de numeros como de cadenasstatic int enteros [5] = { 3, 7, 1, 5, 2 };

    static char cadena1 [16] = "cadena" ;static char cadena2 [16] = { 'c' , 'a' , 'd' , 'e' , 'n' , 'a' , '\0' };

    //Ahora inicializamos las estructuras de datosstatic int a[2][5] = {

    { 1, 22, 333, 4444, 55555 },{ 5, 4, 3, 2, 1 }

    };static int b[2][5] = { 1,22,333,4444,55555,5,4,3,2,1 };static char *c = "cadena" ;static struct {

    int i;float x;

    } sta = { 1, 3.1415e4}, stb = { 2, 1.5e4 };static struct {

    char c;int i;float s;

    } st [2][3] = {{{ 'a' , 1, 3e3 }, { 'b' , 2, 4e2 }, { 'c' , 3, 5e3 }},{ { 'd' , 4, 6e2 },}

    };

    //Aqui pondremos los resultados de dichos arrays y estructuras.// Comenzamos con las cadenas

  • 7/31/2019 Cuaderno de Ejercicios de C

    59/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 59

    printf ( "enteros:\n" );for ( i=0; i

  • 7/31/2019 Cuaderno de Ejercicios de C

    60/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 60

    Que funcion tienen la instruccion static?

    Cual es la descripcion del formato que usala funcion printf?

    Ejercicio 29 - Juego del Gato (Tic-Tac-Toe)

    A continuacion se presenta el juego del gato o Tres en raya (Tic-Tac-Toe en ingles), paraaprender un poco mas sobre las matrices y ver su aplicacion.

    Teclea el codigo siguiente y ejecutalo, ademas tendras que traducirlo porque los mensajesestan en ingles. Que te diviertas!!!

    prog35_juegogato.cpp#include #include #include

    char matrix[3][3]; //={0}void playbox( void );

    int main(){

    int m, n;char ch= 'y' ;

    while (ch== 'Y' || ch == 'y' ){

    for (m=0; m

  • 7/31/2019 Cuaderno de Ejercicios de C

    61/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 61

    {if (sum==0)

    playbox();cout3 || i3 || jj;

    }matrix[i-1][j-1]= 'X' ;sum++;playbox();

    //Check if winsif (matrix[0][0]== 'X' &&

    matrix[0][0]==matrix[1][1] && matrix[1][1]==matrix[2][2]) {if (matrix[2][0]== 'X' &&

    matrix[2][0]==matrix[1][1] && matrix[1][1]==matrix[0][2]) {if (matrix[0][0]== 'X' &&

    matrix[0][0]==matrix[1][0] && matrix[1][0]==matrix[2][0]) {if (matrix[0][1]== 'X' &&

    matrix[0][1]==matrix[1][1] && matrix[1][1]==matrix[2][1]) {if (matrix[0][2]== 'X' &&

    matrix[0][2]==matrix[1][2] && matrix[1][2]==matrix[2][2]) {if (matrix[0][0]== 'X' &&

    matrix[0][0]==matrix[0][1] && matrix[0][1]==matrix[0][2]) {

    if (matrix[1][0]== 'X' &&matrix[1][0]==matrix[1][1] && matrix[1][1]==matrix[1][2]) {if (matrix[2][0]== 'X' &&

    matrix[2][0]==matrix[2][1] && matrix[2][1]==matrix[2][2]) {}if (sum==9){ //sum=9 because there are only 9

    boxes in the gamecout

  • 7/31/2019 Cuaderno de Ejercicios de C

    62/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 62

    cout>i;cout>j;

    }matrix[i-1][j-1]= 'O' ;sum++;//the play boxplaybox();

    //Check if winsif (matrix[0][0]== 'O' &&

    matrix[0][0]==matrix[1][1] && matrix[1][1]==matrix[2][2]) {if (matrix[2][0]== 'O' &&

    matrix[2][0]==matrix[1][1] && matrix[1][1]==matrix[0][2]) {if (matrix[0][0]== 'O' &&

    matrix[0][0]==matrix[1][0] && matrix[1][0]==matrix[2][0]) {if (matrix[0][1]== 'O' &&

    matrix[0][1]==matrix[1][1] && matrix[1][1]==matrix[2][1]) {if (matrix[0][2]== 'O' &&

    matrix[0][2]==matrix[1][2] && matrix[1][2]==matrix[2][2]) {if (matrix[0][0]== 'O' &&

    matrix[0][0]==matrix[0][1] && matrix[0][1]==matrix[0][2]) {if (matrix[1][0]== 'O' &&

    matrix[1][0]==matrix[1][1] && matrix[1][1]==matrix[1][2]) {if (matrix[2][0]== 'O' &&

    matrix[2][0]==matrix[2][1] && matrix[2][1]==matrix[2][2]) {}cout>ch;

    }system( "PAUSE" );return 0;

    }

    }

    /****************************/

    void playbox( void ){

    //the play boxcout

  • 7/31/2019 Cuaderno de Ejercicios de C

    63/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 63

    Responde a lo siguiente:

    Por que este juego implementa arreglos?

    Que tipo de arreglos usa este programa?

    Este programa contiene errores de maneraintencional. Cules son?

    Cul es la solucion a los errorespresentados?

  • 7/31/2019 Cuaderno de Ejercicios de C

    64/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 64

    Ejercicio 30 Estructuras

    Realiza el siguiente ejemplo de manejo de estructuras:

    prog34_estruc.cpp/* Prog34 - Ejemplo de estrucutras */#include

    struct datos{

    char nombre[20];char apellido[20];long int dni;

    };

    struct tablapersonas{

    int numpersonas;struct datos persona[100];

    };

    void main(){

    int i;struct tablapersonas tabla;printf( "Numero de personas: " );scanf( "%d" , &tabla.numpersonas );for (i= 0; i< tabla.numpersonas; i++){

    printf( "\nNombre: " );gets( tabla.persona[i].nombre );printf( "\nApellido: " );

    gets( tabla.persona[i].apellido );//printf( "\nRFC: " );//scanf( "%ld", &tabla.persona[i].dni );

    }

    // Ahora hay que realizar el codigo para imprimir los resultados dela tabla}

    Y una vez terminado, completalo, creando el codigo necesario para que imprima los

    resultados capturados que se almacenaron en la estructura de la tabla.

    Responde a lo que se indica:Cul fue el cdigo que escribiste paracompletar el programa?

  • 7/31/2019 Cuaderno de Ejercicios de C

    65/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 65

    Qu es una estructura?

  • 7/31/2019 Cuaderno de Ejercicios de C

    66/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 66

    Practica/Ejercicio 1 Zodiaco

    Ahora teclea el siguiente programa que te dice el signo zodiacal de una persona. Este ya es unejercicio resuelto en donde veras algunas instrucciones nuevas para construir una funcion queborre la pantalla.

    El programa ademas, esta basado en instrucciones condicionales IFELSE.

    prog36_zodiaco.cpp/*Este programa muestra el signo zodiacal de una persona. Para ello elusuario debe introducir nicamente el da y el mes de nacimiento y elprograma determinar inmediatamente el signo zodiacal de la persona.*///muestra el signo zodiacal#include #include #include void clrscr() /*Creando funcion para limpiar pantalla.*/{

    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);COORD coord = {0, 0};DWORD count;

    CONSOLE_SCREEN_BUFFER_INFO csbi;GetConsoleScreenBufferInfo(hStdOut, &csbi);

    FillConsoleOutputCharacter(hStdOut, ' ' , csbi.dwSize.X * csbi.dwSize.Y,coord, &count);

    SetConsoleCursorPosition(hStdOut, coord);}void main(){

    int salir,saliryesno;salir=0;while (salir==0){

    clrscr(); /*Llamando la funcion para limpiar pantalla.*/short unsigned int m,d = 0;printf( "Introduzca su mes de nacimiento: " );scanf( "%d" ,&m, "\n" );while ((m > 12) || (m < 1)){

    printf( "Introduzca su mes de nacimiento(DE 1 A 12): " );scanf( "%d" ,&m, "\n" );

    }if (m==1){

    printf( "Introduzca su dia de nacimiento: " );scanf( "%d" ,&d, "\n" );while ( (d>31) || (d != (d)) ){ //!= esta sentencia es

    diferente de{printf( "Introduzca dia(ENTRE 1 Y 31): " );scanf( "%d" ,&d, "\n" );

    }(d

  • 7/31/2019 Cuaderno de Ejercicios de C

    67/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 67

    }else {

    if (m==2){printf( "Introduzca su dia de nacimiento: " );scanf( "%d" ,&d, "\n" );while ( (d>29) || (d != (d)) ){

    printf( "Introduzca dia(ENTRE 1 Y 29): " );scanf( "%d" ,&d, "\n" );

    }(d31) || (d != (d)) ){

    printf( "Introduzca dia(ENTRE 1 Y 31):" );

    scanf( "%d" ,&d, "\n" );}

    (d30) || (d!=(d)) ){

    printf( "Introduzca dia(ENTRE 1 Y31): " );

    scanf( "%d" ,&d, "\n" );}(d31) || (d != (d)) ){

    printf( "Introduzcadia(ENTRE 1 Y 31): " );

    scanf( "%d" ,&d, "\n" );}(d30) || (d!=(d))

    ){printf( "Introduzca

    dia(ENTRE 1 Y 31): " );scanf( "%d" ,&d, "\n" );

    }

  • 7/31/2019 Cuaderno de Ejercicios de C

    68/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 68

    (d31) || (d

    != (d)) ){

    printf( "Introduzca dia(ENTRE 1 Y 31): " );

    scanf( "%d" ,&d, "\n" );}(d31)

    || (d != (d)) ){

    printf( "Introduzca dia(ENTRE 1 Y 31): " );

    scanf( "%d" ,&d, "\n" );}(d30) || (d!=(d)) ){

    printf( "Introduzca dia(ENTRE 1 Y 31): " );

    scanf( "%d" ,&d, "\n" );}(d31) || (d != (d)) ){

    printf( "Introduzca dia(ENTRE 1 Y 31): " );

  • 7/31/2019 Cuaderno de Ejercicios de C

    69/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 69

    scanf( "%d" ,&d, "\n" );}

    (d30) || (d!=(d)) ){

    printf( "Introduzca dia(ENTRE 1 Y 31): " );

    scanf( "%d" ,&d, "\n" );

    }

    (d31) || (d !=(d)) ){

    printf( "Introduzca dia(ENTRE 1 Y 31): " );

    scanf( "%d" ,&d, "\n" );

    }

    (d

  • 7/31/2019 Cuaderno de Ejercicios de C

    70/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 70

    if (saliryesno==1){salir=1;

    }}

    }

    ACTIVIDADRealiza el mismo programa pero usando sentencias SWITCH y una modificacion para hacer elalgoritmo mas simple.

    Practica/Ejercicio 2 Califaciones Estilo USA

    Este ejercicio permite convertir el sistema de calificacion escolar de Mexico al sistema de Estados

    Unidos que se basa en letras de la A hasta la F. Primero se debe mostrar una tabla de equivalenciasy luego preguntara la calificacion. El resultado sera el equivalente a la notacion americana.

    Generalmente, para este tipo de programas se utilizan muchas condicionales. Este tipo deprogramas se utilizan en el ambito escolar para saber las calificaciones de los alumnos.

    prog37_califeu.cpp/*El programa muestra primero una tabla de notas con sus equivalentes enel Standard Grading System o el sistema utilizado en los Estados Unidosque va desde la A hasta la F. El programa preguntar al usuario su notay transformar ese resultado al equivalente en el Standard GradingSystem. Tambin el programa dar una pequea pero valiosa recomendacinal usuario respecto a su nivel de estudio y calidad como estudiante.*/#include "stdio.h"#include void clrscr() /*Creando funcion para limpiar pantalla.*/{

    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);COORD coord = {0, 0};DWORD count;

    CONSOLE_SCREEN_BUFFER_INFO csbi;GetConsoleScreenBufferInfo(hStdOut, &csbi);

    FillConsoleOutputCharacter(hStdOut, ' ' , csbi.dwSize.X * csbi.dwSize.Y,coord, &count);

    SetConsoleCursorPosition(hStdOut, coord);}void main(){

    int salir,saliryesno;salir=0;while (salir==0){

    clrscr(); /*Llamando la funcion para limpiar pantalla.*/int a;float nota;printf( "\n\t\t\tNOTAS\t\tEQUIVALENTE\n" );

  • 7/31/2019 Cuaderno de Ejercicios de C

    71/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 71

    printf( "\t\t 9.0 - 10.0\t\t A\n" );printf( "\t\t 8.5 - 8.9\t\t B+\n" );printf( "\t\t 8.0 - 8.4\t\t B\n" );printf( "\t\t 7.5 - 7.9\t\t C+\n" );printf( "\t\t 7.0 - 7.4\t\t C\n" );printf( "\t\t 6.0 - 6.9\t\t D\n" );printf( "\t\t 0.0 - 6.0\t\t F\n" );a=0;while (a==0){

    printf( "\nIntroduzca su nota en Programacion II: " );scanf( "%f" ,&nota);if (nota10){

    /*a sigue valiendo cero y no se sale del ciclo*/}else {

    a=1;}

    }if (nota>=9){

    printf( "\nNOTA EQUIVALENTE EN STANDARD GRADING SYSTEM:A\n" );

    printf( "RECOMENDACIONES: Excelente, si continua asiusted es un genio.\n\n" );

    }else {

    if (nota>=8.5){printf( "\nNOTA EQUIVALENTE EN STANDARD GRADING

    SYSTEM: B+\n" );printf( "RECOMENDACIONES: Muy bien, su nivel es

    impresionante.\n\n" );}else {

    if (nota>=8){printf( "\nNOTA EQUIVALENTE EN STANDARD

    GRADING SYSTEM: B\n" );printf( "RECOMENDACIONES: Bien, su nivel es

    muy bueno.\n\n" ); }else {

    if (nota>=7.5){printf( "\nNOTA EQUIVALENTE EN STANDARD

    GRADING SYSTEM: C+\n" );printf( "RECOMENDACIONES: Usted esta

    dentro del promedio, trate de no bajar.\n\n" );}else {

    if (nota>=7){printf( "\nNOTA EQUIVALENTE EN

    STANDARD GRADING SYSTEM: C\n" );printf( "RECOMENDACIONES: Usted

    la va pasando, pero trate elevar su promedio.\n\n" );}else {

    if (nota>=6){printf( "\nNOTA EQUIVALENTE

    EN STANDARD GRADING SYSTEM: D\n" );printf( "RECOMENDACIONES:

    Usted esta en la cuerda floja, un pequeno descuido \nlo pone enproblemas.\n\n" );

    }else { /*nota mayor que cero pero

  • 7/31/2019 Cuaderno de Ejercicios de C

    72/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 72

    menor que 6.*/printf( "\nNOTA EQUIVALENTE

    EN STANDARD GRADING SYSTEM: F\n" );printf( "RECOMENDACIONES:

    Su nota sinceramente es mala, busque nuevas \ntecnicas de estudio.\n\n" );}

    }}

    }}

    }printf( "SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE

    OTRO NUMERO: " );scanf( "%d" ,&saliryesno);if (saliryesno==1){

    salir=1;}

    }}

    ACTIVIDADRealiza el mismo programa, cambiando las sentencias condicionales IF..ELSE por SWITCH para hacerel programa mas corto.Tambien podrias usar un archivo externo para leer la informacion de equivalencias o la informacionde calificaciones de un alumno.

    Practica/Ejercicio 3 Sueldos a trabajador

    En este ejercicio deberas realizar un programa que calcule el pago que recibe un trabajador en base

    a las horas del dia en que trabaja. El ejercicio ya esta escrito por lo que deberas leer y entender loscomentarios al principio, asi como la logica de construccion.

    Este tipo de programas se usa mucho en sistemas administrativos de nominas o recursos humanos

    prog38_sueldos.cpp/*Este programa muestra los pagos que recibir un trabajador por cada horalaboral en base a la hora del da en que trabaja. El usuario deber escribirel nmero de horas trabajadas en cada uno de los horarios y el programadeterminar el total de dinero a recibir por el trabajador y tambin dir sigan ms dinero por horas extras que por horas de oficina trabajadas oviceversa, o si el trabajador gan exctamente lo mismo por horas extras quepor horas de oficina.*/

    #include "STdio.h"#include void clrscr() /*Creando funcion para limpiar pantalla.*/{

    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);COORD coord = {0, 0};DWORD count;

    CONSOLE_SCREEN_BUFFER_INFO csbi;GetConsoleScreenBufferInfo(hStdOut, &csbi);

  • 7/31/2019 Cuaderno de Ejercicios de C

    73/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 73

    FillConsoleOutputCharacter(hStdOut, ' ' , csbi.dwSize.X * csbi.dwSize.Y,coord, &count);

    SetConsoleCursorPosition(hStdOut, coord);}void main(){

    int salir,saliryesno;salir=0;while (salir==0){

    clrscr(); /*Llamando la funcion para limpiar pantalla.*/printf( "\n\t\tHORARIO\t\t\t PAGO \n\n" );printf( "\t 8:00 AM - 4:00 PM\t\tPAGO BASE\n" );printf( "\t 4:00 PM - 8:00 PM\t 25 POR CIENTO EXTRA\n" );printf( "\t 8:00 PM - 12:00 AM\t 50 POR CIENTO EXTRA\n" );printf( "\t 12:00 AM - 8:00 AM\t\tPAGO DOBLE\n\n" );int horas_trab,horas_trab25,horas_trab50,horas_doble;float

    pago_base,pago_extra25,pago_extra50,pago_doble,suma_extra,suma_base,pago,sueldo _total,pago_extra;

    printf( "SUELDO BASE POR HORA TRABAJADA: " );scanf( "%f" ,&pago);printf( "\nNumero de horas trabajadas de 8:00 am a 4:00 pm: " );scanf( "%d" ,&horas_trab);pago_base=(horas_trab*pago);printf( "Numero de horas trabajadas de 4:00 pm a 8:00 pm: " );scanf( "%d" ,&horas_trab25);pago_extra25=(horas_trab25*(1.25)*pago);printf( "Numero de horas trabajadas de 8:00 pm a 12:00 am: " );scanf( "%d" ,&horas_trab50);pago_extra50=(horas_trab50*(1.50)*pago);printf( "Numero de horas trabajadas de 12:00 am a 8:00am: " );scanf( "%d" ,&horas_doble);pago_doble=(horas_doble*(2.0)*pago);suma_base=pago*horas_trab;suma_extra=(pago_extra25+pago_extra50+pago_doble);

    sueldo_total= suma_extra+pago_base;printf( "\nEL PAGO TOTAL QUE RECIBIRA EL TRABAJADOR ES:$%.2f\n\n" ,sueldo_total);

    printf( "EL SALARIO DEL TRABAJADOR POR HORAS DE OFICINA ES:$%.2f\n" ,suma_base);

    printf( "EL SALARIO DEL TRABAJADOR POR HORAS EXTRAS ES:$%.2f\n" ,suma_extra);

    if (suma_extra>suma_base){printf( "\nEL TRABAJADOR GANO MAS DINERO POR HORAS EXTRAS QUE

    POR HORAS DE OFICINA\n\n" );}else {

    if (suma_extra==suma_base){printf( "EL TRABAJADOR GANO EL MISMO SALARIO POR HORAS

    EXTRAS QUE POR HORAS DE OFICINA\n\n" );}else { /*pago_base es mayor que suma_extra*/

    printf( "EL TRABAJADOR GANO MAS DINERO POR HORAS DEOFICINA QUE POR HORAS EXTRA\n\n" );

    }}printf( "SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO

    NUMERO: " );scanf( "%d" ,&saliryesno);if (saliryesno==1){

  • 7/31/2019 Cuaderno de Ejercicios de C

    74/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 74

    salir=1;}

    }}

    ACTIVIDAD:Realiza el diagrama de flujo de este programa

    Practica/Ejercicio 4 Promocion de Ventas

    El siguiente programa hara una promocion de ventas a un cliente en una tienda. De tal forma, quede manera aleatoria le tocara una bola de un color y dicho color tendra asociado un descuento paralos productos que compre.

    Es un interesante ejemplo para ver nuevamente la funcion aleatoria, manejo de tablas,condicionales. Este tipo de programa es util en el area de ventas de un negocio.

    prog39_promocion.cpp/*Este programa pide primeramente la cantidad total de compras de unapersona. Si la cantidad es inferior a $100.00, el programa dir que elcliente no aplica a la promocin. Pero si la persona ingresa unacantidad en compras igual o superior a $100.00, el programa genera deforma aleatoria un nmero entero del cero al cinco. Cada nmerocorresponder a un color diferente de cinco colores de bolas que hay paradeterminar el descuento que el cliente recibir como premio. Si la bolaaleatoria es color blanco, no hay descuento, pero si es uno de los otroscuatro colores, s se aplicar un descuento determinado segn la tablaque aparecer, y ese descuento se aplicar sobre el total de la compraque introdujo inicialmente el usuario, de manera que el programa mostrarun nuevo valor a pagar luego de haber aplicado el descuento.*/

    #include #include #include #include void clrscr() /*Creando funcion para limpiar pantalla.*/{

    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);COORD coord = {0, 0};DWORD count;

    CONSOLE_SCREEN_BUFFER_INFO csbi;GetConsoleScreenBufferInfo(hStdOut, &csbi);

    FillConsoleOutputCharacter(hStdOut, ' ' , csbi.dwSize.X * csbi.dwSize.Y,coord, &count);

    SetConsoleCursorPosition(hStdOut, coord);}void main(){

  • 7/31/2019 Cuaderno de Ejercicios de C

    75/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 75

    int salir,saliryesno;salir=0;while (salir==0){

    clrscr(); /*Llamando la funcion para limpiar pantalla.*/

    int random;float gasto, ncargo;

    printf( "\nINTRODUZCA LA CANTIDAD TOTAL DE LA COMPRA: " );scanf( "%f" ,&gasto, "\n" );

    while (gasto < 0){

    printf( "NO EXISTEN CARGOS NEGATIVOS INTRODUZCA NUEVOGASTO: " );

    scanf( "%f" ,&gasto, "\n" );}

    if (gasto >= 100){

    printf( "\nSU GASTO IGUALA O SUPERA LOS $100.00 Y PORTANTO PARTICIPA EN LA PROMOCION.\n" );

    printf( "\n\t\t COLOR\t\t DESCUENTO\n\n" );printf( "\t\tBOLA BLANCA\t\t NO TIENE\n" );printf( "\t\tBOLA ROJA\t\t10 POR CIENTO\n" );printf( "\t\tBOLA AZUL\t\t20 POR CIENTO\n" );printf( "\t\tBOLA VERDE\t\t25 POR CIENTO\n" );printf( "\t\tBOLA AMARILLA\t\t50 POR CIENTO\n\n" );

    srand(time(NULL)); /*Inicializa el generador random*/random=rand()%5; /*Genera los nmeros random*/

    if (random==0){printf( "ALEATORIAMENTE USTED OBTUVO UNA BOLA

    BLANCA\n\n" );printf( "LO SENTIMOS, NO HA GANADO NINGUN

    DESCUENTO." ); printf( " EL TOTAL A PAGAR ES DE$%.2f\n\n" ,gasto);

    }else {

    if (random==1){printf( "ALEATORIAMENTE USTED OBTUVO UNA BOLA

    ROJA\n\n" );printf( "FELIDADES, HA GANADO UN 10 POR

    CIENTO DE DESCUENTO \n\n" );ncargo=gasto-(gasto*0.1);printf( "SU NUEVO TOTAL A PAGAR ES:

    $%.2f\n\n" , ncargo, "\n\n" );}else {

    if (random==2){printf( "ALEATORIAMENTE USTED OBTUVO

    UNA BOLA AZUL\n\n" );printf( "FELIDADES, HA GANADO UN 20 POR

    CIENTO DE DESCUENTO \n\n" );ncargo=gasto-(gasto*0.2);printf( "SU NUEVO TOTAL A PAGAR ES:

    $%.2f\n\n" , ncargo, "\n\n" );}else {

  • 7/31/2019 Cuaderno de Ejercicios de C

    76/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 76

    if (random==3){printf( "ALEATORIAMENTE USTED

    OBTUVO UNA BOLA VERDE\n\n" );printf( "FELIDADES, HA GANADO UN

    25 POR CIENTO DE DESCUENTO \n\n" );ncargo=gasto-(gasto*0.25);printf( "SU NUEVO TOTAL A PAGAR

    ES: $%.2f\n\n" , ncargo, "\n\n" );}else {

    if (random==4){printf( "ALEATORIAMENTE

    USTED OBTUVO UNA BOLA AMARILLA\n\n" );printf( "FELIDADES, HA

    GANADO UN 50 POR CIENTO DE DESCUENTO \n\n" );ncargo=gasto-(gasto*0.5);printf( "SU NUEVO TOTAL A

    PAGAR ES: $%.2f\n\n" , ncargo, "\n\n" );}

    }}

    }}

    }else { /*El gasto es menor a $100.00*/

    printf( "\n\nLO SENTIMOS, SU GASTO ES MENOR A CIENDOLARES Y NO APLICA A LA PROMOCION.\n\n" );

    }printf( "SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE

    OTRO NUMERO: " );scanf( "%d" ,&saliryesno);if (saliryesno==1){

    salir=1;}

    }}

    ACTIVIDADRealiza el mismo programa pero usando las sentencias SWITCH donde se requiera

  • 7/31/2019 Cuaderno de Ejercicios de C

    77/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 77

    Practica/Ejercicio 5 Retraso en renta peliculas

    La siguiente practica es para elaborar un programa que se usaria en un videoclub. Este mostrara unlistado de peliculas y luego se pedira el numero de dias de atraso de una pelicula. El programacalculara el monto a pagar, segn el precio de la pelicula y la tabla de recargos.

    prog40_peliculas.cpp/*Este programa muestra primero el listado de categoria de peliculas ypide al usuario que introduzca el codigo de la categoria de la pelicula yposterior a ello pide que el usuario introduzca el nmero de das deatraso en la devolucin de la pelcula. Lo que hace el programa es sumarel precio de la pelcula ms el valor del recargo multiplicado por elnmero de das de atraso, y as se muestra al final el total a pagar.*/

    #include "STdio.h"#include void clrscr() /*Creando funcion para limpiar pantalla.*/{

    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);COORD coord = {0, 0};DWORD count;

    CONSOLE_SCREEN_BUFFER_INFO csbi;GetConsoleScreenBufferInfo(hStdOut, &csbi);

    FillConsoleOutputCharacter(hStdOut, ' ' , csbi.dwSize.X * csbi.dwSize.Y,coord, &count);

    SetConsoleCursorPosition(hStdOut, coord);}void main(){

    int salir,saliryesno;salir=0;while (salir==0){

    clrscr(); /*Llamando la funcion para limpiar pantalla.*/int cod_pel,a;float dias,fav,nue,est,sest;printf( "\n" );printf( "\t CATEGORIA\tPRECIO\t CODIGO\tRECARGO/DIA DE

    ATRASO\n\n" );printf( "\tFAVORITOS\t$2.50\t\t1\t\t$0.50\n" );printf( "\tNUEVOS\t\t$3.00\t\t2\t\t$0.75\n" );printf( "\tESTRENOS\t$3.50\t\t3\t\t$1.00\n" );printf( "\tSUPER ESTRENOS\t$4.00\t\t4\t\t$1.50\n\n" );printf( "INTRODUZCA EL CODIGO DE LA CATEGORIA DE LA PELICULA:

    " );scanf( "%d" ,&cod_pel);a=0;while (a==0){

    if (cod_pel4){printf( "INTRODUZCA EL CODIGO DE LA CATEGORIA DE LA

    PELICULA (ENTRE 1 Y 4): " );

  • 7/31/2019 Cuaderno de Ejercicios de C

    78/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 78

    scanf( "%d" ,&cod_pel);}else {

    a=1;}

    }printf( "INTRODUZCA EL NUMERO DE DIAS DE ATRASO EN LA

    DEVOLUCION: " );scanf( "%f" ,&dias);a=0;while (a==0){

    if (dias

  • 7/31/2019 Cuaderno de Ejercicios de C

    79/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 79

    Practica/Ejercicio 6 Dados

    Otra practica de programa para ver la funcion aleatoria. Tambien repasamos las sentencias IFELSE

    prog41_dados.cpp/* DISELE UN PROGRAMA QUE SIMULE EL LANZAMIENTO DE DOS DADOS HASTA QUESALGA UN SIETE DOS VECES CONSECUTIVASEL PROGRAMA DEBE INDICAR EN QUE TIRADA OCURRIO ESE RESULTADO

    Este programa es posible gracias a la utilizacion del generador denumeros aleatorios para simular el lanzamiento de dos dadosEl programa indica en que tirada se da el evento de los dos dados quecaigan 7 consecutivamente.Para lograr esto se da la condicion ("if") que cada vez que caiga un 7que vaya a evaluar si la siguiente tirada da otro siete.Si esto es asi, el programa se sale del ciclo o de lo contrario continua.Se aade tambien un contador que es el que dice finalmente a las cuantastiradas se dio el eento de dos sietes consecutivamente*/

    #include #include #include

    #define FONDO (0)#define VERDE (10)#define AMARILLO (14)

    void main() {

    HANDLE hStdInput=INVALID_HANDLE_VALUE,hStdOutput=INVALID_HANDLE_VALUE;hStdInput=GetStdHandle(STD_INPUT_HANDLE);hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO);float salir;int saliryesno;salir=0;

    while (salir==0) {system( "cls" );SetConsoleTextAttribute(hStdOutput, FONDO|VERDE);printf( "\n\t\t\t EJERCICIO 41 (DADOS)\n" );printf( "\t\t\t =====================\n" );

    int a, lanzamiento, i=0, contador=0;printf( "\nPROBLEMA: DISEE UN PROGRAMA QUE SIMULE UN

    LANZAMIENTO DE DOS DADOS HASTA QUE\n" );printf( "SALGA UN SIETE DOS VECES CONSECUTIVAS. EL PROGRAMA

    DEBE INDICAR EN QUE TIRADA\n" );printf( "OCURRIO ESE RESULTADO.\n\n" );srand(time(NULL)); //Inicializar generador aleatoriowhile (i==0){

    lanzamiento=1+rand()%12; //Generar numerosaleatorios

  • 7/31/2019 Cuaderno de Ejercicios de C

    80/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 80

    if (lanzamiento==7){lanzamiento=1+rand()%12;contador=contador+1;if (lanzamiento==7){

    contador=contador+1;i=1;

    }}contador=contador+1;

    }printf( "EL SIETE SALIO DOS VECES CONSECUTIVAS EN LA TIRADA

    NUMERO %d.\n\n" ,contador);SetConsoleTextAttribute(hStdOutput, FONDO|AMARILLO);printf( "SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE

    OTRO NUMERO: " );scanf( "%d" , &saliryesno);if (saliryesno==1){

    printf( "\n\a" );salir=1;

    }} //Fin del while

    }

    ACTIVIDADTrata de modificar el programa para que en lugar de un dado, sea una moneda (recuerda que tiene2 lados).

  • 7/31/2019 Cuaderno de Ejercicios de C

    81/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 81

    PARTE IVPRACTICAS PARA DESARROLLAR

  • 7/31/2019 Cuaderno de Ejercicios de C

    82/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 82

    PRACTICA 7 Contando dinero

    Desarrolla un programa que ira preguntando por la cantidad de billetes y monedas de cada valorque tiene el usuario y luego determinara la suma de dinero que hay en monedas y la suma que hayen billetes. El programa dira la suma total de dinero que tiene. Finalmente el programa dara al

    usuario la posibiliad de transformar la cantidad de la moneda local a dolares o euros segn decidael usuario.

    PRACTICA 8 Numeros

    Desarrolla un programa donde el usuario introduzca tres numeros enteros y luego nos indique cualde ellos es el central o el de en medio.

    PRACTICA 9 Numeros ordenados

    Crea un programa donde el usuario introduzca tres numeros enteros y se orden de maneraascendete y a continuacion en orden descendente.

    PRACTICA 10 Boletos

    Desarrolla un programa que nos diga el precio de un boleto de ida y vuelta en autobus, conociendola distancia a recorrer y sabiendo que si el numero de dias de estancia es mayor o igual a 7, y ladistancia mayor o igual a 100 kilometros, el boleto tiene un descuento del 50%

    PRACTICA 11 Conversiones metricas

    Crea un programa que muestre un listado de unidades de medida y que pida al usuario indicar concual desea trabajar. Despues, se le pide que introduzca el valor de la unidad que selecciono yentonces el programa le dice el equivalente de ese valor en todas las otras unidades de medida. La

    transformacion a equivalencia se hace entre estas cuatro unidades: metros, pulgadas, pies y yardas.

  • 7/31/2019 Cuaderno de Ejercicios de C

    83/93

    [PROGRAMACION I C++ ] IDSystems 2011

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 83

    PRACTICAS DE VARIABLES, TIPOS DE DATOS, ASIGNACIONES,OPERADORES

    PRACTICA 12 Rectangulo

    Haga un programa que halle el area y el perimetro de un rectangulo. Considere las siguientesformulas: area = base * altura, perimetro = 2 * (base + altura).

    PRACTICA 13 Pies

    Disee un programa para convertir una longitud dada en centimetros a pies. Considere que: 1 pie =30.48 centimetros.

    PRACTICA 14 Triangulo

    Calcular el area de un triangulo, conociend