cuadernos de ejercicios c

Upload: idsystems

Post on 09-Apr-2018

393 views

Category:

Documents


25 download

TRANSCRIPT

  • 8/7/2019 Cuadernos de Ejercicios C

    1/119

    CUADERNO DE EJERCICIOS Y PRA

    CUADERN

    Cuaderno de Trabajo Visual Basic s

    Comercial-Licenciamie

    [PROGRAMACION I C++] IDSystems

    CTICAS C++

    DE TRABAJO DE C

    encuentra bajo una Licencia Creative Commo

    to Recproco 3.0 Unported. Diciembre IDSys

    011 - 2013

    gina 1

    +

    s Atribucin-No

    ems

  • 8/7/2019 Cuadernos de Ejercicios C

    2/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 2

    Contenido

    PARTE I ............................................................................................................................................. 5INSTRUCCIONES ................................................................................................................................ 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 ....................................................................................... 12

    Ejercicio 8 Operadores y tipos de datos ........................................................................................ 13

    Ejercicio 9 Operaciones simples ................................................................................................... 15

    Ejercicio 10 - Concatenacion ........................................................................................................... 17

    Ejercicio 11 IfElse ....................................................................................................................... 18

    Ejercicio 12 Operaciones condicionales ........................................................................................ 19

    Ejercicio 13 IFELSE anidados ...................................................................................................... 21

    Ejercicio 14 Salida a un archivo externo ....................................................................................... 24

    Ejercicio 15 - Switch ........................................................................................................................ 27

    Ejercicio 16 Area de poligonos con Switch .................................................................................... 28

    Ejercicio 17 Ciclo For .................................................................................................................... 31

    Ejercicio 18 Ciclo while ................................................................................................................. 33

    Ejercicio 19 Ciclos anidados .......................................................................................................... 34

    Ejercicio 20 Ciclo While ................................................................................................................ 35

    PRACTICA 1 ..................................................................................................................................... 37

    Ejercicio 21 - Juego del Granjero ..................................................................................................... 37

    Ejercicio 22 - Juegos ........................................................................................................................ 48

    Ejercicio 22a Juego de Adivinanzas ........................................................................................... 49

    Ejercicio 22b - Tragamonedas ..................................................................................................... 51

    Ejercicio 22c Pseudovirus ......................................................................................................... 54

    Ejercicio 23 - Juego del Ahorcado .................................................................................................... 58

    Ejercicio 24 - Juego Las Torres de Hanoi .......................................................................................... 73

    Ejercicio 25 Arreglos ..................................................................................................................... 78

    Ejercicio 26 ..................................................................................................................................... 80

    Ejercicio 27 Cadenas .................................................................................................................... 82

    Ejercicio 28 - Arreglos y cadenas ..................................................................................................... 84

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

    Ejercicio 30 Estructuras ................................................................................................................ 90

    Practica/Ejercicio 1 Zodiaco ......................................................................................................... 92

    Practica/Ejercicio 2 Califaciones Estilo USA .................................................................................. 96

    Practica/Ejercicio 3 Sueldos a trabajador...................................................................................... 98

    Practica/Ejercicio 4 Promocion de Ventas .................................................................................. 100

    Practica/Ejercicio 5 Retraso en renta peliculas ........................................................................... 103

    Practica/Ejercicio 6 Dados .......................................................................................................... 105

  • 8/7/2019 Cuadernos de Ejercicios C

    3/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 3

    PRACTICA 7 Contando dinero ..................................................................................................... 108

    PRACTICA 8 Numeros ................................................................................................................. 108

    PRACTICA 9 Numeros ordenados ............................................................................................... 108

    PRACTICA 10 Boletos .................................................................................................................. 108

    PRACTICA 11 Conversiones metricas .......................................................................................... 108

    PRACTICAS DE VARIABLES, TIPOS DE DATOS, ASIGNACIONES, OPERADORES ................................ 109

    PRACTICA 12 Rectangulo ........................................................................................................ 109

    PRACTICA 13 Pies ................................................................................................................... 109

    PRACTICA 14 Triangulo ........................................................................................................... 109

    PRACTICA 15 Raices ................................................................................................................ 109

    PRACTICA 16 Tiempos ............................................................................................................ 109

    PRACTICA 17 Prestamo .......................................................................................................... 109

    PRACTICA 18 Metros .............................................................................................................. 109

    PRACTICA 19 Millonario ......................................................................................................... 110

    PRACTICA 20 Promedio .......................................................................................................... 110

    PRACTICA 21 Circulo ............................................................................................................... 110

    PRACTICA 22 Maquina reversadora de numeros .................................................................... 110

    PRACTICA 23 Nibles ................................................................................................................ 110

    PRACTICA 24 Multiplicacion por 300 ...................................................................................... 110

    PRACTICA 25 Peso .................................................................................................................. 110

    PRACTICA 26 Fahrenheit ........................................................................................................ 110

    PRACTICA 27 Celsius ............................................................................................................... 110

    PRACTICA 28 Determinante .................................................................................................... 111

    PRACTICA 29 Don Manolo ...................................................................................................... 111

    PRACTICA 30 - ISBN .................................................................................................................. 111

    PRACTICA 31 Odometer ......................................................................................................... 112

    PRACTICA 32 Triangulo II ........................................................................................................ 112

    PRACTICA 33 Distancia Euclidiana .......................................................................................... 112

    PRACTICA 34 Validacion de Tarjetas de credito ...................................................................... 112PRACTICA 35 Suma de fracciones ........................................................................................... 113

    PRACTICAS DE ESTRUCTURAS DE CONTROL .................................................................................. 113

    PRACTICA 36 Max ................................................................................................................... 113

    PRACTICA 37 Positivo Negativo .............................................................................................. 113

    PRACITCA 38 Par Impar .......................................................................................................... 113

    PRACTICA 39 Convertidor de divisas ....................................................................................... 113

    PRACTICA 40 Grado Promedio ................................................................................................ 114

    PRACTICA 41 Bisiesto ............................................................................................................. 114

    PRACTICA 42 Diferencia.......................................................................................................... 114

    PRACTICA 43 Saludo ............................................................................................................... 114

    PRACTICA 44 - Control ............................................................................... ............................... 114PRACTICA 45 Multiplo ............................................................................................................ 115

    PRACTICA 46 ASCII ................................................................................................................. 115

    PRACTICA 47 Super Raices ...................................................................................................... 115

    PRACTICA 48 Dia semana ......................................................................... ............................. 115

    PRACTICA 49 Super Triangulo ................................................................................................. 115

    PRACTICAS DE ESTRUCTURAS REPETITIVAS ................................................................................... 115

    PRACTICA 50 Countdown ....................................................................................................... 115

  • 8/7/2019 Cuadernos de Ejercicios C

    4/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 4

    PRACTICA 51 Factorial ............................................................................................................ 115

    PRACTICA 52 Serie 1 ............................................................................................................... 116

    PRACTICA 53 Primo ................................................................................................................ 116

    PRACTICA 54 Ingenieros 2050 ................................................................................................ 116

    PRACTICA 55 Super Primos ..................................................................................................... 116

    PRACTICA 56 Mayor Menor .................................................................................................... 116

    PRACTICA 57 Cuadrado .......................................................................................................... 116

    PRACTICA 58 Decimal a Hexadecimal ..................................................................................... 116

    PRACTICA 59 Rombo .............................................................................................................. 116

    PRACTICA 60 Binario .............................................................................................................. 116

    PRACTICA 61 Tablas de Multiplicar ......................................................................................... 117

    PRACTICA 62 Divisores ........................................................................................................... 117

    PRACTICA 63 Calculadora ....................................................................................................... 117

    PRACTICA 64 Adivinar............................................................................................................. 117

    PRACTICA 65 Nicomaco .......................................................................................................... 117

    PRACTICA 66 Perfectos ........................................................................................................... 118

    PRACTICA 67 Sumatorias ........................................................................................................ 118

    PRACTICA 68 Guess my age .................................................................................................... 118

    PRACTICA 69 Power ............................................................................................................... 118

    PRACTICA 70 Amigos .............................................................................................................. 118

    PRACTICAS CON VECTORES ........................................................................................................... 118

    PRACTICA 71 Minimo ............................................................................................................. 118

    PRACTICA 72 Cafeteria ........................................................................................................... 119

    PRACTICA 73 Traductor de Codigo Morse ............................................................................... 119

    PRACTICA 74 Serie .................................................................................................................. 119

  • 8/7/2019 Cuadernos de Ejercicios C

    5/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    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 modo

    de sintaxis de C++. Se vera la estructura basica de un programa, las instrucciones estandar y al

    finalizar algunos ejemplos de comandos condicionales SIENTONCES.

  • 8/7/2019 Cuadernos de Ejercicios C

    6/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 6

    INSTRUCCIONES

    En este cuaderno de trabajo tendras los EJERCICIOS y PRACTICAS que veras en el curso de

    Programacion I. Los ejercicios seran instrucciones paso a paso o programas ya resueltos para que los

    teclees, te familiarices con la sintaxis, comados y realices alguna tarea sobre ellos como generar los

    diagramas de flujo, pseudocodigo o indicar su funcionamiento. Las practicas, no tendran aqu la

    respuesta, sino que deberas realizarla desde cero.

    Debes teclear cada uno de los programas en tu compilador de C++. Hacer la compilacion y

    encadenamiento 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 que

    soporta hasta Windows XP. Para versiones Windows Vista y Windows 7, este compilador no

    funcionara. Necesitaras descargar el Visual C++ 2008 Studio Express y posiblemente hacer

    algunas modificaciones en el codigo.

    Actualizacion 2013.

    Desde el curso 2012, se utilizan 3 compiladores distintos para que el alumno aprenda las

    diferencias entre los IDE y no propiamente en el lenguaje de C++. La primera parte

    corresponde al compilador ZINJAI. La segunda parte al compilador MS Visual C++ 6.0 y la

    tercera parte al compilador DevC++. Se han seleccionado estos compiladores porque se prestan

    mejor para la manera didactica, aunque en la parte cuarta se utiliza ZINJAI con librerias

    visuales y CODEBLOCKS. Los compiladores de NetBeans y Eclipse no se ven sino hasta el

    siguiente curso.

    En vista de que el compilador MS VISUAL C++ 6.0 no funciona de manera correcta en

    Windows Vista, 7 y 8, se opto por utilizar la version Visual C++ 2008 Express o en su defecto

    DevC++. Los ejercicios por tanto, mostraran codigo de ambas versiones.

  • 8/7/2019 Cuadernos de Ejercicios C

    7/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    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

    #includeint main(){

    std::cout

  • 8/7/2019 Cuadernos de Ejercicios C

    8/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 8

    SENTENCIA ACCION

    Que tipo de variables declaramos?

    Que operaciones estamos realizando?

    Cual es el comando para mostrar salida porpantalla?

    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

    #includeint main(){

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

  • 8/7/2019 Cuadernos de Ejercicios C

    9/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    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, se

    almacena 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

  • 8/7/2019 Cuadernos de Ejercicios C

    10/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    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 1

    int main (void){

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

    #ifdef FRIENDstd::cout

  • 8/7/2019 Cuadernos de Ejercicios C

    11/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 11

    Ejercicio 6 Salida por pantalla

    Simple programa de salida por pantalla

    Prog06.cpp

    /* Prog06_17.cpp

    Programa 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 */#includeint main(void){

    cout

  • 8/7/2019 Cuadernos de Ejercicios C

    12/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 12

    Ejercicio 7 Entrada y salida por pantalla

    Entrada y salida por pantalla:

    Prog07.cpp

    /*Prog07_17.cpp

    Programa para el ejercicio propuesto en pag. 17 Manual C++ por lapractica4.1 no. 2Por: Lic. Sergio Hugo Sanchez O.Para: Universidad Matamoros17, Mayo, 2009 */#includeint main(void){

    char msg[200] ;cout

  • 8/7/2019 Cuadernos de Ejercicios C

    13/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 13

    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){

  • 8/7/2019 Cuadernos de Ejercicios C

    14/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 14

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

    cout

  • 8/7/2019 Cuadernos de Ejercicios C

    15/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 15

    INSTRUCCION ACCION

    Que tipos de datos estamos declarando?

    Que tipos de operaciones estamos realiznado?

    Cual es el resultado del programa?

    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

  • 8/7/2019 Cuadernos de Ejercicios C

    16/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 16

    double x, y, z;cout x;cout y;z = x+y;cout

  • 8/7/2019 Cuadernos de Ejercicios C

    17/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 17

    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*/#includeint 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

  • 8/7/2019 Cuadernos de Ejercicios C

    18/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 18

    Responde a lo siguiente:

    Qu es la concatenacin?

    Cmo se realiza la concatenacin?

    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

  • 8/7/2019 Cuadernos de Ejercicios C

    19/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 19

    Explica el comando de IF

    Ejercicio 12 Operaciones condicionales

    Ejercicio con operaciones, entrada salida por consola y condicional

    Prog13.cpp

    /* Pregunta dos numoers, que operacion deseas hacer y muestra el resultado */#includeint main(){

    double a, b;int c;

    cout a;cout b;cout c;

    if (c==1) {cout

  • 8/7/2019 Cuadernos de Ejercicios C

    20/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 20

    }

    /* Pregunta dos numeros, que operacion deseas hacer y muestra el resultado */#include using namespace std;

    int main(){

    double a, b;int c;cout a;cout b;cout c;

    if (c==1) {cout

  • 8/7/2019 Cuadernos de Ejercicios C

    21/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 21

    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 */#includeint main(){

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

  • 8/7/2019 Cuadernos de Ejercicios C

    22/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 22

    cout > b;area = a*b;}

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

    else{ cout

  • 8/7/2019 Cuadernos de Ejercicios C

    23/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 23

    return 0;}

    ACCION COMANDO

    Qu son las condiciones anidadas?

    Cmo se escriben las condiciones anidadas?

  • 8/7/2019 Cuadernos de Ejercicios C

    24/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 24

    Ejercicio 14 Salida a un archivo externo

    Programa mas complejo que involucra: IF...ELSE, matrices, mas de 1 libreria, creacion de archivo de

    texto, 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 25

    int main (){

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

    cout MAX_SIZE){

    cerr

  • 8/7/2019 Cuadernos de Ejercicios C

    25/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 25

    logica

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

    */#include #include

    using namespace std;#define MAX_SIZE 25

    int main (){

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

    cout MAX_SIZE)

    {cerr

  • 8/7/2019 Cuadernos de Ejercicios C

    26/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 26

    Cules son los comandos de archivo que

    se presentan?

    Realiza el pseudocdigo correspondiente:

  • 8/7/2019 Cuadernos de Ejercicios C

    27/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 27

    Ejercicio 15 - Switch

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

    Prog16.cpp

    /* Uso de switch en lugar de IF

    Igual al prog13 */

    #includeint main (){

    double a, b; int c;cout

  • 8/7/2019 Cuadernos de Ejercicios C

    28/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 28

    Menciona las diferencias entre la instruccin Switch y la instruccin IF

    Ejercicio 16 Area de poligonos con SwitchVariacion de operaciones con poligonos usando switch en lugar de IF... else

    Prog17.cpp

    /*Calcular el area de diferentes poligonos usando Switch*/#includeint main(){

    double a, b, area; int figura;cout b;area = a*b; break;case 2:cout a;cout > b;area=a*b/2.0; break ;

    default:cout

  • 8/7/2019 Cuadernos de Ejercicios C

    29/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 29

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

  • 8/7/2019 Cuadernos de Ejercicios C

    30/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 30

    PARTE IIEn 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 la

    programacion.

  • 8/7/2019 Cuadernos de Ejercicios C

    31/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 31

    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

  • 8/7/2019 Cuadernos de Ejercicios C

    32/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 32

    El enunciado es el tpico de un problema que puede ser solucionado con un bucle "for".Observa el uso de los comentarios, y acostmbrate a incluirlos en todos tus programas.Acostmbrate tambin a escribir el cdigo al mismo tiempo que los comentarios. Si lo dejaspara cuando has terminado el cdigo, probablemente sea demasiado tarde, y la mayorade las veces no lo hars. ;-)

    Tambin es una buena costumbre incluir al principio del programa un comentarioextenso que incluya el enunciado del problema, aadiendo tambin el nombre del autor yla fecha en que se escribi. Adems, cuando hagas revisiones, actualizaciones ocorrecciones deberas incluir una explicacin de cada una de ellas y la fecha en que sehicieron.

    Una buena documentacin te ahorrar mucho tiempo y te evitar muchos dolores decabeza.

  • 8/7/2019 Cuadernos de Ejercicios C

    33/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 33

    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

  • 8/7/2019 Cuadernos de Ejercicios C

    34/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 34

    else cout

  • 8/7/2019 Cuadernos de Ejercicios C

    35/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 35

    }

    return 0;}

    // Este programa muestra una lista de nmeros

    // de este tipo:// 1// 1 2// 1 2 3// ...

    #include // librera para uso de coutusing namespace std;int main() // funcin principal

    {

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

  • 8/7/2019 Cuadernos de Ejercicios C

    36/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 36

    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

  • 8/7/2019 Cuadernos de Ejercicios C

    37/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 37

    // Cambio de lnea

    system("pause");return 0;

    }

    PRACTICA 1

    1.Ahora lee las paginas de la 32 a la 40 del manual el C++ por la practica y realiza losejercicios propuestos ah para enviarlos al profesor.

    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:

  • 8/7/2019 Cuadernos de Ejercicios C

    38/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 38

    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

    /** 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);

  • 8/7/2019 Cuadernos de Ejercicios C

    39/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 39

    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**/voidInstruct(){

    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 sela 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;

  • 8/7/2019 Cuadernos de Ejercicios C

    40/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 40

    /** 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;elseif (key == 'Z' && Player.zorra == bank)

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

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

    break;

    elseif (key == K_ESC) {putchar('\n');exit (0);

    }else

    putchar(BELL); // mal comando}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){

  • 8/7/2019 Cuadernos de Ejercicios C

    41/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 41

    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);

    /* 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*/int

  • 8/7/2019 Cuadernos de Ejercicios C

    42/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 42

    MadeIt()

    {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");elseif (Player.gallina == Player.maiz)

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

    exit(1);}/** G R A N J E R O** El problema del granjero cruzando el rio**/

    #include

    #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

    /** Prototipos de funcion*/void Instruct(void);int GetMove(int);

  • 8/7/2019 Cuadernos de Ejercicios C

    43/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 43

    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);

    system("pause");return (0);

    }

    /** Instruct()** Despliega las reglas del juego**/voidInstruct(){

    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");

  • 8/7/2019 Cuadernos de Ejercicios C

    44/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 44

    printf("El granjero solo puede tomar una cosa a la vez en elbote.\n");

    printf("La zorra no se puede quedar sola con la gallina porque sela 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");

    system("pause");

    }

    /*** 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}putchar('\n');return (key);

    }

    void

  • 8/7/2019 Cuadernos de Ejercicios C

    45/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 45

    DoMove(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);

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

    ec = 'z';else

  • 8/7/2019 Cuadernos de Ejercicios C

    46/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 46

    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");system("pause");exit(1);

    }

  • 8/7/2019 Cuadernos de Ejercicios C

    47/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 47

    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 a

    cout y cin?

    Que tipo de datos estamos declarando y

    como?

    Que significa cada constante declarada?

  • 8/7/2019 Cuadernos de Ejercicios C

    48/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 48

    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 usado

    es 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 algunas

    funciones graficas.

    De entre ellas, hay una libreria llamada CONIO.H y STDLIB.H, que si bien existen en la version del

    compilador 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 nuevas

    instrucciones que generalmente son utiles en los juegos. Sin embargo, algunas setenciones no se

    recomiendan 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 manera

    correcta.

    INSTRUCCIONES ANTES DE EJECUTAR LOS PROGRAMAS.

    1. Ve a la seccion de Manuales y Video y deberas bajar CONSOLA.H y CONSOLA.LIB

    2. 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 estos

    dos 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 algunos

    casos) por otras compatibles con esta version del compilador (como RANDOM y RANDOMIZE).

    Cualquier duda, preguntale a tu profesor.

  • 8/7/2019 Cuadernos de Ejercicios C

    49/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 49

    Ejercicio 22a Juego de Adivinanzas

    El siguiente es un pequeo juego de adivinanzas. La computadora "pensara" un numero entre 1 y 100

    y 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;cout

  • 8/7/2019 Cuadernos de Ejercicios C

    50/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 50

    else if (b>a)cout

  • 8/7/2019 Cuadernos de Ejercicios C

    51/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 51

    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 columnas

    contengan 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

  • 8/7/2019 Cuadernos de Ejercicios C

    52/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 52

    if (frutas[1]==frutas[2] || frutas[1]==frutas[3] ||frutas[2]==frutas[3]) {

    gotoxy(24,20);cout

  • 8/7/2019 Cuadernos de Ejercicios C

    53/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 53

    strcpy(fruta[9], "Durazno");// b = random(5);// c = random(5);b = 1 + rand() % 5;c = 1 + rand() % 5;

    for (cuenta =1; cuenta

  • 8/7/2019 Cuadernos de Ejercicios C

    54/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 54

    Qu tipos de datos estamos declarando y como?

    Qu funciones de C++ nuevas has descubierto

    en el programa?

    Ejercicio 22c Pseudovirus

    Quieres hacer una pequea demostracion de un virus? Aqui tienes la oportunidad mientras practicas

    los 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);

  • 8/7/2019 Cuadernos de Ejercicios C

    55/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 55

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

    int col,i, j, r;

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

    for (j=1; j

  • 8/7/2019 Cuadernos de Ejercicios C

    56/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 56

    delay(3000);clrscr();delay(1000);

    }

    /* 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 compilarMOD: 18-Feb-2013.. En la version DevC++ no necesitamos el headerCONSOLA.H y la

    libreria asociada, basta usar la libreria windows.h y la pequenafuncion al

    inicio. Ademas, se sustituye la funcion delay() por la funcion Sleepde la

    misma libreria windows.h*/#include #include #include

    #include #include

    using namespace std;

    //Defines gotoxy() for ANSI C compilers.void gotoxy(short x, short y) {COORD pos = {x, y};SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);}

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

    int col,i, j, r;

    int main(){//HANDLE hConsoleOutput;

    //hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);//SetConsoleDisplayMode(hConsoleOutput,1,NULL);

    system("cls");r=50;

    for (j=1; j

  • 8/7/2019 Cuadernos de Ejercicios C

    57/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 57

    // cambiar * por el codigo ASCII 176 (Si usas NOTEPAD++). Normal @void derecha(int fila) {

    for (col=1; col

  • 8/7/2019 Cuadernos de Ejercicios C

    58/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 58

    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:

  • 8/7/2019 Cuadernos de Ejercicios C

    59/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 59

    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 enla misma 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("-----------------------------------------");

  • 8/7/2019 Cuadernos de Ejercicios C

    60/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 60

    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

  • 8/7/2019 Cuadernos de Ejercicios C

    61/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 61

    {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

  • 8/7/2019 Cuadernos de Ejercicios C

    62/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 62

    }

    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

  • 8/7/2019 Cuadernos de Ejercicios C

    63/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 63

    gotoxy(38,8);printf("|_-_|");

    }

    //***********************************************************************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);

  • 8/7/2019 Cuadernos de Ejercicios C

    64/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 64

    printf(":");gotoxy(41,3);printf(":");gotoxy(42,3);printf(":::::::::::::::");for (i=3; i

  • 8/7/2019 Cuadernos de Ejercicios C

    65/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 65

    void construye_tronco();void construye_brazo_izquierdo();void construye_brazo_derecho();void construye_pie_izquierdo();void construye_pie_derecho();void construye_horca();

    int opcion_elegida=0;int posicion_de_palabra_a_adivinar=0;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 longitud_palabra_actual=0;

    int main(){

    opcion_elegida = 0;system("cls");exhibe_el_menu();system("pause");return 0;

    }

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

    system("cls");do{

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

    printf("-----------------------------------------");// 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,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();

  • 8/7/2019 Cuadernos de Ejercicios C

    66/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 66

    case 3: muestra_las_palabras();case 4: break;

    }}

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

    int ia,ja;system("cls");for (ia=0; ia>palabra_actual;longitud_palabra_actual = strlen(palabra_actual);longitud_de_las_palabras[ia] = longitud_palabra_actual;for (ja=0; ja

  • 8/7/2019 Cuadernos de Ejercicios C

    67/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 67

    system("cls");}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

  • 8/7/2019 Cuadernos de Ejercicios C

    68/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 68

    construye_brazo_izquierdo();else

    if (errores==5)

    construye_pie_derecho();else

    if (errores==6)

    construye_pie_izquierdo();else

    if(errores==7)

    {

    system("cls");

    construye_todo();

    errores=7;}

    }

    } while (i

  • 8/7/2019 Cuadernos de Ejercicios C

    69/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 69

    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(":::::::::::::::");for (i=3; i

  • 8/7/2019 Cuadernos de Ejercicios C

    70/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 70

    construye_tronco();construye_cabeza();

    }

    DevC++

    con

    WimbGi

    m

    /* Dev_prog23bGJuego del Ahorcado de manera grafica

    Gracias a:TRABAJO FINAL DE COMPUTACIONPAZ CARDENAS ISRAEL EDSONESCOBAR CHAINA PABLO WILSONMEDRANO AROSQUETA FREDDY(creadores originales)*/

    #include #include #include #include #include

    using namespace std;

    int main(){

    int x=20;system("color e1");char texto[20];cout

  • 8/7/2019 Cuadernos de Ejercicios C

    71/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 71

    for (int i=0;i < n;i++){if(texto[i]==letra[0]){encontrado=1;otro[i]=letra[0];cout

  • 8/7/2019 Cuadernos de Ejercicios C

    72/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 72

    Ademas, compara que el codigo para DevC++ no utiliza la librera consola.h y en su defecto

    utiliza la librera windows.h. Este programa tiene errores de manera intencional para las

    versiones de Visual C++ y DevC++. Descubrelos y da una solucion, ademas:

    Se ha incorporado otro codigo del ahorcado de manera grafica utilizando la librera

    wimbgim.h. Para lo cual buscala en internet o pidela a tu profesor. Deberas instalar esta

    librera para tu compilador DevC++, y crear un proyecto nuevo bajo Console GraphicsApplication, en lugar de Console Application tradicional. Una vez hecho esto, teclea el codigo

    correspondiente y compila.

    Responde a lo siguiente:

    Qu libreras son las que se incluyen en este

    programa?

    Cules son las funciones en las que esta

    dividido este programa?

    Cules son los nuevos comandos de C, que se

    incluyen en este programa?

    Qu tipos de datos se declaran en este

  • 8/7/2019 Cuadernos de Ejercicios C

    73/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 73

    programa?

    Dnde se almacenan las palabras?

    Cmo se pueden poner mas palabras?

    Qu funcin o proceso es lo que mas realiza

    este programa y se repite?

    Ejercicio 24 - Juego Las Torres de Hanoi

    Generalmente para probar el tema de la recursividad se aplica el ejercicio del juego de lastorres 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)

  • 8/7/2019 Cuadernos de Ejercicios C

    74/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 74

    #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 ");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);

  • 8/7/2019 Cuadernos de Ejercicios C

    75/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 75

    //SetConsoleTextAttribute(hStdOutput, BG_BLACK | FG_BLUE );}

    Para la version DevC++, solo hay que cambiar unas lineas que esperamos ya hayasidentificado.

    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.

    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. =)

  • 8/7/2019 Cuadernos de Ejercicios C

    76/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 76

    Responde a lo que se indica:

    Qu es la recursin?

    Por qu estn varias

    instrucciones con

    comentarios?

  • 8/7/2019 Cuadernos de Ejercicios C

    77/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 77

    PARTE IIIARREGLOS Y ESTRUCTURASA partir de aqu, usamos solamente el compilador DevC++.

  • 8/7/2019 Cuadernos de Ejercicios C

    78/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 78

    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:

  • 8/7/2019 Cuadernos de Ejercicios C

    79/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 79

    prog30_vectores.cpp

    /* Pro30 - Uso de vectores *//* Que ocurriria si tuviesemos que contar las apariciones de los cienprimeros 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 los

    resutados \n\n");

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

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

  • 8/7/2019 Cuadernos de Ejercicios C

    80/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 80

    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();

    }}

  • 8/7/2019 Cuadernos de Ejercicios C

    81/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 81

    Responde a lo siguiente:

    Que son los arrays multidimensionales?

    Como generamos los numerousaleatorios?

    Como declaramos las variables?

  • 8/7/2019 Cuadernos de Ejercicios C

    82/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 82

    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];

  • 8/7/2019 Cuadernos de Ejercicios C

    83/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 83

    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]

  • 8/7/2019 Cuadernos de Ejercicios C

    84/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 84

    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 cadenasstaticint enteros [5] = { 3, 7, 1, 5, 2 };

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

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

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

    };staticint b[2][5] = { 1,22,333,4444,55555,5,4,3,2,1 };staticchar *c = "cadena";staticstruct {

    int i;float x;

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

    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

  • 8/7/2019 Cuadernos de Ejercicios C

    85/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 85

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

  • 8/7/2019 Cuadernos de Ejercicios C

    86/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 86

    Que funcion tienen la instruccion static?

    Cual es la descripcion del formato que usa

    la 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 mensajes

    estan 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

  • 8/7/2019 Cuadernos de Ejercicios C

    87/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 87

    {if (sum==0)

    playbox();cout

  • 8/7/2019 Cuadernos de Ejercicios C

    88/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 88

    couti;coutj;

    }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

  • 8/7/2019 Cuadernos de Ejercicios C

    89/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 89

    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?

  • 8/7/2019 Cuadernos de Ejercicios C

    90/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 90

    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];longint 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?

  • 8/7/2019 Cuadernos de Ejercicios C

    91/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 91

    Qu es una estructura?

  • 8/7/2019 Cuadernos de Ejercicios C

    92/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 92

    Practica/Ejercicio 1 Zodiaco

    Ahora teclea el siguiente programa que te dice el signo zodiacal de una persona. Este ya es un

    ejercicio resuelto en donde veras algunas instrucciones nuevas para construir una funcion que

    borre 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#includevoid 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.*/shortunsignedint 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

  • 8/7/2019 Cuadernos de Ejercicios C

    93/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 93

    }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");

    }

  • 8/7/2019 Cuadernos de Ejercicios C

    94/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 94

    (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): ");

  • 8/7/2019 Cuadernos de Ejercicios C

    95/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 95

    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

  • 8/7/2019 Cuadernos de Ejercicios C

    96/119

    [PROGRAMACION I C++] IDSystems 2011 - 2013

    CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 96

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

    }}

    }

    ACTIVIDAD

    Realiza el mismo programa pero usando sentencias SWITCH y una modificacion para hacer el

    algoritmo 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 de

    programas 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"#includevoid 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,saliry