[PROGRAMACION I – C++] IDSystems 2011 - 2013 tems

CUADERNO DE TRABAJO DE C++

Cuaderno de Trabajo Visual Basic se encuentra bajo una Licencia Creative Commons Atribución Atribución-No Comercial-Licenciamiento Recíproco 3.0 Unported. Diciembre – IDSystems Licenciamiento Unpo

CUADERNO DE EJERCICIOS Y PRACTICAS C++

Página 1

[PROGRAMACION I – C++] IDSystems 2011 - 2013

Contenido
PARTE 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 ....................................................................................... 12 Ejercicio 8 – Operadores y tipos de datos ........................................................................................ 13 Ejercicio 9 – Operaciones simples ................................................................................................... 15 Ejercicio 10 - Concatenacion ........................................................................................................... 17 Ejercicio 11 – If…Else ....................................................................................................................... 18 Ejercicio 12 – Operaciones condicionales ........................................................................................ 19 Ejercicio 13 – IF…ELSE 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 CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 2

[PROGRAMACION I – C++] IDSystems 2011 - 2013 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 ...................................................................... 112 PRACTICA 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 .............................................................................................................. 114 PRACTICA 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 CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 3

.. 118 PRACTICA 69 – Power .......... 116 PRACTICA 54 – Ingenieros 2050 ................................................................................................................................................................................. 116 PRACTICA 61 – Tablas de Multiplicar ................................................................. 119 CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 4 .......................................... 118 PRACTICA 67 – Sumatorias ..........................................[PROGRAMACION I – C++] IDSystems 2011 .................................... 116 PRACTICA 56 – Mayor Menor ......................................................... 118 PRACTICA 72 – Cafeteria ................................................................................................................... 116 PRACTICA 58 – Decimal a Hexadecimal .................................................................................................................................................................................................................................................................................................................................................................... 118 PRACTICA 68 – Guess my age .................................................................... 116 PRACTICA 59 – Rombo ................................................................................................................ 117 PRACTICA 65 – Nicomaco ................ 119 PRACTICA 73 – Traductor de Codigo Morse .......................................................................................................................... 117 PRACTICA 62 – Divisores ....................................................................................................................... 116 PRACTICA 53 – Primo ................................................ 118 PRACTICA 71 – Minimo ..................... 116 PRACTICA 60 – Binario ......................................................................... 118 PRACTICAS CON VECTORES .................................................................................... 115 PRACTICA 52 – Serie 1 .................................................................................................................................................................................................................... 116 PRACTICA 55 – Super Primos .................................................................................................................................................................................................................................................................................................................................................................... 117 PRACTICA 63 – Calculadora .............................................................................2013 PRACTICA 51 – Factorial ........ 118 PRACTICA 70 – Amigos ........................................................................... 119 PRACTICA 74 – Serie ....... 116 PRACTICA 57 – Cuadrado ............................................................................................................................................... 117 PRACTICA 64 – Adivinar................................................................... 117 PRACTICA 66 – Perfectos .............................................................................................

[PROGRAMACION I – C++] IDSystems 2011 . Se vera la estructura basica de un programa.2013 PARTE I Los ejercicios y practicas de esta primera parte estan enfocados a entender los conceptos y el modo de sintaxis de C++. las instrucciones estandar y al finalizar algunos ejemplos de comandos condicionales SI…ENTONCES. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 5 .

. este compilador no funcionara. si se los envias por correo electronico: Alumno_Grado_NoEjercicio. Se han seleccionado estos compiladores porque se prestan mejor para la manera didactica. de la suite Microsoft Visual Studio 6. Hacer la compilacion y encadenamiento y ver los resultados.0 y la tercera parte al compilador DevC++. En vista de que el compilador MS VISUAL C++ 6. sino que deberas realizarla desde cero. se utilizan 3 compiladores distintos para que el alumno aprenda las diferencias entre los IDE y no propiamente en el lenguaje de C++. no tendran aquí la respuesta.0 que soporta hasta Windows XP. Las practicas. comados y realices alguna tarea sobre ellos como generar los diagramas de flujo. Los programas fueron creados en Visual C++ 6. Para versiones Windows Vista y Windows 7. Los compiladores de NetBeans y Eclipse no se ven sino hasta el siguiente curso.[PROGRAMACION I – C++] IDSystems 2011 . Los ejercicios por tanto.zip Ademas. Actualizacion 2013. Debes teclear cada uno de los programas en tu compilador de C++. Ejemplo: ReynolHernandez_03_Prog01.. cada ejercicio debera ir acompañado de su diagrama de flujo y pseudocodigo. pseudocodigo o indicar su funcionamiento. te familiarices con la sintaxis. Necesitaras descargar el Visual C++ 2008 Studio Express y posiblemente hacer algunas modificaciones en el codigo. Recuerda que debes guardarlos y entregar tanto el compilado (. Los ejercicios seran instrucciones paso a paso o programas ya resueltos para que los teclees.EXE) como el codigo fuente a tu profesor. aunque en la parte cuarta se utiliza ZINJAI con librerias visuales y CODEBLOCKS. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 6 . La segunda parte al compilador MS Visual C++ 6. Ambos deben ir en un archivo ZIP como se describe a continuacion. La primera parte corresponde al compilador ZINJAI.. mostraran codigo de ambas versiones. Desde el curso 2012. se opto por utilizar la version Visual C++ 2008 Express o en su defecto DevC++.0.0 no funciona de manera correcta en Windows Vista.2013 INSTRUCCIONES En este cuaderno de trabajo tendras los EJERCICIOS y PRACTICAS que veras en el curso de Programacion I. 7 y 8...

} Indica que es lo que hace cada linea: Ejercicio 2 – Tipos de datos El segundo programa trabaja con variables de tipo de dato entero.cpp Primero.2013 Ejercicio 1 – Hola Mundo 1. std::cout << std::endl. El primer programa es el clasico HOLA MUNDO.[PROGRAMACION I – C++] IDSystems 2011 . return 0. return 0. std::cout << std::endl. int y = 7. std::cout << x + y <<" " << x * y. y usa la salida a la pantalla o consola Segundo. } Responde que es lo que hace cada una de las instrucciones: CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 7 . Aqui lo hemos nombrado hola.cpp #include <iostream> int main() { int x = 5.cpp #include <iostream> int main() { std::cout<< "Hola Mundo".

2013 SENTENCIA Que tipo de variables declaramos? Que operaciones estamos realizando? Cual es el comando para mostrar salida por pantalla? ACCION 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. std::cout << "Estos son los valores: ".[PROGRAMACION I – C++] IDSystems 2011 .cpp #include <iostream> int main() { int x = 5. std::cout << x + y <<" " << x * y. std::cout << x << "y " << y. return 0. int y = 7. std::cout << std::endl. std::cout << std::endl. std::cout << std::endl. } Cual es la diferencia entre este programa y el anterior? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 8 .

Gracias por usar C++\n\n". int main() { int x = 5. cout << x + y <<" " << x * y. using std::cin.2013 Ejercicio 4 – Simplificando comandos y datos El cuarto programa es otra variacion del no. la declaramos aqui */ using std::cout. cout<< std::endl. se almacena en una variable caracter y luego muestra todos los resultados. cout <<"Cual es tu nombre? ". return 0. } Responde a lo que se indica: SENTENCIA Que tipo de datos estamos declarando? Que operaciones estamos realizando? Cual es el comando de salida en pantalla? Cual es el comando de entrada de datos? Cual es la instruccion para ENTER o indicar una linea nueva? ACCION CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 9 .cpp Este es el tercer programa y vamos a ver la entrada del teclado y salida por pantalla en la consola */ /* Esta es la libreria basica */ #include <iostream> /* Para no repetir la libreria std. cout << std::endl. int y = 7. Tercero. 2. char nombre [200].cpp /* Tercero.[PROGRAMACION I – C++] IDSystems 2011 . cin>>nombre. cout << std::endl. cout<<"Bienvenido "<<nombre<<". cout<<"Estos son los valores: "<<x<<" y "<< y. pero aqui pedira una entrada por el teclado.

15 Por: Lic. Sergio Hugo Sanchez O. #endif return 0 . Pag. std::cin >> name. Para: Universidad Valle del Bravo 17.cpp /* Prog05_Case. } Responde a lo que se indica: Cual es la diferencia entre una variable normal y las variables de preprocesador? Como declaramos las variables de preprocesador? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 10 . #ifdef FRIEND std::cout << "Hola " << name << ".[PROGRAMACION I – C++] IDSystems 2011 . Mayo. std::cout << "Escribe tu nombre \n". FICHA 1. que tal! \n".2009 */ #include <iostream> #define FRIEND 1 int main (void) { char name [200].cpp Un programa que pregunta su nombre y le saluda De: El C++ por la practica.2013 Ejercicio 5 – Variables de preprocesador En este ejercicio veremos como usar variables para ejecutarse en el preprocesador Prog05.

2009 */ #include <iostream.cpp /* Prog06_17.cpp Programa del ejercicio propuesto pag. return 0. int main(void) { cout << "Esto del C++ parece muy facil" << endl. Por: Lic. 17 C++ por la practica. 17 C++ por la practica. } ZinJai /* Prog06_17. Por: Lic.Mayo. Sergio Hugo Sanchez O.h> int main(void) { cout << "Esto del C++ parece muy facil" << endl.cpp Programa del ejercicio propuesto pag. Para: Universidad Matamoros 17. Para repasar la forma de mostrar mensajes en la pantalla. 2009 */ #include <iostream> using namespace std. Sergio Hugo Sanchez O.[PROGRAMACION I – C++] IDSystems 2011 .2013 Ejercicio 6 – Salida por pantalla Simple programa de salida por pantalla Prog06. return 0. Para repasar la forma de mostrar mensajes en la pantalla. Para: Universidad Matamoros 17.Mayo. } Cual es la diferencia entre este programa y los que se han escrito anteriormente? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 11 .

cout << "Escribe un mensaje con una sola palabra: "<<endl.1 no. cin >> msg. } /*Prog07_17. 2009 */ #include <iostream> using namespace std. cout << msg << endl.cpp Programa para el ejercicio propuesto en pag. 17 Manual C++ por la practica 4. Para: Universidad Matamoros 17. cout << "Escribe un mensaje con una sola palabra: "<<endl. } CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 12 . Para: Universidad Matamoros 17.2013 Ejercicio 7 – Entrada y salida por pantalla Entrada y salida por pantalla: Prog07. int main(void) { char msg[200] .h> int main(void) { char msg[200] . cout << "*********************"<<endl.cpp Programa para el ejercicio propuesto en pag. cin >> msg. 17 Manual C++ por la practica 4.1 no. return 0.cpp /*Prog07_17. 2009 */ #include <iostream. Mayo. Sergio Hugo Sanchez O. cout << msg << endl.[PROGRAMACION I – C++] IDSystems 2011 . cout << "*********************"<<endl. Sergio Hugo Sanchez O. Mayo. 2 Por: Lic. 2 Por: Lic. return 0.

2013 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. int main (void) { CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 13 .h> int global = 5.[PROGRAMACION I – C++] IDSystems 2011 . Mayo.cpp Programa de la pagina 19 Curso C++ a la practica Para conocer los tipos basicos de datos en C Por: Lic. Sergio Hugo Sanchez O Para: Universidad Matamoros 17.cpp /* Prog08_19. 2009 FICHA2 */ #include <iostream.

cout<<"a="<<a<<endl. a=global + (int) x.2 .[PROGRAMACION I – C++] IDSystems 2011 . double y = 2. } CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 14 . return 0.cpp Programa de la pagina 19 Curso C++ a la practica Para conocer los tipos basicos de datos en C Por: Lic. a=global + (int) x. Sergio Hugo Sanchez O Para: Universidad Matamoros 17. int global = 5.3 . cout<<"a="<<a<<endl. return 0. cout << "x+y="<<x+y<<" "<<"a="<<a<<endl. Mayo.3 . 2009 FICHA2 */ #include <iostream> using namespace std. int main (void) { int a= 1.2 . } /* Prog08_19. cout << "x+y="<<x+y<<" "<<"a="<<a<<endl. double x = 1. double x = 1. double y = 2.2013 int a= 1.

z = x+y. cout << "Introduzca el primer numero" << endl. 2009 Ficha2 */ #include <iostream. cout << "Introduzca el segundo numero" << endl. Para: Universidad Valle del Bravo 17. Sergio Hugo Sanchez O. z. y. cin >> x.cpp Programa pag 21 El C++ por la practica Tipos de datos numericos y operaciones simples Por: Lic.cpp /* Prog09_21. return 0. Sergio Hugo Sanchez O. cout << x <<"+"<< y << "="<< z << endl. int main (void) { CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 15 . } /* Prog09_21. cin >> y. Mayo.h> int main (void) { double x.[PROGRAMACION I – C++] IDSystems 2011 . 2009 Ficha2 */ #include <iostream> using namespace std. Mayo. Para: Universidad Valle del Bravo 17.2013 INSTRUCCION Que tipos de datos estamos declarando? ACCION 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 Programa pag 21 El C++ por la practica Tipos de datos numericos y operaciones simples Por: Lic.

return 0.2013 double x. y. cin >> x. } Realiza el pseudocodigo de este programa CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 16 . cin >> y.[PROGRAMACION I – C++] IDSystems 2011 . z = x+y. z. cout << "Introduzca el segundo numero" << endl. cout << x <<"+"<< y << "="<< z << endl. cout << "Introduzca el primer numero" << endl.

// a=a+b.h> int main (void) { char a. //declaracion de la variable tipo caracter char b. Para: Universidad Matamoros 17. Sergio Hugo Sanchez O.[PROGRAMACION I – C++] IDSystems 2011 . cout << "Introduzca el segundo caracter: " << endl. // a=a+b. cout << "Introduzca el primer caracter: " << endl.Concatenacion Suma de caracteres. a+=b. cout << "Introduzca el primer caracter: " << endl. Mayo. cin >> b. a+=b.} /*Prog11. Mayo. 2009 Ficha 2 */ #include <iostream. tambien llamada CONCATENACION. 2009 Ficha 2 */ #include <iostream> using namespace std. Para: Universidad Matamoros 17. //declaracion de la variable tipo caracter char b. Prog11.cpp Programa que permite la suma (concatenacion) de 2 caracteres. suma o concatenacion de caracteres cout << "El resultado " << a. cin >> a.2013 Ejercicio 10 . return 0. Por: Lic. Por: Lic.} CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 17 . return 0. cin >> b. cin >> a. Sergio Hugo Sanchez O.cpp Programa que permite la suma (concatenacion) de 2 caracteres. suma o concatenacion de caracteres cout << "El resultado " << a. int main (void) { char a. cout << "Introduzca el segundo caracter: " << endl.cpp /*Prog11.

} return 0.} else {cout << "i es mayor que j"<<endl. if (i>j) {cout << "i es mejor que j"<<endl. if (i>j) {cout << "i es mejor que j"<<endl.} return 0. } CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 18 .2013 Responde a lo siguiente: ¿Qué es la concatenación? ¿Cómo se realiza la concatenación? Ejercicio 11 – If…Else Ejercicio para usar la sentencia IF/ELSE Prog12.[PROGRAMACION I – C++] IDSystems 2011 . } /* Sentencias tipo if/else. int j = 2. Anidamientos y operaciones logicas */ #include <iostream> using namespace std.cpp /* Sentencias tipo if/else.} else {cout << "i es mayor que j"<<endl. int j = 2.h> int main () { int i = 1. Anidamientos y operaciones logicas */ #include <iostream. int main () { int i = 1.

b. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 19 .cpp /* Pregunta dos numoers. int c.h> int main() { double a. if (c==1) {cout << "El resultado es: " << a+b<<endl.[PROGRAMACION I – C++] IDSystems 2011 . que operacion deseas hacer y muestra el resultado */ #include <iostream. entrada salida por consola y condicional Prog13.} else {cout <<"El resultado es: " <<a*b<<endl. cout << "Que operacion deseas hacer. cin >> b. cout << "Introduce el segundo numero " << endl. cin >> c.2013 Explica el comando de IF Ejercicio 12 – Operaciones condicionales Ejercicio con operaciones.} return 0. cout << "Introduce el primer numero " << endl. cin >> a. 1(suma). 2(Multiplicacion)? " << endl.

cin >> a. cout << "Introduce el primer numero " << endl.} else {cout <<"El resultado es: " <<a*b<<endl. 2(Multiplicacion)? " << endl. } CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 20 .} return 0.[PROGRAMACION I – C++] IDSystems 2011 .2013 } /* Pregunta dos numeros. b. cin >> b. cout << "Que operacion deseas hacer. int main() { double a. que operacion deseas hacer y muestra el resultado */ #include <iostream> using namespace std. if (c==1) {cout << "El resultado es: " << a+b<<endl. int c. cout << "Introduce el segundo numero " << endl. cin >> c. 1(suma).

b.cpp /*Calcular el area de diferentes poligonos */ #include <iostream. cout << "¿que area deseas calcular)" << endl.. cin >>a.ELSE anidados Prog14. area=a*a. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 21 . triangulo (3)" << endl.2013 Realiza el pseudocódigo del programa anterior Ejercicio 13 – IF…ELSE anidados Ejercicio mas complejo de IF.. cin >>a. double area.} else if (figura==2) { cout << "Valor del lado menor = ".[PROGRAMACION I – C++] IDSystems 2011 . int figura. if (figura==1) { cout << "valor del lado=". cout << "Figura= cuadrado (1). rectangulo (2).h> int main() { double a. cin >> figura.

cin >> b. area=0. cin >> b.} else { cout << "figura equivocada" << endl. cout << "¿que area deseas calcular)" << endl.} else if (figura==3) { cout <<"Valor de la base =". cin >> figura. rectangulo (2). cout << "Valor del lado mayor = " .} else { cout << "figura equivocada" << endl.0.[PROGRAMACION I – C++] IDSystems 2011 .} else if (figura==2) { cout << "Valor del lado menor = ". cout << "Figura= cuadrado (1). cin >> b. if (figura==1) { cout << "valor del lado=". area=a*a.} cout <<"El area de la figura es= "<<area<<endl. cin >> a. cout << "Valor de la altura =". return 0. double area. cin >> b. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 22 . int main() { double a. b. triangulo (3)" << endl. area = a*b. int figura. cout << "Valor de la altura =". cin >> a. area=a*b/2.0. } /*Calcular el area de diferentes poligonos */ #include <iostream> using namespace std. cin >>a. cin >>a.} else if (figura==3) { cout <<"Valor de la base =". area=a*b/2. area=0.2013 cout << "Valor del lado mayor = " .} cout <<"El area de la figura es= "<<area<<endl. area = a*b.

[PROGRAMACION I – C++] IDSystems 2011 .2013 return 0. } ACCION ¿Qué son las condiciones anidadas? COMANDO ¿Cómo se escriben las condiciones anidadas? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 23 .

return 1. cout << "Introduzca la dimension del vector" <<endl. MyReport.[PROGRAMACION I – C++] IDSystems 2011 . matrices. ofstream MyReport("resultado. MyReport.h> #include <fstream. se escribe un texto de salida mediante sentencia logica Aqui veremos otras librerias de C. MyReport << " *********************************** fin"<<endl. MyReport << " ERROR: dimesion del vector debe ser menor de " << MAX_SIZE <<endl. } cout << "Vamos a trabajar con un vector de " << size << " componentes"<< endl. creacion de archivo de texto. se escribe un texto de salida mediante sentencia CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 24 .cpp /* Se define la dimesion de un vector mediante un entero. MyReport << " Vector de " << size << " componentes " <<endl.ELSE. MyReport << " *********************************** fin"<<endl. return 0.h> #define MAX_SIZE 25 int main () { int size. } /* Se define la dimesion de un vector mediante un entero.. el concepto de matriz se restringe de momento a un vector.. Nuevos comandos Prog15. MyReport << " *********************************** inicio" << endl. como se crean los vectores y el uso de un archivo de texto */ #include <iostream.close(). el concepto de matriz se restringe de momento a un vector. entrada y salida por pantalla. if (size > MAX_SIZE) { cerr << "Error.close(). tamaño demasiado grande" << endl. mas de 1 libreria.txt").2013 Ejercicio 14 – Salida a un archivo externo Programa mas complejo que involucra: IF. cin >> size. MyReport << " *********************************** inicio" << endl.

cout << "Introduzca la dimension del vector" <<endl. MyReport << " *********************************** inicio" << endl.[PROGRAMACION I – C++] IDSystems 2011 . MyReport << " *********************************** fin"<<endl. return 0.2013 logica Aqui veremos otras librerias de C. MyReport. tamaño demasiado grande" << endl. ofstream MyReport("resultado.close(). } cout << "Vamos a trabajar con un vector de " << size << " componentes"<< endl. MyReport << " ERROR: dimesion del vector debe ser menor de " << MAX_SIZE <<endl. MyReport << " *********************************** fin"<<endl. } Indica lo siguiente: ¿Qué librerías estamos incorporando al programa? ¿Qué es lo que hace el programa? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 25 . MyReport << " Vector de " << size << " componentes " <<endl. MyReport << " *********************************** inicio" << endl. cin >> size.close(). como se crean los vectores y el uso de un archivo de texto */ #include <iostream> #include <fstream> using namespace std. if (size > MAX_SIZE) { cerr << "Error. #define MAX_SIZE 25 int main () { int size. MyReport.txt"). return 1.

2013 ¿Cuáles son los comandos de archivo que se presentan? Realiza el pseudocódigo correspondiente: CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 26 .[PROGRAMACION I – C++] IDSystems 2011 .

cout << "Introduzca el segundo numero"<<endl. b.ELSE Prog16. break.h> int main () { double a. default: cout << "el resultado es:"<<a*b<<endl.cpp /* Uso de switch en lugar de IF Igual al prog13 */ #include <iostream. cin >> a. cin >> b. int c. default: cout << "el resultado es:"<<a*b<<endl. cin>>c. b. cout << "Que operacion deseas hacer: 1(suma) 2(Multiplicacion)"<<endl.. cin >> b..[PROGRAMACION I – C++] IDSystems 2011 . cout << "Que operacion deseas hacer: 1(suma) 2(Multiplicacion)"<<endl. cout << "Introduzca el primer numero"<<endl. variacion del primer programa IF. switch (c) { case 1: cout << "el resultado es:"<<a+b<<endl. cin>>c. int c. } CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 27 . } return 0. } /* Uso de switch en lugar de IF Igual al prog13 */ #include <iostream> using namespace std.Switch Programa de ejemplo para el Switch. break. cout << "Introduzca el primer numero"<<endl. cout << "Introduzca el segundo numero"<<endl. } return 0. cin >> a.2013 Ejercicio 15 . switch (c) { case 1: cout << "el resultado es:"<<a+b<<endl. break. int main () { double a. break.

cin >> figura. case 2: cout <<"Valor de la base =". cout << "Valor de la altura =".h> int main() { double a. break. int figura. cin >>a. triangulo (2)" << endl.2013 Menciona las diferencias entre la instrucción Switch y la instrucción IF Ejercicio 16 – Area de poligonos con Switch Variacion de operaciones con poligonos usando switch en lugar de IF. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 28 . cin >> b. break ..cpp /*Calcular el area de diferentes poligonos usando Switch*/ #include <iostream. b. cin >> figura.0. la figura no tiene area"<<endl. area=0. else cerr <<"error. int figura. default: cout << "figura equivocada" << endl. } if (area) cout <<"El area de la figura es= "<<area<<endl. area=a*b/2. switch (figura) { case 1: cout << "Valor del lado menor = ". break. area. else Prog17. return 0. cout << "Valor del lado mayor = " . cout << "Figura= rectangulo (1). area = a*b. triangulo (2)" << endl.[PROGRAMACION I – C++] IDSystems 2011 . cout << "¿que area deseas calcular)" << endl. cout << "Figura= rectangulo (1). cout << "¿que area deseas calcular)" << endl. } /*Calcular el area de diferentes poligonos usando Switch*/ #include <iostream> using namespace std.. int main() { double a. cin >>a. area. switch (figura) { case 1: cout << "Valor del lado menor = ". cin >> a. cin >> b. b.

la figura no tiene area"<<endl. default: cout << "figura equivocada" << endl.[PROGRAMACION I – C++] IDSystems 2011 . cin >> a. cin >> b. case 2: cout <<"Valor de la base =". cin >> b. break. } if (area) cout <<"El area de la figura es= "<<area<<endl.0. cout << "Valor de la altura =". break . ya que es una variación del ejercicio de polígonos usando el IF…else CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 29 . area=0. return 0. else cerr <<"error. area=a*b/2. } Prueba a hacer este programa sin ver el código aquí presentado. area = a*b.2013 cout << "Valor del lado mayor = " . break.

matrices.2013 PARTE II En esta segunda parte se incluyen ejemplos para realizar ciclos. Ademas de incorporar funciones. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 30 . y ejemplos de algunos juegos los cuales preparan al estudiante en la logica de la programacion.[PROGRAMACION I – C++] IDSystems 2011 .

// 11/09/2000 Salvador Pozo #include <iostream> // librería para uso de cout using namespace std. int main() // función principal { int i. // muestra el número if(i % 3 == 0) cout << " es múltiplo de 3". // 11/09/2000 Salvador Pozo #include <iostream.[PROGRAMACION I – C++] IDSystems 2011 . indicando para cada uno // si es o no múltipo de 3.cpp // Este programa muestra una lista de números. i++) // bucle for de 1 a 20 << i.2013 Ejercicio 17 – Ciclo For Primero haremos uno fácil. Escribir un programa que muestre una lista de números del 1 al 20. } // Este programa muestra una lista de números. // variable para bucle for(i = 1. // o no lo es cout << endl.h> // librería para uso de cout int main() // función principal { int i. // el resto de 0 cout << " no es múltiplo de 3". // el resto de dividir por 3 es 0 else cout << " no es múltiplo de 3". { cout if(i dividir por 3 es else cout } i <= 20. // cambio de línea } system("pause"). return 0. i <= 20. // muestra el número % 3 == 0) cout << " es múltiplo de 3". indicando para cada uno // si es o no múltipo de 3. // o no lo es << endl. } CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 31 . Prog19. // cambio de línea DevC++ return 0. indicando a la derecha de cada uno si es divisible por 3 o no. // variable para bucle for(i = 1. i++) // bucle for de 1 a 20 { cout << i.

Observa el uso de los comentarios. . actualizaciones o correcciones deberías incluir una explicación de cada una de ellas y la fecha en que se hicieron. y acostúmbrate a incluirlos en todos tus programas. y la mayoría de las veces no lo harás. añadiendo también el nombre del autor y la fecha en que se escribió. probablemente sea demasiado tarde.2013 El enunciado es el típico de un problema que puede ser solucionado con un bucle "for". Una buena documentación te ahorrará mucho tiempo y te evitará muchos dolores de cabeza. Si lo dejas para cuando has terminado el código.[PROGRAMACION I – C++] IDSystems 2011 . Acostúmbrate también a escribir el código al mismo tiempo que los comentarios. Además.-) También es una buena costumbre incluir al principio del programa un comentario extenso que incluya el enunciado del problema. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 32 . cuando hagas revisiones.

indicando para cada uno // si es o no múltipo de 3.2013 Ejercicio 18 – Ciclo while Escribir el programa anterior.[PROGRAMACION I – C++] IDSystems 2011 . // o no lo es cout << endl. pero usando una función para verificar si el número es divisible por tres. Prog20.h> // librería para uso de cout // Prototipos: bool MultiploDeTres(int n). int main() // función principal { int i = 1. // cambio de línea i++. else return true. // muestra el número if(MultiploDeTres(i)) cout << " es múltiplo de 3". // Prototipos: bool MultiploDeTres(int n). // el numero es múltiplo de 3 CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 33 . #include <iostream. #include <iostream> // librería para uso de cout using namespace std. // variable para bucle while(i <= 20) // bucle hasta i igual a 20 { cout << i. } // Este programa muestra una lista de números. int main() // función principal { int i = 1.cpp // Este programa muestra una lista de números. // el numero es múltiplo de 3 else cout << " no es múltiplo de 3". } } // Función que devuelve verdadero si el parámetro 'n' en // múltiplo de tres y falso si no lo es bool MultiploDeTres(int n) { if(n % 3) return false. y un bucle de tipo "while". // variable para bucle while(i <= 20) // bucle hasta i igual a 20 { cout << i. indicando para cada uno // si es o no múltipo de 3. // muestra el número if(MultiploDeTres(i)) cout << " es múltiplo de 3".

fíjate en que la definición de la función va precedida de un comentario que explica lo que hace. Esto también es muy recomendable.[PROGRAMACION I – C++] IDSystems 2011 ... else return true. // cambio de línea i++. Observa que al incluir la función. // o no lo es cout << endl. // cambio de línea CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 34 .2013 else cout << " no es múltiplo de 3". con el nombre adecuado.cpp // Este programa muestra una lista de números // de este tipo: // 1 // 1 2 // 1 2 3 // . j++) // bucle desde 1 a i cout << i << " ". al declarar la variable i le hemos dado un valor inicial 1... Por último. } Comprueba cómo hemos declarado el prototipo de la función "MultiploDeTres". Ejercicio 19 – Ciclos anidados Escribir un programa que muestre una salida de 20 líneas de este tipo: 1 12 123 1234 . } system("pause"). // muestra el número cout << endl. de hecho prácticamente sobra el comentario. } // Función que devuelve verdadero si el parámetro 'n' en // múltiplo de tres y falso si no lo es bool MultiploDeTres(int n) { if(n % 3) return false. Además. Prog21. j. i++) // bucle hasta i igual a 20 { for(j = 1. el código queda mucho más legible. j <= i. // variables para bucles for(i = 1. i <= 20. #include <iostream.h> // librería para uso de cout int main() // función principal { int i.

Ejercicio 20 – Ciclo While Escribir un programa que muestre una salida con la siguiente secuencia numérica: 1. alternativamente..2013 } return 0.[PROGRAMACION I – C++] IDSystems 2011 . El bucle interior. 23 La secuencia debe detenerse al llegar al 23. El bucle exterior incluye. i <= 20. de no ser así. // cambio de línea } system("pause"). la orden de cambio de línea. // muestra el número cout << endl. 7.while". Además. pero ilustra el uso de los bucles "do. La secuencia se obtiene partiendo de 1 y sumando y restando 4 y 2. que usa "j" como variable toma valores entre 1 e "i". #include <iostream> // librería para uso de cout using namespace std. . 9.. return 0. la salida no tendría la forma deseada. j <= i. 3. 7. de otro modo los números aparecerían amontonados. después de cada número se imprime un espacio en blanco. // variables para bucles for(i = 1.. int main() // función principal { int i. i++) // bucle hasta i igual a 20 { for(j = 1.. 5. } Este ejemplo ilustra el uso de bucles anidados.. Veamos cómo resolverlo: CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 35 . además del bucle interior. El enunciado es rebuscado... 5. j. j++) // bucle desde 1 a i cout << i << " ". } // // // // // // Este programa muestra una lista de números de este tipo: 1 1 2 1 2 3 .

separadores if(sumar) i += 4.cpp /* Prog22 */ #include <iostream. // variable para bucles bool sumar = true.. // Puntuación.". // Cambia la siguiente operación } while(!terminado).h> int main() { int i = 1. } /* Prog22 */ #include <iostream> using namespace std. // // CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 36 . // Actualiza condición de fin if(terminado) cout << ". // muestra el valor en pantalla terminado = (i == 23). // Cambia la siguiente operación } while(!terminado).. else i -= 2. // función principal separadores if(sumar) i += 4. // Cambio de línea // // // Puntuación. // Se ha alcanzado la condición de fin do { // Hacer cout << i.. // Siguiente operación es sumar o restar bool terminado = false. // Siguiente operación es sumar o restar bool terminado = false. ". mientras no se termine cout << endl. // muestra el valor en pantalla terminado = (i == 23). // . else cout << ". mientras no se termine cout << endl. Calcula siguiente elemento sumar = !sumar. return 0. // variable para bucles bool sumar = true.// Calcula siguiente elemento sumar = !sumar. else cout << ". ". . Se ha alcanzado la condición de fin do { // Hacer cout << i.[PROGRAMACION I – C++] IDSystems 2011 .". Actualiza condición de fin if(terminado) cout << ".2013 Prog21. int main() // función principal { int i = 1.. else i -= 2.

Pero que por lo demas no son dificiles de entender. nuevas librerias y comandos (sentencias).Ahora lee las paginas de la 32 a la 40 del manual el C++ por la practica y realiza los ejercicios propuestos ahí para enviarlos al profesor.Juego del Granjero Aqui vamos a hacer un alto o un parentesis en los temas que llevamos visto. 3. para mostrar un ejemplo mas practico y divertido sobre la programacion y sobre C++. http://www. Este programa incluye algunas cosas que no se han visto hasta este momento en el curso. Como estructuras. No olvides guardarlo o invitar al profesor con tu registro para que lo evalue... Deberas realizar el algoritmo.gliffy.. funciones.[PROGRAMACION I – C++] IDSystems 2011 . 1. 5. Y JUGARLO. NOTA: Puedes usar el siguiente programa ONLINE y gratuito para hacer tu diagrama de flujo. Nada mejor que checar la logica de un programa.2013 // Cambio de línea system("pause"). Deberas ejecutarlo. Ejercicio 21 . Opcial (para obtener mas puntos) realizar el diagrama de flujo del juego. consulta la ayuda del editor o en la wikipedia. 4. return 0.com/ He aqui el codigo: CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 37 . LINEA X LINEA del codigo del juego indicando que es lo que crees que hace.. asi como ver nuevas instrucciones que con un juego. Deberas teclear todo el codigo en C++ 2. Si tienes una duda sobre alguna instruccion. } PRACTICA 1 1.

[PROGRAMACION I – C++] IDSystems 2011 - 2013

granjero.cpp /* * G R A N J E R O * * El problema del granjero cruzando el rio * */ #include <stdio.h> #include <stdlib.h> #include <conio.h> #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; /* * 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; el banco izquierdo int move; movimiento requerido int trips; char reply[NBYTES]; // variable generica bitfield

//0 significa que el granjero esta en // el codigo de la tecla para el // numero de viajes a traves del rio //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);

CUADERNO DE EJERCICIOS Y PRACTICAS C++

Página 38

[PROGRAMACION I – C++] IDSystems 2011 - 2013
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 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 */ int GetMove(int bank) { int key;

CUADERNO DE EJERCICIOS Y PRACTICAS C++

Página 39

[PROGRAMACION I – C++] IDSystems 2011 - 2013

/* * 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 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 */ int CheckMap(int bank) {

CUADERNO DE EJERCICIOS Y PRACTICAS C++

Página 40

} /* * MadeIt() * * Determinar si todos los elementos fueron satisfactoriamente * transportados al lado este del rio */ int CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 41 . ec. if (Player.wc. else wc = 'G'. if (Player. if (Player. return (status). else wc = 'z'. ec).zorra) ec = 'z'.gallina != bank) status = 1. ec). printf("\n%c ^^^^^^ %c\n".2013 int status = 0. if (Player. printf("\n%c ^^^^^^ %c\n". printf("\n%c ^^^^^^ %c\n".maiz) ec = 'm'.[PROGRAMACION I – C++] IDSystems 2011 .wc.zorra != bank && Player. if (Player. /* La gallina */ wc = ec = ' '. ec).wc. /* El maiz */ wc = ec = ' '. else wc = 'g'.gallina) ec = 'g'. /* La zorra */ wc = ec = ' '. if (Player. else wc = 'm'. /* El granjero */ wc = ec = ' '. } /* * PrintMap() * * Desplegar el mapa actual mostrando las posiciones * del granjero y los demas elementos */ void PrintMap() { char wc.gallina !=bank && Player.maiz != bank) status = 1. printf("\n%c ^^^^^^ %c\n".granjero) ec = 'G'. ec).wc.

gallina == Player. has perdido. if (Player.gallina && Player. exit(1).maiz) printf("La gallina se comio el maiz.2013 MadeIt() { int status. return (status). unsigned zorra : 1.granjero && Player.\n"). int GetMove(int). }. if (Player. status =0. struct player_st Player. /* * Prototipos de funcion */ void Instruct(void).h> <conio. } /* * G R A N J E R O * * El problema del granjero cruzando el rio * */ #include #include #include #include <stdio. } /* * Cuando pierdes */ void YouLose() { printf("Lo sentimos.maiz) status = 1.h> <ctype. ").zorra == Player.gallina) printf("La zorra se comio a la gallina.\n"). unsigned maiz : 1.[PROGRAMACION I – C++] IDSystems 2011 . // variable generica bitfield CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 42 . else if (Player.h> #define BELL 7 #define K_ESC 27 #define NBYTES 80 /* * Estructura de datos de los jugadores (bitfield) */ struct player_st { unsigned granjero : 1. unsigned gallina : 1.zorra && Player.h> <stdlib.

} /* * Instruct() * * Despliega las reglas del juego * */ void Instruct() { printf("**************************** INSTRUCCIONES ********************************** \n"). bank = Player. //0 significa que el granjero esta en // el codigo de la tecla para el // numero de viajes a traves del rio //respuesta del usuario /* * Poner las condiciones iniciales. } printf("Felicidades! Has llegado a salvo!\n"). void PrintMap(void). system("pause"). char reply[NBYTES].[PROGRAMACION I – C++] IDSystems 2011 . int main() { int bank. printf("Necesita instrucciones? (Pulse S o N): ").\n\n"). if (reply[0] == 'S' || reply[0] == 's' ) Instruct(). DoMove(move). trips).gallina = Player. ++trips. gets(reply). el banco izquierdo int move. if (CheckMap(bank)) YouLose().maiz = 0. return (0). printf("Un granjero debe cruzar un rio en un bote.granjero. printf("El numero de viajes fueron %d\n". movimiento requerido int trips.zorra = Player. bank = Player. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 43 . int MadeIt(void).2013 void DoMove(int). void YouLose(void). if (MadeIt()) break. PrintMap(). printf("\n============= GRANJERO =================\n"). trips = 0.granjero. while (1) { move = GetMove(bank). PrintMap(). printf("Presione ESC en cualquier tiempo para salir. una gallina y un balde de maiz.granjero = Player. printf("El tiene una zorra.\n"). int CheckMap(int).\n"). Todos los elementos estan en el * banco oeste y no se han hecho ningun viaje */ Player.

else if (key == 'G' && Player. else if (key == K_ESC) { putchar('\n').2013 printf("El granjero solo puede tomar una cosa a la vez en el bote. while (1) { key = toupper(getch()). else if (key == 'Z' && Player. los animales se portan bien. if (key == 'S') break. else if (key == 'M' && Player.\n"). printf("Tampoco puede dejar a la gallina con el maiz. printf("al lado este con su equipaje a cuestas mientras hace el \n"). */ printf("\nComandos: S(olo) ").maiz == bank) printf("M(aiz) ").\n"). printf("posible numero de viajes.[PROGRAMACION I – C++] IDSystems 2011 .\n"). return (key). /* * Pregunte al usuario solo con los comandos disponibles. } else putchar(BELL). printf(":").zorra == bank) printf("Z(orra) ").gallina == bank) printf("G(allina) "). if (Player. printf("La zorra no se puede quedar sola con la gallina porque se la come.zorra == bank) break. system("pause").maiz == bank ) break. Intente llegar desde el lado oeste del rio \n"). exit (0). // mal comando } putchar('\n'). if (Player.gallina == bank) break.\n"). printf("Usted es el granjero. } /* * * GetMove() * Hacer los movimientos */ int GetMove(int bank) { int key. printf("Cuando el granjero esta presente. } void CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 44 .\n"). if (Player.

gallina != bank) status = 1. if (Player.granjero) ec = 'G'. ec. /* La zorra */ wc = ec = ' '. case 'M': Player.maiz. break.[PROGRAMACION I – C++] IDSystems 2011 . printf("\n%c ^^^^^^ %c\n". /* El granjero */ wc = ec = ' '. return (status).wc. if (Player.zorra != bank && Player.gallina !=bank && Player. break.granjero = !Player.maiz = !Player.zorra.maiz != bank) status = 1. ec). } Player. if (Player. else wc = 'G'. } /* * CheckMap() * * Verificar que ningun elemento hostil se quedo solo * Regresar 1 si lo estan o 0 si no */ int CheckMap(int bank) { int status = 0. else CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 45 . case 'G': Player. break.granjero. case 'Z': Player.gallina.zorra = !Player.zorra) ec = 'z'.2013 DoMove(int move) { switch (move) { case 'S': break.gallina = !Player. } /* * PrintMap() * * Desplegar el mapa actual mostrando las posiciones * del granjero y los demas elementos */ void PrintMap() { char wc. if (Player.

if (Player.maiz) status = 1. ec).gallina && Player. has perdido.zorra && Player. printf("\n%c ^^^^^^ %c\n".[PROGRAMACION I – C++] IDSystems 2011 . } CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 46 .wc.granjero && Player. ec). printf("\n%c ^^^^^^ %c\n". if (Player.wc. else wc = 'm'. printf("\n%c ^^^^^^ %c\n".\n").gallina) ec = 'g'. ").zorra == Player.\n"). system("pause"). status =0. } /* * MadeIt() * * Determinar si todos los elementos fueron satisfactoriamente * transportados al lado este del rio */ int MadeIt() { int status. else if (Player.maiz) printf("La gallina se comio el maiz.2013 wc = 'z'.gallina == Player. else wc = 'g'.gallina) printf("La zorra se comio a la gallina. if (Player. ec). exit(1). } /* * Cuando pierdes */ void YouLose() { printf("Lo sentimos. if (Player. /* La gallina */ wc = ec = ' '.maiz) ec = 'm'. return (status). /* El maiz */ wc = ec = ' '.wc.

[PROGRAMACION I – C++] IDSystems 2011 .2013 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? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 47 .

Estos dos archivos deberas incluirlos donde este tu proyecto de programa. Sin embargo. Ve a la seccion de Manuales y Video y deberas bajar CONSOLA. deberas incluir el archivo CONSOLA. Ademas. 4. lo haras con " ". Como habiamos visto en la primer leccion.[PROGRAMACION I – C++] IDSystems 2011 . hay que seguir algunas reglas para que estos juegos funcionen y apliques estas nuevas instrucciones que generalmente son utiles en los juegos. es importante hacer la siguiente aclaracion: Estos juegos fueron adaptados de otras versiones de compilador C++. no contiene las mismas instrucciones. Uno bajo HEADER y el otro bajo RESOURCES. 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. hay una libreria llamada CONIO. De entre ellas. ya que. algunas setenciones no se recomiendan en su uso porque precisamente no son librerias estandar que puedan ser emuladas facilmente. INSTRUCCIONES ANTES DE EJECUTAR LOS PROGRAMAS. vamos a ver 3 juegos mas.H y CONSOLA. preguntale a tu profesor. 1. Cualquier duda. que si bien existen en la version del compilador de Microsoft que estamos usando.H y STDLIB. Sera muy importante que primero crees un proyecto de programa. 3. Por lo tanto. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 48 . Sin embargo. porque deberas anexar estos dos archivos. otro muy usado es el Turbo C++ o Borland C++.Juegos Para terminar de ver los ejemplos acerca de las condicionales y los ciclos. Asi que habra que seguir un par de instrucciones para que estos programas funcionen de manera correcta. estaras indicando que sera de manera local. 5.2013 Ejercicio 22 .H.LIB 2. y ademas del Microsot Visual C++. 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).H al inicio de tu programa pero veras que en lugar de <>. hay varios compiladores de C++.

h> #include <conio. for (i = 1. else cout<<"Es bajo\n". i++){ cin>>b. //randomize(). a = 1 + rand() % 100.h> #include <stdlib. if (b == a) { cout<<"Muy bien. } else if (b>a) cout<<"Es alto\n". break. cout<<"Adivina el numero que estoy pensando\n". break. has acertado en "<<i<<" oportunidades \n". i++){ cin>>b. i < 9. //randomize(). prog22a_adivinanzas. system("cls"). srand(time(0)). b. La computadora "pensara" un numero entre 1 y 100 y tu deberas adivinarlo en maximo 9 oportunidades. el numero es: "<<a <<endl. //a=rand()%100. //clrscr().2013 Ejercicio 22a – Juego de Adivinanzas El siguiente es un pequeño juego de adivinanzas.cpp #include <iostream. if (b == a) { cout<<"Muy bien.h> void main(){ int i.h> #include <time. int main(){ int i. for (i = 1. has acertado en "<<i<<" oportunidades \n". srand(time(0)).[PROGRAMACION I – C++] IDSystems 2011 . a = 1 + rand() % 100. } } #include <iostream> #include <conio. } CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 49 . system("cls"). cout<<"A D I V I N A N Z A S\n". cout<<"Adivina el numero que estoy pensando\n".h> #include <time. a. b. a.h> #include <stdlib. //a=rand()%100. cout<<"A D I V I N A N Z A S\n". i < 9.h> using namespace std. } if (b != a) { cout<<"Lo siento. //clrscr().

Ademas de nuevas instrucciones que no habiamos visto hasta el momento. } system("pause"). Deberas descubrirlas y ver que es lo que hacen. } if (b != a) { cout<<"Lo siento. contadores y generacion de numeros aleatorios. return 0. else cout<<"Es bajo\n". el numero es: "<<a <<endl. Te servira para repasar las instrucciones de condicion. } Aqui veras que se incluyen nuevas librerias. REALIZA: El pseudocódigo El diagrama de flujo CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 50 .[PROGRAMACION I – C++] IDSystems 2011 .2013 else if (b>a) cout<<"Es alto\n".

"Frambuesa"). prog22b_tragamonedas.h" void Frutas(int col). strcpy(fruta[1]. for (cuenta =1. c = 1 + rand() % 5. system("cls"). "Mango"). frutas[cuenta] = a. */ #include #include #include #include #include #include #include <iostream. a. strcpy(fruta[4]. srand(time(0)). cuenta++) { columna += 20. //clrscr(). b..h> <conio. columna = 0. El clasico tragamonedas.h> <dos. int i.h> <stdlib. "Fresa"). Frutas(columna).cpp /* progb22b_tragamonedas. void main() { //randomize(). char fruta[10][10]. strcpy(fruta[2]. "Piña"). "Melon"). } if (frutas[1]==frutas[2] && frutas[1]==frutas[3]) { gotoxy(24.h> "consola.[PROGRAMACION I – C++] IDSystems 2011 . // b = random(5). "Naranja"). } g a n a d o CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 51 .. // c = random(5). // for seed based on current time strcpy(fruta[0]. cout<<"--. Si le "atinas" a que las 3 columnas contengan lo mismo. un pequeño juego muy popular en las vegas.F e l i c i d a d e s h a s !!!". "Durazno").Tragamonedas Ahora. cuenta<=3. c. strcpy(fruta[9]. strcpy(fruta[8]. "Pera"). el cual cada vez que lo ejecutes generara aleatoriamente las columnas con los elementos.2013 Ejercicio 22b . int frutas[4].cpp JUEGO: El clasico de las Vegas. YA GANASTE!. int cuenta.20). strcpy(fruta[5]. "Melocoton"). b = 1 + rand() % 5. strcpy(fruta[7].h> <time. strcpy(fruta[6]. strcpy(fruta[3]. m. "Sandia").h> <string.

char fruta[10][10]. i ). i ). "Piña"). strcpy(fruta[4]. strcpy(fruta[2].h> <dos.2013 if (frutas[1]==frutas[2] || frutas[1]==frutas[3] || frutas[2]==frutas[3]) { gotoxy(24. strcpy(fruta[1]. te falto uno !!!". "Naranja"). void gotoxy(short x. strcpy(fruta[7]. y}.h> <string. "Frambuesa"). a. strcpy(fruta[0]. "Pera"). //Defines gotoxy() for ANSI C compilers. pos). cout<<fruta[a]. int frutas[4]. cout<<" "<<endl. system("cls"). } void Frutas(int col). //clrscr(). // for seed based on current time "Melocoton"). "Mango"). columna = 0. //srand(time(0). i<10.h> using namespace std. cout<<" . } } //for seed based on current time 9. gotoxy(col. i++){ //a=random(10). int main() { //randomize(). strcpy(fruta[5]. int cuenta. delay(100). cout<<"=== Ya casi ganas. srand(time(0)). "Fresa").h> <windows. b.20).".cpp JUEGO: El clasico de las Vegas. srand(time(0)). m. } void Frutas(int col){ for (i=0. SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE).h> <time. a = 1 + rand() % gotoxy(col. "Sandia"). gotoxy(col. strcpy(fruta[6]. /* progb22b_tragamonedas.h> <stdlib. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 52 . int i. i ). } getch(). strcpy(fruta[8]. MOD: 18-Feb-2013 para adecuarlo a DevC++*/ #include #include #include #include #include #include #include <iostream> <conio.[PROGRAMACION I – C++] IDSystems 2011 . c. "Melon"). strcpy(fruta[3]. short y) { COORD pos = {x.

frutas[cuenta] = a. te falto uno !!!". } if (frutas[1]==frutas[2] || frutas[1]==frutas[3] || frutas[2]==frutas[3]) { gotoxy(24. } if (frutas[1]==frutas[2] && frutas[1]==frutas[3]) { gotoxy(24. i ).[PROGRAMACION I – C++] IDSystems 2011 . } //getch(). cout<<" . i ). cuenta<=3. gotoxy(col. i ). } void Frutas(int col){ for (i=0. a = 1 + rand() % gotoxy(col. return 0. } } g a n a d o //for seed based on current time 9. gotoxy(col. cout<<"=== Ya casi ganas. //srand(time(0). i++){ //a=random(10).". i<10. Deberas realizar: 1) El codigo 2) El diagrama de flujo Ademas indica lo siguiente: ¿Cuáles son las librerías que incorpora el programa y que hacen cada una? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 53 . b = 1 + rand() % 5. Sleep(100). for (cuenta =1. Aqui repasaras sobre los ciclos y las condicionales. srand(time(0)). cout<<fruta[a].2013 strcpy(fruta[9].20).F e l i c i d a d e s h a s !!!". // c = random(5). cout<<"--. Frutas(columna). "Durazno"). c = 1 + rand() % 5. cuenta++) { columna += 20. cout<<""<<endl. // b = random(5).10). system("pause"). Asi con una pequeña funcion.

NOTA: Recordar que necesitamos el archivo CONSOLA.h> #include <dos.h> #include "consola.h" void derecha(int fila).LIB en el mismo directorio del programa para compilar */ #include <iostream.h> #include <math.[PROGRAMACION I – C++] IDSystems 2011 .cpp Programa que muestra un supuesto virus en la pantalla Por: LSC Sergio Hugo Sanchez.h> #include <conio. prog22c_pseudovirus.2013 ¿Qué tipos de datos estamos declarando y como? ¿Qué funciones de C++ nuevas has descubierto en el programa? Ejercicio 22c – Pseudovirus Quieres hacer una pequeña demostracion de un virus? Aqui tienes la oportunidad mientras practicas los ciclos.cpp /* Pseudovirus.H y CONSOLA. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 54 .

fila).[PROGRAMACION I – C++] IDSystems 2011 . for (j=1. i<=25. Normal * void final() { clrscr(). cout<<" * * ** *". gotoxy(20. for (i=1. gotoxy(20. } // cambiar * por el codigo ASCII 176 (Si usas NOTEPAD++).12). 9).fila).11). else izquierda(i). Normal @ void derecha(int fila) { for (col=1.i. gotoxy(20. gotoxy(col. r. gotoxy(20. } final(). } } void izquierda(int fila) { for (col=80. cout<<" * gotoxy(20. col>=74. void final(). j++) cout<<"---Auxilio!!! un virus al ataque al sistema ". cout<<"|". * * * *". col--) { delay(r). cout<<" * * * * *". cout<<"||||||". gotoxy(col. cout<<" ". col++) { delay(r). CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 55 . gotoxy(20. col<=80. cout<<" * * * *".13). cout<<" * * * * *". gotoxy(20. gotoxy(20. cout<<" * * * **". gotoxy(20. cout<<" * * * * *". cout<<" * * * * *".fila). cout<<" * * * * *". r=50. cout<<" ********** * * *". cout<<"¦¦¦¦¦¦". col>=1. cout<<" ********** * * * *". 8). } for (col=9. gotoxy(20. int col. j. col>=1. col<=6. cout<<" ". 6). cout<<"¦". col++) { delay(r).15).14). 5). gotoxy(col. } for (col=1. } } //cambiar Ü por el codigo ASCII 220 (Si usas NOTEPAD++). gotoxy(col.fila). } for (col=74.fila).16). i++) { if (i % 2 !=0 ) derecha(i).17). 7). gotoxy(col. gotoxy(col. gotoxy(20.fila).2013 void izquierda(int fila). cout<<" * * * * *". col++) { delay(r).10). j<=50. } for (col=75. cout<<" * * * * *". col--) { delay(r). gotoxy(20. col--) { delay(r). void main(){ clrscr(). col<=74. gotoxy(20.

j++) cout<<"---Auxilio!!! un virus al ataque al sistema ". else izquierda(i). } CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 56 .H y CONSOLA. i++) { if (i % 2 !=0 ) derecha(i). return 0. system("cls"). i<=25. } void derecha(int fila).[PROGRAMACION I – C++] IDSystems 2011 .h> #include <math. Ademas. delay(1000). En la version DevC++ no necesitamos el header CONSOLA.LIB en el mismo directorio del programa para compilar MOD: 18-Feb-2013.i.h> #include <windows. } /* Pseudovirus.h> #include <dos. j<=50. SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE).cpp Programa que muestra un supuesto virus en la pantalla Por: LSC Sergio Hugo Sanchez. basta usar la libreria windows.h> using namespace std. y}. se sustituye la funcion delay() por la funcion Sleep de la misma libreria windows. short y) { COORD pos = {x.2013 delay(3000). r. //Defines gotoxy() for ANSI C compilers. } final(). int col. system("pause"). NOTA: Recordar que necesitamos el archivo CONSOLA. j. clrscr(). for (i=1. int main(){ //HANDLE hConsoleOutput.. void gotoxy(short x.h */ #include <iostream> #include <conio. r=50. void izquierda(int fila). for (j=1.h y la pequena funcion al inicio.H y la libreria asociada.NULL). pos). //SetConsoleDisplayMode(hConsoleOutput. //hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE). void final().1.

Normal * void final() { system("cls"). cout<<" * * * * *". } } //cambiar Ü por el codigo ASCII 220 (Si usas NOTEPAD++). 5).11). cout<<" * * * * *".13). col>=1. gotoxy(20.2013 // cambiar * por el codigo ASCII 176 (Si usas NOTEPAD++). cout<<" ********** * * * *". cout<<" * * * * *". cout<<" ********** * * *". col>=74. col++) { Sleep(r). system("cls").16). } for (col=1. cout<<" * * * * *". gotoxy(20. gotoxy(col. gotoxy(col. Ademas indica lo siguiente: ¿Qué librerías incluye este programa? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 57 . cout<<"|". Sleep(3000). gotoxy(20. col++) { Sleep(r). cout<<" * * ** *". gotoxy(20. cout<<" * * * * *". 6). cout<<" ". gotoxy(20. col--) { Sleep(r). cout<<" * * * * *".fila). cout<<" * * * * *". cout<<"||||||". } for (col=74. } Aqui veras bastantes ciclos for. col++) { Sleep(r). col--) { Sleep(r). col<=80.[PROGRAMACION I – C++] IDSystems 2011 . gotoxy(20. cout<<" * * * *". gotoxy(col. } for (col=9.10).fila). col--) { Sleep(r).fila). } for (col=75.12).fila). Algunas instrucciones de pantalla y retardo. col<=74.17). cout<<" ". gotoxy(20. cout<<"¦". cout<<" * * * * *". gotoxy(col. cout<<" * * * **". 8). col>=1.fila). gotoxy(col. gotoxy(20. 7). gotoxy(20. gotoxy(col. Realiza: 1) El codigo 2) El diagrama de flujo. Normal @ void derecha(int fila) { for (col=1. } } void izquierda(int fila) { for (col=80. col<=6. gotoxy(20. gotoxy(20.14). cout<<"¦¦¦¦¦¦".15). Sleep(1000). gotoxy(20.fila). gotoxy(20. 9).

Mientras.Juego del Ahorcado Para seguir probando lo que son las funciones y como un programa se divide en estas para hacer mas facil de administrar. El programa esta un poco largo. Si bien. contiene un menu inicial y la forma basica para jugarlo. es un juego sencillo ya que solo acepta 3 palabras. mas temas y el uso de archivos para las palabras) que estan hechos en Borland C++ (en lugar de MS Visual C++) y con los cuales podras practicar. Aqui aplicaremos los temas anteriores.[PROGRAMACION I – C++] IDSystems 2011 . divirtete y si quieres modifica el programa para que acepte mas palabras una vez que te funcione. ahora veamos este juego un poco mas largo: el Ahorcado. pero te gustara: CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 58 . En la seccion de practicas de este curso apareceran otros modelos de juego del ahorcado (incluso con graficas.2013 ¿Qué tipos de datos estamos declarando? ¿Qué funciones propias estamos usando? Ejercicio 23 .

2013 prog23_ahorcado. main() { opcion_elegida = 0. captura_las_palabras().[PROGRAMACION I – C++] IDSystems 2011 . Por: LSC Sergio Hugo Sanchez NOTA: No oldivar poner el header y libreria CONSOLA. exhibe_el_menu(). printf("-----------------------------------------"). int opcion_elegida. construye_pie_izquierdo(). printf("PRESIONA EL NUMERO DE LA OPCION QUE DESEE").h> <conio. int posicion_de_palabra_a_adivinar. construye_cabeza(). CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 59 . int logitud_palabra_actual=0. getche(). clrscr(). char todas_las_palabras[20] [num_palabras].LIB en la misma carpeta */ #include #include #include #include #include <iostream. int cant_de_palabras = num_palabras.3). elegir_palabra().h> <string. construye_hora(). char palabra_actual[20]. construye_pie_derecho(). Solamente contiene 3 palabras iniciales pero puede ser agrandado hasta donde quieras. return 0. do { gotoxy(25.H. construye_brazo_derecho(). gotoxy(25. int longitud_de_las_palabras[num_palabras].h> "consola.cpp Este es el juego del Ahorcado. construye_brazo_izquierdo(). exhibe_el_menu(). construye_tronco().2). } //*********************************************************** void exhibe_el_menu(void) { //clrscr(). muestra_las_palabras().h" #define num_palabras 3 void void void void void void void void void void void void construye_todo().h> <stdio. CONSOLA.cpp /*Pro23_ahorcado.

longitud_de_las_palabras[ìa] = longitud_palabra_actual.[PROGRAMACION I – C++] IDSystems 2011 .ja. printf("3 .6). case 2: elegir_palabra(). longitud_palabra_actual = longitud_de_las_palabras[i]. } } //***************************************************************** void captura_las_palabras(void) { int ia. for (ia=0. i<cant_de_palabras. gotoxy(25. gotoxy(25.15).9). gotoxy(67. ja++) todas_las_palabras[ja][ia]=palabra_actual[ja].MOSTRAS LAS PALABRAS !"). i++) { gotoxy(5. } //**************************************************************** void muestra_las_palabras(void) { int i. gotoxy(25. case 3: muestra_las_palabras(). gotoxy(25. printf("PALABRA No %d: ".2013 gotoxy(25. j<longitud_palabra_actual. i+1).JUGAR EL AHORCADO !").5).j.ia+10).5. printf("----------------------------------------"). printf("MENU DEL JUEGO EL AHORCADO !"). ja<longitud_palabra_actual. printf("ELIJA LA OPCION QUE DESEE Y PULSE ACEPTAR:").3. } while (opcion_elegida < 1 || opcion_elegida > 4 ). printf("2 . printf("1 .8).INGRESAR LAS PALABRAS !"). printf("-"). gotoxy(25. for (ja=0. scanf("%d". switch (opcion_elegida) { case 1: captura_las_palabras(). clrscr(). printf("4 .ABANDONAR EL PROGRAMA !"). gotoxy(35. gotoxy(25. longitud_palabra_actual = strlen(palabra_actual). gotoxy(25. ia<cant_de_palabras. clrscr().3. cin>>palabra_actual.5). gotoxy(59. } exhibe_el_menu(). for (i=0. for (j=0.5).i+10). case 4: break. ia+1).15).7). printf("!").4).&opcion_elegida). ia++) { gotoxy(5. printf("ESCRIBA LA PALABRA NUMERO %d: ". j++) CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 60 .ia+10).

. getche(). } //*************************************************************** void elegir_palabra(void) { int longitud_de_palabra_a_adivinar. i+10). &posicion_de_palabra_a_adivinar). clrscr(). scanf("%d". cin>>letra. } } printf("\n Pulse una tecla para continuar.contaP=0. longitud_de_palabra_a_adivinar = longitud_de_las_palabras[posicion_de_palabra_a_adivinar-1].3). l. for (j=0.4).2013 { gotoxy(19+j. } do { i++..[PROGRAMACION I – C++] IDSystems 2011 . printf("-").4).. exhibe_el_menu().."). completa[20]. j++) { if (todas_las_palabras[j][posicion_de_palabra_a_adivinar-1]==letra[0]) { gotoxy(j+20.j. printf("%c". l<longitud_de_palabra_a_adivinar. letra[0]). printf("%c".".4). gotoxy(55. sw=1. printf("Escriba un numero entre 1 y %d y pulse enter:". l++) { if(completa[l]==todas_las_palabras[l][posicion_de_palabra_a_adiv inar-1]) contaP++. } while (posicion_de_palabra_a_adivinar < 1 || posicion_de_palabra_a_adivinar > cant_de_palabras). todas_las_palabras[j][i]). } } contaP=0.sw=0. cant_de_palabras). for (i=0: i<longitud_de_palabra_a_adivinar. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 61 . sw=0.3). gotoxy(10. completa[j]= letra[0]. for (l=0. printf("\n Escriba una Letra y Presione <Enter>. clrscr(). int i. i++) { gotoxy(i+20. j<longitud_de_palabra_a_adivinar. errores=0. char letra[l]. do { gotoxy(10.

errores=7.7). else if (errores==5) construye_pie_derecho().2013 } if (contaP=longitud_de_palabra_a_adivinar) { gotoxy(37.. errores=4. printf("| . else if (errores==6) construye_pie_izquierdo()."). i=longitud_de_palabra_a_adivinar. else if (errores==3) construye_brazo_derecho(). gotoxy(38.[PROGRAMACION I – C++] IDSystems 2011 ... else if (errores==7) { clrscr(). . getch(). printf("\nGANASTES EL JUEGO. else if (errores==4) construye_brazo_izquierdo(). } else { if (sw==0) errores++. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 62 . getche(). |").").10). printf("|||||"). if (errores==1) construye_cabeza(). } } } while (i<longitud_de_palabra_a_adivinar || errores <=6). printf( "\n\n Pulse una tecla para continuar.. exhibe_el_menu(). construye_todo().. exhibe_el_menu().6). else if (errores==2) construye_tronco(). } //******************************************************************** ***** void construye_cabeza(void) { gotoxy(39.

printf("|").4). printf("|"). printf("/").9). gotoxy(41. gotoxy(44.[PROGRAMACION I – C++] IDSystems 2011 . printf("/"). gotoxy(41.10). printf("/"). printf("").12).13). } //******************************************************************** void construye_brazo_derecho(void) { gotoxy(40.11). } //******************************************************************* void construye_pie_derecho(void) { gotoxy(40. gotoxy(38. gotoxy(41. printf("/").13).9). printf("|"). printf("|_-_|").14).9). printf("\"). printf("\"). printf(":").10).5). printf("|").14). CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 63 . } //****************************************************************** void construye_horca(void) { int i. gotoxy(44. } //******************************************************************** *** void construye_tronco(void) { gotoxy(41. gotoxy(38. printf("").2013 gotoxy(38. } //******************************************************************* void construye_pie_izquierdo(void) { gotoxy(42.8). gotoxy(41. gotoxy(41.10). } //******************************************************************** void construye_brazo_izquierdo(void) { gotoxy(42.

} gotoxy(50..h> <string.. } //******************************************************************** void construye_todo(void) { gotoxy(37.h> <stdio. } void void void void void void exhibe_el_menu(). construye_tronco(). Por: LSC Sergio Hugo Sanchez MOD: 18-Feb-2013 Actualizado para DevC++ */ #include #include #include #include #include <iostream> <conio.2013 printf(":"). Solamente contiene 3 palabras iniciales pero puede ser agrandado hasta donde quieras. } /*Pro23_ahorcado. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 64 . elegir_palabra(). muestra_las_palabras().."). printf("==============="). printf(":::::::::::::::"). construye_cabeza().[PROGRAMACION I – C++] IDSystems 2011 . y}. printf(":").cpp Este es el juego del Ahorcado.i). SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE).. construye_brazo_derecho(). construye_pie_derecho(). pos). //Defines gotoxy() for ANSI C compilers. construye_pie_izquierdo(). construye_horca(). captura_las_palabras(). printf(":"). gotoxy(42.3).h> #define num_palabras 3 using namespace std. construye_todo().4).i). i<18. for (i=3. printf("\nPERDISTE EL JUEGO. construye_brazo_izquierdo(). construye_cabeza().3). short y) { COORD pos = {x.h> <windows. i++) { gotoxy(57. gotoxy(41. void gotoxy(short x..

5). gotoxy(25.15). } while (opcion_elegida < 1 || opcion_elegida > 4 ). return 0.[PROGRAMACION I – C++] IDSystems 2011 . char palabra_actual[20]. gotoxy(67. printf("4 . system("pause"). printf("----------------------------------------"). construye_pie_izquierdo(). gotoxy(25.MOSTRAS LAS PALABRAS !"). printf("3 .7). construye_brazo_derecho(). construye_horca().3). gotoxy(59. // // CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 65 .4). printf("2 . printf("1 .6). system("cls"). } //*********************************************************** void exhibe_el_menu(void) { system("cls"). exhibe_el_menu(). gotoxy(25. int longitud_de_las_palabras[num_palabras]. construye_pie_derecho().3. printf("ELIJA LA OPCION QUE DESEE Y PULSE ACEPTAR:"). printf("MENU DEL JUEGO EL AHORCADO !"). int opcion_elegida=0. gotoxy(25. int posicion_de_palabra_a_adivinar=0. gotoxy(25. printf("-----------------------------------------"). int cant_de_palabras = num_palabras. int longitud_palabra_actual=0.2013 void void void void void void construye_tronco().INGRESAR LAS PALABRAS !"). gotoxy(25.3.8).2). int main() { opcion_elegida = 0. gotoxy(25.&opcion_elegida).9). scanf("%d". gotoxy(25.15). char todas_las_palabras[20] [num_palabras]. gotoxy(25. switch (opcion_elegida) { case 1: captura_las_palabras().JUGAR EL AHORCADO !").5).5). printf("!"). printf("PRESIONA EL NUMERO DE LA OPCION QUE DESEE"). do { gotoxy(25.ABANDONAR EL PROGRAMA !"). case 2: elegir_palabra(). printf("-"). construye_brazo_izquierdo().

} } //printf("\n Pulse una tecla para continuar.2013 case 3: muestra_las_palabras().[PROGRAMACION I – C++] IDSystems 2011 .contaP=0.sw=0.j. &posicion_de_palabra_a_adivinar). longitud_de_las_palabras[ia] = longitud_palabra_actual. j++) { gotoxy(19+j. longitud_palabra_actual = strlen(palabra_actual). ja<longitud_palabra_actual. system("cls"). exhibe_el_menu(). CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 66 .ia+10).4). char completa[20]. for (ja=0. l. ia++) { gotoxy(5.. todas_las_palabras[j][i]).ja. for (ia=0. i+10). cant_de_palabras). printf("Escriba un numero entre 1 y %d y pulse enter:". int i. ia+1). for (i=0. system("cls"). printf("PALABRA No %d: ". system("cls").4). i+1). } //**************************************************************** void muestra_las_palabras(void) { int i.ia+10). i++) { gotoxy(5. gotoxy(35.j. ja++) todas_las_palabras[ja][ia]=palabra_actual[ja]. char letra[1]. for (j=0. i<cant_de_palabras.").. //getche(). case 4: break. system("pause"). cin>>palabra_actual. errores=0. ia<cant_de_palabras. } exhibe_el_menu(). scanf("%d". gotoxy(55. j<longitud_palabra_actual. } //*************************************************************** void elegir_palabra(void) { int longitud_de_palabra_a_adivinar. printf("ESCRIBA LA PALABRA NUMERO %d: ". do { gotoxy(10.i+10). printf("%c". longitud_palabra_actual = longitud_de_las_palabras[i]. } } //***************************************************************** void captura_las_palabras(void) { int ia.

errores=4.. i=longitud_de_palabra_a_adivinar. if (errores==1) construye_cabeza()."). printf("\nGANASTES EL JUEGO. i++) { gotoxy(i+20.. l++) { if(completa[l]==todas_las_palabras[l][posicion_de_palabra_a_adiv inar-1]) contaP++. else if (errores==3) construye_brazo_derecho(). printf("-"). for (i=0."). for (l=0. completa[j]= letra[0]. sw=1. } do { i++.. } while (posicion_de_palabra_a_adivinar < 1 || posicion_de_palabra_a_adivinar > cant_de_palabras).3). else if (errores==2) construye_tronco(). for (j=0.10). } } contaP=0. l<longitud_de_palabra_a_adivinar. letra[0]).. else if (errores==4) CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 67 . j<longitud_de_palabra_a_adivinar. sw=0. gotoxy(10. i<longitud_de_palabra_a_adivinar.[PROGRAMACION I – C++] IDSystems 2011 . cin>>letra.2013 system("cls"). printf("\n Escriba una Letra y Presione <Enter>. printf("%c".. exhibe_el_menu(). j++) { if (todas_las_palabras[j][posicion_de_palabra_a_adivinar-1]==letra[0]) { gotoxy(j+20. } else { if (sw==0) errores++.4). system("pause"). } if (contaP=longitud_de_palabra_a_adivinar) { gotoxy(37.3). longitud_de_palabra_a_adivinar = longitud_de_las_palabras[posicion_de_palabra_a_adivinar-1].

} //******************************************************************** void construye_brazo_derecho(void) { gotoxy(40. errores=7. system("pause").10). } //******************************************************************** ***** void construye_cabeza() { gotoxy(39. gotoxy(38.2013 construye_brazo_izquierdo(). else if (errores==7) { system("cls"). |").6). printf("/").9). printf("|_-_|"). CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 68 . exhibe_el_menu()."). else if (errores==6) construye_pie_izquierdo(). gotoxy(41.[PROGRAMACION I – C++] IDSystems 2011 . printf("|"). printf("|").. .12). printf("| . gotoxy(38. gotoxy(41. printf("|").11).8). printf("|||||"). } //******************************************************************** *** void construye_tronco(void) { gotoxy(41.9). //printf( "\n\n Pulse una tecla para continuar. } } } while (i<longitud_de_palabra_a_adivinar || errores <=6). gotoxy(41.10).. construye_todo(). printf("|"). gotoxy(38. else if (errores==5) construye_pie_derecho().7). //getche().

i++) { gotoxy(57. } //******************************************************************** void construye_todo(void) { gotoxy(37. gotoxy(44. printf(":"). for (i=3. } //****************************************************************** void construye_horca(void) { int i.13). i<18.. gotoxy(41. } //******************************************************************* void construye_pie_izquierdo(void) { gotoxy(42.[PROGRAMACION I – C++] IDSystems 2011 . printf("*"). printf(":"). construye_brazo_derecho(). printf("*")..4). gotoxy(42. printf(":::::::::::::::"). printf("/").i). printf("===============").5).2013 printf("/"). printf(":"). gotoxy(41.14). gotoxy(38.. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 69 . printf("*").10).3).. gotoxy(44.9). gotoxy(41. } gotoxy(50.4).3). construye_pie_derecho()."). construye_brazo_izquierdo().13). } //******************************************************************* void construye_pie_derecho(void) { gotoxy(40. printf(":"). } //******************************************************************** void construye_brazo_izquierdo(void) { gotoxy(42.14). construye_horca(). printf("*"). printf("\nPERDISTE EL JUEGO.i).. construye_pie_izquierdo(). printf("/").

[PROGRAMACION I – C++] IDSystems 2011 - 2013
construye_tronco(); construye_cabeza(); }

DevC++ con WimbGi m

/* Dev_prog23bG Juego del Ahorcado de manera grafica

Gracias a: TRABAJO FINAL DE COMPUTACION PAZ CARDENAS ISRAEL EDSON ESCOBAR CHAINA PABLO WILSON MEDRANO AROSQUETA FREDDY (creadores originales) */ #include #include #include #include #include <iostream> <stdlib.h> <stdio.h> <String.h> <winbgim.h>

using namespace std; int main() { int x=20; system("color e1"); char texto[20]; cout<< "\n"; cout<< "\n"; cout<< " ===== JUEGO DEL AHORCADO ===== \n"; cout<< "\n"; cout<< "\n"; cout<< " ===== Escriba la palabra que desea adivinar ? ===== \n"; cout<< "\n"; cout<< "\n"; cin>> texto; cout<< "\n"; int n=strlen(texto); char otro[n]; for (int i=0;i < n;i++) { otro[i]='-'; } char letra[2]; int ce=0, completa=0, encontrado; initwindow(300,300); setcolor(4); settextstyle(0,0,2); outtextxy(20,250,"= EL AHORCADO ="); outtextxy(50,30,otro); while (ce < 5 && completa==0) { cout<< " Escriba la letra para completar la palabra ? \n"; cout<< "\n"; cin>> letra; encontrado=0;

CUADERNO DE EJERCICIOS Y PRACTICAS C++

Página 70

[PROGRAMACION I – C++] IDSystems 2011 - 2013
for (int i=0;i < n;i++) { if(texto[i]==letra[0]) { encontrado=1; otro[i]=letra[0]; cout<< "\n"; cout<< " Letra acertada "; cout<< "\n"; } } if(encontrado==0) { ce++; switch(ce) { case 1: circle(100,90,20); break; case 2:line(100,110,100,180); break; case 3: line(100,125,65,170); line(100,125,135,170); break; case 4: line(100,180,60,220); line(100,180,140,220); break; case 5: line(100,120,140,120); line(140,120,140,50); line(140,50,45,50); line(45,50,45,240); line(45,240,160,240); setcolor(2); line(90,80,110,100); line(90,100,110,80); outtextxy(10,250," PERDEDOR !!!! "); break; } } completa=1; for (int i=0;i < n;i++) { if(otro[i]=='-') { completa=0;} } cout<< otro <<endl; outtextxy(50,30,otro); } system("pause"); closegraph(); return 0; }

NOTA: Recuerda que algunas funciones de este programa son una emulacion de la biblioteca original conio.h de Borland C++, por lo que deberas incluir el archivo header CONSOLA.H y la libreria CONSOLA.LIB, si es que trabajas en MS Visual C++ 6.0 o MS Visual C++ 2008 Express.

CUADERNO DE EJERCICIOS Y PRACTICAS C++

Página 71

[PROGRAMACION I – C++] IDSystems 2011 - 2013 Ademas, compara que el codigo para DevC++ no utiliza la librería consola.h y en su defecto utiliza la librería 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 librería wimbgim.h. Para lo cual buscala en internet o pidela a tu profesor. Deberas instalar esta librería para tu compilador DevC++, y crear un proyecto nuevo bajo Console Graphics Application, en lugar de Console Application tradicional. Una vez hecho esto, teclea el codigo correspondiente y compila. Responde a lo siguiente: ¿Qué librerías son las que se incluyen en este programa?

¿Cuáles son las funciones en las que esta dividido este programa?

¿Cuáles son los nuevos comandos de C, que se incluyen en este programa?

¿Qué tipos de datos se declaran en este

CUADERNO DE EJERCICIOS Y PRACTICAS C++

Página 72

cpp /*prog24_hanoi. Prueba hacer el codigo siguiente en MS Visual C++ prog24_hanoi. de tal forma que queden acomodados de menor a mayor hacia abajo como estaban en el poste 1.h> #define BG_BLACK (0) #define FG_RED (12) #define FG_BLUE (9) #define FG_WHITE (15) CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 73 .h> #include <conio.cpp Programa de la Torre de Hanoi Por: Enrique R.h> /* include <windows. el usuario tiene que mover unos aros que estan desde el poste 1 hasta el poste 3. En este juego. pasando a veces por el poste 2.h> #include <math.2013 programa? ¿Dónde se almacenan las palabras? ¿Cómo se pueden poner mas palabras? ¿Qué función o proceso es lo que mas realiza este programa y se repite? Ejercicio 24 . Mosqueda */ #include <stdio.[PROGRAMACION I – C++] IDSystems 2011 .Juego Las Torres de Hanoi Generalmente para probar el tema de la recursividad se aplica el ejercicio del juego de las torres de Hanoi.

CONSOLE_SCREEN_BUFFER_INFO csbi. n. SetConsoleTextAttribute(hStdOutput. a). topeg. hStdOutPut = INVALID_HANDLE_VALUE.a. auxpeg. char topeg.Y.n)-1"). printf("\n\tEl resultado es el mismo => %d". csbi. COORD cor = {0. "\t\t\t DISCO ". frompeg.a. c*=a+b. GetConsoleScreenBufferInfo(hStdOut. DWORD count. printf("\n\n Con %d DISCOS %d". frompeg. }*/ void Towers( int. &count). void main() { //clsscr(). printf("\n%s%d%s%c%s%c". char. " HACIA ". printf("\n\n\t\tTORRE DE HANOI\n"). coord). } /* juego del sistema */ void Towers( int n.c). */ if (n==1) { b=b+2. printf( "\n%s%d%s%c%s%c". printf("\n\tque estan como comentarios. char.'C'). frompeg.'A'. ' '.0}. printf("\nEspero que les guste "). n.a. printf("\n\tpara jugar con los colores solo activen las funciones"). " DESDE ". //SetConsoleTextAttribute(hStdOutput.&n).[PROGRAMACION I – C++] IDSystems 2011 . getch(). printf("\n\n\n\tnota: estas variables solo alcanzan para 30 discos").'B'. printf("las torres estan representadas como A. Towers( n-1. coord. printf("Digite la cantidad de Discos ===> ". int n=0. BG_BLACK | FG_BLUE ).\n"). int a. c=pow(2."). a). topeg). &csbi). return. hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE). c). scanf("%d". "\t\t\t DISCO ". BG_BLACK | FG_RED).X * csbi. topeg.B. c=((a+b)-1). SetConsoleCursorPosition(hStdOut. Towers( n-1. a=0. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 74 . char frompeg. topeg). FillConsoleOutputCharacter(hStdOut. } a=a+1.n).dvSize.2013 #define FG_GREEN (2) */ //void clrscr() /* { HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE). Towers( n. int. c=0. char auxpeg ) { /* HANDLE hStdInput = INVALID_HANDLE_VALUE.C\n"). n. frompeg. c). printf("CREADO POR ENRIQUE RADHAMES MOSQUEA MARTINEZ\n"). printf("\n\ty usando la funcion POW(2. b=0. " HACIA ". auxpeg. char). " DESDE ". printf("Digite el 0 para salir del sistema.dvSize.n)-1. hStdInput = GetStdHandle(STD_INPUT_HANDLE). printf("\n\tEl numero de Dias es => %d".

para que ejecutes el ejecutable. } Para la version DevC++. BG_BLACK | FG_BLUE ). solo hay que cambiar unas lineas que esperamos ya hayas identificado.2013 //SetConsoleTextAttribute(hStdOutput. ve a la seccion de BIBLIOTECA\DESCARGAS y baja el archivo de HANOIG (BORLAND). Este ultimo programa esta escrito en Borland C++ y utiliza bibliotecas graficas de MSDOS. Y despues. NOTA: En ambos es posible que solo veas a la computadora jugar.[PROGRAMACION I – C++] IDSystems 2011 . =) CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 75 . ¿Podrias modificar el programa para que tu seas el que haga los movimientos? Es un buen reto.

[PROGRAMACION I – C++] IDSystems 2011 .2013 Responde a lo que se indica: ¿Qué es la recursión? ¿Por qué están varias instrucciones con comentarios? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 76 .

usamos solamente el compilador DevC++.2013 PARTE III ARREGLOS Y ESTRUCTURAS A partir de aquí.[PROGRAMACION I – C++] IDSystems 2011 . CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 77 .

Primero un programa que cuenta los numeros sin usar arrelgos: prog24_vectores. printf("Por lo que se te preguntara por un numero.[PROGRAMACION I – C++] IDSystems 2011 . printf("El siguiente programa cuenta en numero de apariciones de los numeros 0 al 3\n"). scanf("%d". if (num == 3) c3++. 1.2013 Ejercicio 25 – Arreglos Realiza la siguiente practica. scanf( "%d". c3 ). if (num == 2) c2++. %d. &num ). c2.Ejemplo de vectores */ #include <stdio. c0=0. %d. } Y ahora basado en el mismo concepto de contar numeros. teclealo y pulsa ENTER \n"). printf("Para finalizar el ciclo. tecleando los siguientes programas para que veas el funcionamiento de los arreglos.cpp /* prog24 . } printf( "Resultado Contadores:%d. %d \n\n". 2 y 3 en una secuencia de enteros acabada en -1. if (num == 1) c1++. while (num != -1) { if (num == 0) c0++. */ int main() { int num. c3=0. c1. teclea -1 y te apaceran los resuñtados \n\n"). return 0. c1=0. c2=0. &num).h> #define MAX 100 //Declara funcion de vectores //void vectores() // Comenzamos con la funcion normal /* A continuaci´on se muestra un programa que cuenta el numero de apariciones de los numeros 0. usando arrays: CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 78 . c0.

} Responde a lo siguiente: ¿Cuál es la diferencia entre los dos programas? ¿Cómo declaramos las variables en ambos programas? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 79 . printf("El siguiente programa cuenta en numero de apariciones de los numeros 0 al 3\n"). while (num2 != -1) { if ((num2 >= 0) && (num2 <= MAX)) cont[num2]++. cont[i] ). printf("Para finalizar el ciclo. } for (i= 0.[PROGRAMACION I – C++] IDSystems 2011 . teclealo y pulsa ENTER \n"). scanf( "%d". &num2 ).h> #define MAX 100 int main() { int i. se halla en el uso de vectores. for (i= 0. teclea -1 y te apaceran los resuñtados \n\n"). &num2). cont[MAX]. Veamoslo en el siguiente codigo que llama a la funcion: */ #include <stdio. return 0. i< MAX. i++) cont[i] = 0. scanf("Numero %d". i++) printf( "Contador [%d] = %d \n\n". como era de esperar. i. i< MAX. num2.Uso de vectores */ /* ¿Que ocurriria si tuviesemos que contar las apariciones de los cien primeros numeros enteros? ¿Deber´ýamos declarar cien contadores y escribir cien construcciones if para cada caso? La respuesta.cpp /* Pro30 .2013 prog30_vectores. printf("Por lo que se te preguntara por un numero.

b< DIM. c < DIM. b. c< DIM.h).Arrays multidimensionales El siguiente ejemplo muestra el empleo de una tabla multidimensional.2013 ¿Por qué cambiaron las instrucciones para los ciclos? Ejercicio 26 Ahora un ejercicio para aprender sobre arrays multidimensionales: prog31. c++) { printf( "\n\n tabla[%d][%d][%d] = ". a++) for (b= 0. getchar().h> #define DIM 10 void main() { int tabla_random [DIM][DIM][DIM]. b++) { for (c= 0. a. b++) for (c= 0. */ #include <stdio. a< DIM. Para generar numeros aleatorios se usa la funcion rand de la libreria estandar stdlib. } printf( "\n\nPulse ENTER para seguir" ). c++) tabla_random[a][b][c] = rand(). c. c ). */ for (a= 0. a++) for (b= 0. } } CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 80 . Concretamente. el programa utiliza una tabla de 3 dimensiones para almacenar 1000 numeros aleatorios.cpp /* Prog31 .h. printf( "%d". a.[PROGRAMACION I – C++] IDSystems 2011 .h> #include <stdlib. que interrumpe el programa y espera a que el usuario presione una tecla. Tambien se ha usado la funcion getchar (stdio. /* Muestra series de DIM en DIM elementos. b. tabla_random[a][b][c] ). a< DIM. b < DIM. for (a= 0.

[PROGRAMACION I – C++] IDSystems 2011 .2013 Responde a lo siguiente: ¿Que son los arrays multidimensionales? ¿Como generamos aleatorios? los numerous ¿Como declaramos las variables? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 81 .

h> #define MAXLIN 100 void main() { char pal[MAXLIN]. convierte las letras minusculas en mayusculas y viceversa.". printf( "\nFRASE:" ). pal ).Ejemplo de cadenas El siguiente programa cuenta el numero de veces que se repite una palabra en una frase. */ #include <stdio. c=' '. y finalmente escribe la cadena resultante.h> void main() { char cad1[80]. while (c != '\n') { scanf( "%s%c". int total = 0. El programa emplea la funcion de comparacion de cadenas strcmp. realiza estos dos programas: prog32. /* La que buscamos.h> #include <string. cad3[160].Otro ejemplo de cadenas A continuacion se muestra otro ejemplo que hace uso de las cadenas de caracteres. palfrase) == 0) total++. cad2[80]. } Y tambien este otro: prog33. las concatena. total ). printf( "\nPALABRA:" ).cpp /* Prog33 . */ char palfrase[MAXLIN]. */ char c. El programa lee dos cadenas de caracteres. /* Una palabra de la frase. } printf( "\nLa palabra %s aparece %d veces. if (strcmp(pal.h> #include <string.[PROGRAMACION I – C++] IDSystems 2011 . pal. scanf( "%s". Dicha funcion devuelve 0 en caso de que las cadenas comparadas sean iguales */ #include <stdio. &c ).cpp /* Prog32 . CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 82 . palfrase.2013 Ejercicio 27 – Cadenas Para repasar los temas.

/* Convierte a mayuscula */ else if ((cad3[i] >= 'A') && (cad3[i] <= 'Z')) /* Convierte a cad3[i] += delta. cad3 ). } printf( "La cadena resultante es: %s \n". gets(cad1).'A'. delta. strcat( cad3. cad1 ). cad2 ). while (cad3[i] != '\0') { if ((cad3[i] >= 'a') && (cad3[i] <= 'z')) cad3[i] -= delta.[PROGRAMACION I – C++] IDSystems 2011 . minuscula */ i++. i = 0. delta = 'a' . /* cad3 = cad1 + cad2 */ strcpy( cad3. printf( "Introduzca la primera cadena:\n" ). } Responde a lo siguiente: ¿Qué es lo que hace el primer programa? ¿Qué es lo que hace el segundo programa? ¿Cuáles son las funciones de cadena que usan estos programas? ¿Cuáles son las instrucciones de entrada en los dos programas? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 83 .2013 int i. printf( "Introduzca la segunda cadena:\n" ). gets( cad2 ).

3. } st [2][3] = { {{ 'a'.5e4 }. tanto de numeros como de cadenas { 3. //Aqui static static static j. = "cadena".1415e4}. 3. 6e2 }. stb = { 2.333. 4e2 }. 3e3 }.cpp /* ej4. 4.Arreglos y cadenas Para repasar la leccion anterior sobre los arrays. 55555 }.} }. */ # include <stdio. static int b[2][5] = { 1. 2.55555.2.'e'.'n'. = { 'c'. //Aqui pondremos los resultados de dichos arrays y estructuras. 3. float s.5. 1. 1 } }. 333. static struct { char c. //Ahora inicializamos las estructuras de datos static int a[2][5] = { { 1.2013 ¿Cómo se declaran las variables en ambos programas y por que de esa manera? Ejercicio 28 .'a'. static struct { int i. inicializamos los int enteros [5] = char cadena1 [16] char cadena2 [16] arrays.1 }. realiza el siguiente ejercicio para que veas como se determinan y que resultados muestran: prog23_arrays. 5.4444. 4. 7. 22. } sta = { 1. 2 }. // Comenzamos con las cadenas CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 84 . { 'b'.'\0' }. 3. static char *c = "cadena".[PROGRAMACION I – C++] IDSystems 2011 . float x. 4444.c Inicializacion y manejo de "arrays". 2.h> void main() { int i. int i.'a'. { 'c'.4. 1. 1. { { 'd'.22.'d'. cadenas y estructuras. 5e3 }}. { 5.

printf ("%s\n\n". printf ("a:\n"). a[i][j]). i<2. i<2. printf ("cadena1:\n"). } Responde a lo siguiente: Que variables declaramos en este programa? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 85 . ++i) for (j=0.c. ++i) for (j=0.2013 printf ("enteros:\n"). ++j) printf ("%d ". c). cadena2). printf ("st:\n"). ++j) printf ("%c %d %f\n".x). i<2. st[i][j]. printf ("\n\n"). printf ("%s\n\n". j<5.s). printf ("\n\n"). j<5. printf ("sta:\n"). //Que nos muestra las variables enteros en este ciclo? for (i=0. printf ("%d %f \n\n". printf ("%s\n\n". ++i) for (j=0. j<3. printf("\n\n"). //Ahora mostremos las estructuras de datos de numeros for (i=0. printf ("b:\n"). sta. ++j) printf ("%d ". st[i][j]. st[i][j]. printf ("c:\n"). enteros[i]).[PROGRAMACION I – C++] IDSystems 2011 . sta. i<5. cadena1). b[i][j]). printf ("cadena2:\n"). for (i=0. for ( i=0. ++i ) printf ("%d ".i.i.

int main() { int m. while (sum<10) CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 86 . ademas tendras que traducirlo porque los mensajes estan en ingles. sum=0.[PROGRAMACION I – C++] IDSystems 2011 .h> char matrix[3][3].j. n.2013 Que funcion tienen la instruccion static? Cual es la descripcion del formato que usa la funcion printf? Ejercicio 29 .cpp #include <iostream.h> #include <conio. para aprender un poco mas sobre las matrices y ver su aplicacion. Teclea el codigo siguiente y ejecutalo.h> #include <stdlib. m<3. int i. while (ch=='Y' || ch =='y') { for (m=0. n<3.Juego del Gato (Tic-Tac-Toe) A continuacion se presenta el juego del gato o Tres en raya (Tic-Tac-Toe en ingles). char ch='y'. Que te diviertas!!! prog35_juegogato. n++) matrix[m][n]='\0'. //={0} void playbox(void). m++) for (n=0.

CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 87 . break. } matrix[i-1][j-1]='X'. cout<<"Coumn : ". but you gotta choose another place. cout<<"Column : ".) { cout<<"Sorry boy.\n". playbox().[PROGRAMACION I – C++] IDSystems 2011 . cout<<"Coumn : ". sum++.\n". cin>>i. for (.2013 { if (sum==0) playbox(). //Check if wins if (matrix[0][0]=='X' && matrix[1][1]==matrix[2][2]) { if (matrix[2][0]=='X' && matrix[1][1]==matrix[0][2]) { if (matrix[0][0]=='X' && matrix[1][0]==matrix[2][0]) { if (matrix[0][1]=='X' && matrix[1][1]==matrix[2][1]) { if (matrix[0][2]=='X' && matrix[1][2]==matrix[2][2]) { if (matrix[0][0]=='X' && matrix[0][1]==matrix[0][2]) { if (matrix[1][0]=='X' && matrix[1][1]==matrix[1][2]) { if (matrix[2][0]=='X' && matrix[2][1]==matrix[2][2]) { } if (sum==9) { //sum=9 because there are only 9 matrix[0][0]==matrix[1][1] && matrix[2][0]==matrix[1][1] && matrix[0][0]==matrix[1][0] && matrix[0][1]==matrix[1][1] && matrix[0][2]==matrix[1][2] && matrix[0][0]==matrix[0][1] && matrix[1][0]==matrix[1][1] && matrix[2][0]==matrix[2][1] && boxes in the game cout<<"The game is over and no one wins. cout<<"Row : ".) { cout<<"Sorry boy. cin>>i. hahaha. cout<<"Row : ".i>3 || i<1 || j>3 || j<1 || ('X'==matrix[i-1][j-1] ||'O'==matrix[i-1][j-1]). cin>>i. you both stink!!!"<<endl. cout<<"Row : ". cout<<"Player 1 is 'X': choose the row and column"<<endl. cin>>j. for (. cin>>j. but you gotta choose another place.i>3 || i<1 || j>3 || j<1 || ('X'==matrix[i-1][j-1] ||'O'==matrix[i-1][j-1]). cin>>j. } // player 2's turn cout<<"Player 2 is 'O': choose the row and column "<<endl.

N)\n".[PROGRAMACION I – C++] IDSystems 2011 . } } /****************************/ void playbox(void) { //the play box cout<<"\n\t\t 1 cout<<"\t\t 1 "<<matrix[0][1]<<" | "<<matrix[0][2]. //Check if wins if (matrix[0][0]=='O' && && matrix[1][1]==matrix[2][2]) { if (matrix[2][0]=='O' && && matrix[1][1]==matrix[0][2]) { if (matrix[0][0]=='O' && && matrix[1][0]==matrix[2][0]) { if (matrix[0][1]=='O' && && matrix[1][1]==matrix[2][1]) { if (matrix[0][2]=='O' && && matrix[1][2]==matrix[2][2]) { if (matrix[0][0]=='O' && && matrix[0][1]==matrix[0][2]) { if (matrix[1][0]=='O' && && matrix[1][1]==matrix[1][2]) { if (matrix[2][0]=='O' && && matrix[2][1]==matrix[2][2]) { } cout<<"\nWould you like to play again??? (Y cin>>ch. "<<matrix[2][0]<<" | CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 88 . } matrix[0][0]==matrix[1][1] matrix[2][0]==matrix[1][1] matrix[0][0]==matrix[1][0] matrix[0][1]==matrix[1][1] matrix[0][2]==matrix[1][2] matrix[0][0]==matrix[0][1] matrix[1][0]==matrix[1][1] matrix[2][0]==matrix[2][1] . cout<<"Column : ". 2 3\n"<<endl. sum++. return 0. cin>>j. "<<matrix[1][0]<<" | ---|---|---\n". cout<<"\t\t cout<<"\t\t 2 "<<matrix[1][1]<<" | "<<matrix[1][2]. } system("PAUSE"). } matrix[i-1][j-1]='O'. "<<matrix[0][0]<<" | ---|---|---\n". cin>>i. //the play box playbox(). cout<<"\t\t cout<<"\t\t 3 "<<matrix[2][1]<<" | "<<matrix[2][2].2013 cout<<"Row : ".

¿Cuáles son? ¿Cuál es la solucion a los errores presentados? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 89 .2013 Responde a lo siguiente: ¿Por que este juego implementa arreglos? ¿Que tipo de arreglos usa este programa? Este programa contiene errores de manera intencional.[PROGRAMACION I – C++] IDSystems 2011 .

numpersonas. gets( tabla. &tabla.Ejemplo de estrucutras */ #include <stdio.2013 Ejercicio 30 – Estructuras Realiza el siguiente ejemplo de manejo de estructuras: prog34_estruc.persona[i]. }. creando el codigo necesario para que imprima los resultados capturados que se almacenaron en la estructura de la tabla.apellido ). scanf( "%d".h> struct datos { char nombre[20].cpp /* Prog34 . i++) { printf( "\nNombre: " ). &tabla. } // Ahora hay que realizar el codigo para imprimir los resultados de la tabla } Y una vez terminado. //scanf( "%ld". char apellido[20]. printf( "Numero de personas: " ). struct tablapersonas tabla.persona[i]. i< tabla.dni ). for (i= 0. long int dni.persona[i]. }.[PROGRAMACION I – C++] IDSystems 2011 .numpersonas ). Responde a lo que se indica: ¿Cuál fue el código que escribiste para completar el programa? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 90 . struct tablapersonas { int numpersonas. completalo. printf( "\nApellido: " ). //printf( "\nRFC: " ). gets( tabla. void main() { int i. struct datos persona[100].nombre ).

2013 ¿Qué es una estructura? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 91 .[PROGRAMACION I – C++] IDSystems 2011 .

&m. GetConsoleScreenBufferInfo(hStdOut.dwSize.Y. El programa ademas. SetConsoleCursorPosition(hStdOut. esta basado en instrucciones condicionales IF…ELSE. csbi.saliryesno. &count). FillConsoleOutputCharacter(hStdOut.&d. 0}. while(salir==0){ clrscr(). salir=0. scanf("%d". coord).\n\n"):printf("\nSu signo es ACUARIO. Para ello el usuario debe introducir únicamente el día y el mes de nacimiento y el programa determinará inmediatamente el signo zodiacal de la persona. } (d<=20) ? printf("\nSu signo es CAPRICORNIO.cpp /*Este programa muestra el signo zodiacal de una persona. while ( (d>31) || (d != (d)) ){//!= esta sentencia es diferente de{ printf("Introduzca dia(ENTRE 1 Y 31): "). scanf("%d".&d. COORD coord = {0.h> #include <windows. DWORD count.[PROGRAMACION I – C++] IDSystems 2011 .\n\n"). Este ya es un ejercicio resuelto en donde veras algunas instrucciones nuevas para construir una funcion que borre la pantalla.*/ short unsigned int m.h> #include <math."\n"). CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 92 . } if (m==1){ printf("Introduzca su dia de nacimiento: "). prog36_zodiaco. scanf("%d".X * csbi. ' '."\n").d = 0."\n"). CONSOLE_SCREEN_BUFFER_INFO csbi./*Llamando la funcion para limpiar pantalla. &csbi). while ((m > 12) || (m < 1)){ printf("Introduzca su mes de nacimiento(DE 1 A 12): ")."\n"). coord. } void main() { int salir.&m. scanf("%d".dwSize. printf("Introduzca su mes de nacimiento: ").h> void clrscr()/*Creando funcion para limpiar pantalla.*/ { HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE).*/ //muestra el signo zodiacal #include <STdio.2013 Practica/Ejercicio 1 – Zodiaco Ahora teclea el siguiente programa que te dice el signo zodiacal de una persona.

&d. } else{ if(m==6){ printf("Introduzca su dia de nacimiento: "). } (d<=20) ? printf("\nSu signo es ARIES. while ( (d>30) || (d!=(d)) ){ printf("Introduzca dia(ENTRE 1 Y 31): ").&d. } else{ if(m==4){ printf("Introduzca su dia de nacimiento: "). scanf("%d".\n\n"). scanf("%d".\n\n")."\n"). scanf("%d"."\n").\n\n"):printf("\nSu signo es TAURO.2013 } else{ if(m==2){ printf("Introduzca su dia de nacimiento: ")."\n").&d. scanf("%d".&d. scanf("%d". while ( (d>31) || (d != (d)) ){ printf("Introduzca dia(ENTRE 1 Y 31): "). while ( (d>30) || (d!=(d)) ){ printf("Introduzca dia(ENTRE 1 Y 31): "). scanf("%d". scanf("%d"."\n"). } (d<=21) ? printf("\nSu signo es TAURO.\n\n"):printf("\nSu signo es PISCIS. } else{ if(m==5){ printf("Introduzca su dia de nacimiento: ").\n\n"). while ( (d>29) || (d != (d)) ){ printf("Introduzca dia(ENTRE 1 Y 29): ").&d.&d. } CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 93 ."\n")."\n"). } (d<=20) ? printf("\nSu signo es PISCIS."\n").\n\n"):printf("\nSu signo es GEMINIS. scanf("%d". } (d<=19) ? printf("\nSu signo es ACUARIO. } else{ if(m==3){ printf("Introduzca su dia de nacimiento: "). while ( (d>31) || (d != (d)) ){ printf("Introduzca dia(ENTRE 1 Y 31): ").&d.&d. scanf("%d"."\n").&d. scanf("%d"."\n").&d."\n").\n\n"):printf("\nSu signo es ARIES.\n\n").[PROGRAMACION I – C++] IDSystems 2011 .

\n\n"):printf("\nSu signo es LIBRA.&d."\n"). scanf("%d".&d. } (d<=23) ? printf("\nSu signo es LEO. scanf("%d". } else{ if(m==7){ printf("Introduzca su dia de nacimiento: ")."\n").&d. } else{ if(m==10){ printf("Introduzca su dia de nacimiento: "). scanf("%d".&d.\n\n"). } (d<=23) ? printf("\nSu signo es CANCER. while ( (d>31) || (d != (d)) ){ printf("Introduzca dia(ENTRE 1 Y 31): ").\n\n").&d."\n").\n\n"). CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 94 . while ( (d>30) || (d!=(d)) ){ printf("Introduzca dia(ENTRE 1 Y 31): "). scanf("%d". scanf("%d".&d. while ( (d>31) || (d != (d)) ){ printf("Introduzca dia(ENTRE 1 Y 31): ")."\n").\n\n"):printf("\nSu signo es VIRGO.\n\n").2013 (d<=21) ? printf("\nSu signo es GEMINIS.[PROGRAMACION I – C++] IDSystems 2011 ."\n"). } else{ if(m==8){ printf("Introduzca su dia de nacimiento: "). while ( (d>31) || (d != (d)) ){ printf("Introduzca dia(ENTRE 1 Y 31): "). } else{ if(m==9){ printf("Introduzca su dia de nacimiento: ").&d. } (d<=23) ? printf("\nSu signo es LEO."\n").\n\n"):printf("\nSu signo es CANCER."\n").\n\n"):printf("\nSu signo es LEO. scanf("%d". scanf("%d".

} else{ if(m==11){ printf("Introduzca su dia de nacimiento: ").\n\n"):printf("\nSu signo es SAGITARIO. scanf("%d".2013 scanf("%d".[PROGRAMACION I – C++] IDSystems 2011 . } (d<=22) ? printf("\nSu signo es ESCORPION. while ( (d>31) || (d !=(d)) ){ printf("Introduzca dia(ENTRE 1 Y 31): "). } else{ if(m==12){ printf("Introduzca su dia de nacimiento: ")."\n"). } (d<=21) ? printf("\nSu signo es SAGITARIO. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 95 ."\n")."\n").\n\n"). scanf("%d". while ( (d>30) || (d!=(d)) ){ printf("Introduzca dia(ENTRE 1 Y 31): "). scanf("%d".\n\n") : printf("\nSu signo es ESCORPION.\n\n"). } (d<=23) ? printf("\nSu signo es LIBRA."\n"). scanf("%d". } } } } } } } } } } } } printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: ").&d.&d.&d.&d.\n\n").\n\n"):printf("\nSu signo es CAPRICORNIO. scanf("%d"."\n").&d.&saliryesno).

CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 96 . Generalmente. while(salir==0){ clrscr(). CONSOLE_SCREEN_BUFFER_INFO csbi. 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.dwSize. &count)./*Llamando la funcion para limpiar pantalla. } void main() { int salir. SetConsoleCursorPosition(hStdOut.h" #include <windows.[PROGRAMACION I – C++] IDSystems 2011 . El programa preguntará al usuario su nota y transformará ese resultado al equivalente en el Standard Grading System. ' '.h> void clrscr()/*Creando funcion para limpiar pantalla.dwSize. Primero se debe mostrar una tabla de equivalencias y luego preguntara la calificacion. &csbi). También el programa dará una pequeña pero valiosa recomendación al usuario respecto a su nivel de estudio y calidad como estudiante. } } } ACTIVIDAD Realiza el mismo programa pero usando sentencias SWITCH y una modificacion para hacer el algoritmo mas simple.*/ int a. printf("\n\t\t\tNOTAS\t\tEQUIVALENTE\n"). GetConsoleScreenBufferInfo(hStdOut. salir=0. Este tipo de programas se utilizan en el ambito escolar para saber las calificaciones de los alumnos. csbi. FillConsoleOutputCharacter(hStdOut. DWORD count.*/ { HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE). float nota.Y.saliryesno. 0}. El resultado sera el equivalente a la notacion americana. coord.X * csbi. para este tipo de programas se utilizan muchas condicionales. COORD coord = {0. prog37_califeu.*/ #include "stdio.cpp /*El programa muestra primero una tabla de notas con sus equivalentes en el Standard Grading System o el sistema utilizado en los Estados Unidos que va desde la A hasta la F. coord).2013 if(saliryesno==1){ salir=1.

0 . printf("\t\t 7.0\t\t A\n"). su nivel es muy bueno. } else{ if(nota>=6){ printf("\nNOTA EQUIVALENTE EN STANDARD GRADING SYSTEM: D\n"). si continua asi usted es un genio.\n\n").8.2013 printf("\t\t 9. a=0.4\t\t C\n"). printf("\t\t 8. pero trate elevar su promedio. su nivel es impresionante. printf("RECOMENDACIONES: Bien.0\t\t F\n").5){ printf("\nNOTA EQUIVALENTE EN STANDARD GRADING SYSTEM: C+\n"). if(nota<0 || nota>10){ /*a sigue valiendo cero y no se sale del ciclo*/ } else{ a=1. printf("RECOMENDACIONES: Usted esta dentro del promedio.&nota).0 .5){ printf("\nNOTA EQUIVALENTE EN STANDARD GRADING SYSTEM: B+\n").0 .[PROGRAMACION I – C++] IDSystems 2011 . un pequeno descuido \nlo pone en problemas.9\t\t C+\n").5 .4\t\t B\n").9\t\t B+\n"). trate de no bajar. printf("RECOMENDACIONES: Muy bien. printf("RECOMENDACIONES: Excelente. printf("\t\t 7.10. printf("RECOMENDACIONES: Usted la va pasando.6. } else{/*nota mayor que cero pero CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 97 . printf("RECOMENDACIONES: Usted esta en la cuerda floja. } else{ if(nota>=7.8.0 .\n\n").7. printf("\t\t 6.\n\n"). } else{ if(nota>=8.\n\n"). while(a==0){ printf("\nIntroduzca su nota en Programacion II: "). printf("\t\t 0.\n\n").0 . scanf("%f".5 . } else{ if(nota>=8){ printf("\nNOTA EQUIVALENTE EN STANDARD GRADING SYSTEM: B\n").9\t\t D\n"). } } if(nota>=9){ printf("\nNOTA EQUIVALENTE EN STANDARD GRADING SYSTEM: A\n"). printf("\t\t 8.\n\n").6.7. } else{ if(nota>=7){ printf("\nNOTA EQUIVALENTE EN STANDARD GRADING SYSTEM: C\n").

*/ { HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE). DWORD count. asi como la logica de construccion.&saliryesno). COORD coord = {0.h> void clrscr()/*Creando funcion para limpiar pantalla. &csbi).2013 menor que 6.ELSE por SWITCH para hacer el programa mas corto.*/ printf("\nNOTA EQUIVALENTE EN STANDARD GRADING SYSTEM: F\n"). 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. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 98 .*/ #include "STdio. } } } ACTIVIDAD Realiza el mismo programa. busque nuevas \ntecnicas de estudio. Este tipo de programas se usa mucho en sistemas administrativos de nominas o recursos humanos prog38_sueldos.[PROGRAMACION I – C++] IDSystems 2011 . El ejercicio ya esta escrito por lo que deberas leer y entender los comentarios al principio.h" #include <windows. } } } } } } printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "). cambiando las sentencias condicionales IF. CONSOLE_SCREEN_BUFFER_INFO csbi. 0}. El usuario deberá escribir el número de horas trabajadas en cada uno de los horarios y el programa determinará el total de dinero a recibir por el trabajador y también dirá si ganó más dinero por horas extras que por horas de oficina trabajadas o viceversa.. printf("RECOMENDACIONES: Su nota sinceramente es mala. if(saliryesno==1){ salir=1. scanf("%d".cpp /*Este programa muestra los pagos que recibirá un trabajador por cada hora laboral en base a la hora del día en que trabaja. GetConsoleScreenBufferInfo(hStdOut.\n\n"). Tambien podrias usar un archivo externo para leer la informacion de equivalencias o la informacion de calificaciones de un alumno. o si el trabajador ganó exáctamente lo mismo por horas extras que por horas de oficina.

pago_extra.X * csbi.Y.&horas_trab). float pago_base. } } printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "). scanf("%d". pago_base=(horas_trab*pago).2f\n".2f\n\n".pago_doble. suma_extra=(pago_extra25+pago_extra50+pago_doble). coord).&saliryesno). csbi.8:00 PM\t 25 POR CIENTO EXTRA\n"). scanf("%d".sueldo _total.suma_base.&horas_trab25). scanf("%d". scanf("%d".suma_extra). printf("SUELDO BASE POR HORA TRABAJADA: "). printf("Numero de horas trabajadas de 4:00 pm a 8:00 pm: "). pago_extra25=(horas_trab25*(1. scanf("%f". printf("EL SALARIO DEL TRABAJADOR POR HORAS DE OFICINA ES: $%.suma_base). ' '. printf("\nNumero de horas trabajadas de 8:00 am a 4:00 pm: ").2013 FillConsoleOutputCharacter(hStdOut.*/ printf("\n\t\tHORARIO\t\t\t PAGO \n\n"). } void main() { int salir.dwSize./*Llamando la funcion para limpiar pantalla. printf("EL SALARIO DEL TRABAJADOR POR HORAS EXTRAS ES: $%.12:00 AM\t 50 POR CIENTO EXTRA\n"). printf("\t 8:00 AM .horas_doble. if (suma_extra>suma_base){ printf("\nEL TRABAJADOR GANO MAS DINERO POR HORAS EXTRAS QUE POR HORAS DE OFICINA\n\n"). int horas_trab. SetConsoleCursorPosition(hStdOut.&horas_doble).pago_extra25.25)*pago). pago_extra50=(horas_trab50*(1. if(saliryesno==1){ CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 99 . coord.[PROGRAMACION I – C++] IDSystems 2011 . printf("\nEL PAGO TOTAL QUE RECIBIRA EL TRABAJADOR ES: $%.50)*pago).saliryesno. printf("Numero de horas trabajadas de 8:00 pm a 12:00 am: "). salir=0. pago_doble=(horas_doble*(2. printf("Numero de horas trabajadas de 12:00 am a 8:00am: ").sueldo_total).suma_extra.horas_trab50.horas_trab25. while(salir==0){ clrscr().pago_extra50. } else{/*pago_base es mayor que suma_extra*/ printf("EL TRABAJADOR GANO MAS DINERO POR HORAS DE OFICINA QUE POR HORAS EXTRA\n\n"). printf("\t 4:00 PM . printf("\t 8:00 PM .8:00 AM\t\tPAGO DOBLE\n\n").pago. scanf("%d".0)*pago). } else{ if(suma_extra==suma_base){ printf("EL TRABAJADOR GANO EL MISMO SALARIO POR HORAS EXTRAS QUE POR HORAS DE OFICINA\n\n").&pago). suma_base=pago*horas_trab. printf("\t 12:00 AM .2f\n". &count).&horas_trab50).4:00 PM\t\tPAGO BASE\n").dwSize. sueldo_total= suma_extra+pago_base.

coord). CONSOLE_SCREEN_BUFFER_INFO csbi. De tal forma. DWORD count.X * csbi. FillConsoleOutputCharacter(hStdOut. prog39_promocion. Pero si la persona ingresa una cantidad en compras igual o superior a $100. csbi. coord. GetConsoleScreenBufferInfo(hStdOut. el programa genera de forma aleatoria un número entero del cero al cinco. de manera que el programa mostrará un nuevo valor a pagar luego de haber aplicado el descuento.h> #include <stdlib.h> #include <time. SetConsoleCursorPosition(hStdOut.Y.*/ { HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE). pero si es uno de los otros cuatro colores. &csbi).2013 salir=1. Si la bola aleatoria es color blanco. } void main() { CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 100 . Cada número corresponderá a un color diferente de cinco colores de bolas que hay para determinar el descuento que el cliente recibirá como premio. } } } 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. manejo de tablas. Si la cantidad es inferior a $100. &count). 0}.*/ #include <stdio.00. Este tipo de programa es util en el area de ventas de un negocio. no hay descuento. condicionales.h> #include <windows. que de manera aleatoria le tocara una bola de un color y dicho color tendra asociado un descuento para los productos que compre.dwSize. COORD coord = {0. el programa dirá que el cliente no aplica a la promoción. y ese descuento se aplicará sobre el total de la compra que introdujo inicialmente el usuario.cpp /*Este programa pide primeramente la cantidad total de compras de una persona.dwSize.h> void clrscr()/*Creando funcion para limpiar pantalla. ' '.[PROGRAMACION I – C++] IDSystems 2011 . sí se aplicará un descuento determinado según la tabla que aparecerá. Es un interesante ejemplo para ver nuevamente la funcion aleatoria.00.

printf("\nINTRODUZCA LA CANTIDAD TOTAL DE LA COMPRA: "). salir=0./*Inicializa el generador random*/ random=rand()%5. printf("SU NUEVO TOTAL A PAGAR ES: $%."\n").&gasto. printf("FELIDADES. ncargo. HA GANADO UN 20 POR CIENTO DE DESCUENTO \n\n"). printf("\t\tBOLA AZUL\t\t20 POR CIENTO\n"). scanf("%f". printf("\t\tBOLA ROJA\t\t10 POR CIENTO\n"). } else{ if(random==2){ printf("ALEATORIAMENTE USTED OBTUVO UNA BOLA AZUL\n\n").*/ int random. printf("\t\tBOLA BLANCA\t\t NO TIENE\n"). } else{ EL TOTAL A PAGAR ES DE CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 101 ."\n\n"). printf("FELIDADES.\n"). float gasto.2f\n\n". ncargo=gasto-(gasto*0.2f\n\n".2f\n\n"./*Llamando la funcion para limpiar pantalla. printf(" $%. printf("SU NUEVO TOTAL A PAGAR ES: $%. HA GANADO UN 10 POR CIENTO DE DESCUENTO \n\n")."\n\n"). while (gasto < 0) { printf("NO EXISTEN CARGOS NEGATIVOS INTRODUZCA NUEVO GASTO: "). ncargo. printf("\n\t\t COLOR\t\t DESCUENTO\n\n").2)./*Genera los números random*/ if(random==0){ printf("ALEATORIAMENTE USTED OBTUVO UNA BOLA BLANCA\n\n"). printf("\t\tBOLA VERDE\t\t25 POR CIENTO\n").00 Y POR TANTO PARTICIPA EN LA PROMOCION. printf("\t\tBOLA AMARILLA\t\t50 POR CIENTO\n\n"). while(salir==0){ clrscr(). NO HA GANADO NINGUN DESCUENTO.2013 int salir. srand(time(NULL)). ncargo. scanf("%f".").[PROGRAMACION I – C++] IDSystems 2011 .gasto).1). printf("LO SENTIMOS.&gasto.saliryesno. } if (gasto >= 100) { printf("\nSU GASTO IGUALA O SUPERA LOS $100. ncargo=gasto-(gasto*0. } else{ if(random==1){ printf("ALEATORIAMENTE USTED OBTUVO UNA BOLA ROJA\n\n")."\n").

} else{ if(random==4){ printf("ALEATORIAMENTE USTED OBTUVO UNA BOLA AMARILLA\n\n").2f\n\n". } } } ACTIVIDAD Realiza el mismo programa pero usando las sentencias SWITCH donde se requiera CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 102 . } } } } } } else{/*El gasto es menor a $100. HA GANADO UN 25 POR CIENTO DE DESCUENTO \n\n"). scanf("%d"."\n\n").2f\n\n". printf("SU NUEVO TOTAL A PAGAR ES: $%. printf("SU NUEVO TOTAL A PAGAR ES: $%.25). } printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: ").00*/ printf("\n\nLO SENTIMOS. ncargo=gasto-(gasto*0.5). ncargo=gasto-(gasto*0. HA GANADO UN 50 POR CIENTO DE DESCUENTO \n\n").\n\n").&saliryesno). printf("FELIDADES.[PROGRAMACION I – C++] IDSystems 2011 . ncargo. if(saliryesno==1){ salir=1. printf("FELIDADES. ncargo. SU GASTO ES MENOR A CIEN DOLARES Y NO APLICA A LA PROMOCION.2013 if(random==3){ printf("ALEATORIAMENTE USTED OBTUVO UNA BOLA VERDE\n\n")."\n\n").

GetConsoleScreenBufferInfo(hStdOut.dwSize. COORD coord = {0. float dias. csbi. } void main() { int salir.*/ { HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE). prog40_peliculas. coord. salir=0. printf("\n"). El programa calculara el monto a pagar. FillConsoleOutputCharacter(hStdOut.00\t\t4\t\t$1. printf("\tFAVORITOS\t$2. &csbi). según el precio de la pelicula y la tabla de recargos.50\n"). Lo que hace el programa es sumar el precio de la película más el valor del recargo multiplicado por el número de días de atraso.a. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 103 .dwSize. scanf("%d". ' '.nue. while(a==0){ if(cod_pel<1 || cod_pel>4){ printf("INTRODUZCA EL CODIGO DE LA CATEGORIA DE LA PELICULA (ENTRE 1 Y 4): ").2013 Practica/Ejercicio 5 – Retraso en renta peliculas La siguiente practica es para elaborar un programa que se usaria en un videoclub.50\t\t3\t\t$1.est.X * csbi.cpp /*Este programa muestra primero el listado de categoria de peliculas y pide al usuario que introduzca el codigo de la categoria de la pelicula y posterior a ello pide que el usuario introduzca el número de días de atraso en la devolución de la película. DWORD count. CONSOLE_SCREEN_BUFFER_INFO csbi. Este mostrara un listado de peliculas y luego se pedira el numero de dias de atraso de una pelicula.00\t\t2\t\t$0. coord). y así se muestra al final el total a pagar. printf("INTRODUZCA EL CODIGO DE LA CATEGORIA DE LA PELICULA: "). printf("\tNUEVOS\t\t$3. 0}. &count). while(salir==0){ clrscr().sest.fav. printf("\tSUPER ESTRENOS\t$4.h> void clrscr()/*Creando funcion para limpiar pantalla.[PROGRAMACION I – C++] IDSystems 2011 .00\n"). a=0.*/ #include "STdio. SetConsoleCursorPosition(hStdOut.75\n").&cod_pel). printf("\tESTRENOS\t$3.saliryesno.h" #include <windows.50\n\n").Y./*Llamando la funcion para limpiar pantalla. printf("\t CATEGORIA\tPRECIO\t CODIGO\tRECARGO/DIA DE ATRASO\n\n").50\t\t1\t\t$0.*/ int cod_pel.

printf("\nEL TOTAL A PAGAR ES: $%.2f\n\n". } } } ACTIVIDAD Elimina el codigo que no sea necesario y que puedas sustituir por otras funciones o crear las propias CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 104 . } } printf("INTRODUZCA EL NUMERO DE DIAS DE ATRASO EN LA DEVOLUCION: ").fav).5). } else{ a=1. break.nue).&saliryesno).2f\n\n". scanf("%d". case 2: nue=((dias*0.est).[PROGRAMACION I – C++] IDSystems 2011 .sest). break. break. case 3: est= ((dias*1. scanf("%f".&dias). } else{ a=1.75)+3).00)+3. switch(saliryesno){ case 1: salir=1.5)+2. while(a==0){ if(dias<0){ printf("INTRODUZCA EL NUMERO DE DIAS DE ATRASO EN LA DEVOLUCION: "). case 4: sest=((dias*1. scanf("%f". printf("\nEL TOTAL A PAGAR ES: $%.0).2f\n\n". break. printf("\nEL TOTAL A PAGAR ES: $%.2013 scanf("%d".5)+4. printf("\nEL TOTAL A PAGAR ES: $%.5).2f dolares\n\n". a=0. } } switch(cod_pel) { case 1: fav=((dias*0.&dias). } printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: ").&cod_pel).

\n\n"). salir=0. printf("\n\t\t\t EJERCICIO 41 (DADOS)\n"). int saliryesno. Si esto es asi. hStdOutput=INVALID_HANDLE_VALUE. printf("SALGA UN SIETE DOS VECES CONSECUTIVAS. el programa se sale del ciclo o de lo contrario continua. EL PROGRAMA DEBE INDICAR EN QUE TIRADA\n"). Se añade tambien un contador que es el que dice finalmente a las cuantas tiradas se dio el eento de dos sietes consecutivamente*/ #include <stdio.2013 Practica/Ejercicio 6 – Dados Otra practica de programa para ver la funcion aleatoria.[PROGRAMACION I – C++] IDSystems 2011 . Tambien repasamos las sentencias IF…ELSE prog41_dados. printf("\t\t\t =====================\n"). printf("\nPROBLEMA: DISEÑE UN PROGRAMA QUE SIMULE UN LANZAMIENTO DE DOS DADOS HASTA QUE\n"). int a.h> #include <time. //Generar numeros aleatorios CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 105 . FONDO|VERDE).h> #include <windows. printf("OCURRIO ESE RESULTADO.FONDO|AMARILLO).cpp /* DISELE UN PROGRAMA QUE SIMULE EL LANZAMIENTO DE DOS DADOS HASTA QUE SALGA UN SIETE DOS VECES CONSECUTIVAS EL PROGRAMA DEBE INDICAR EN QUE TIRADA OCURRIO ESE RESULTADO Este programa es posible gracias a la utilizacion del generador de numeros aleatorios para simular el lanzamiento de dos dados El programa indica en que tirada se da el evento de los dos dados que caigan 7 consecutivamente. Para lograr esto se da la condicion ("if") que cada vez que caiga un 7 que vaya a evaluar si la siguiente tirada da otro siete. float salir. //Inicializar generador aleatorio while(i==0){ lanzamiento=1+rand()%12. i=0. contador=0. srand(time(NULL)). hStdInput=GetStdHandle(STD_INPUT_HANDLE). SetConsoleTextAttribute(hStdOutput. hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE). SetConsoleTextAttribute(hStdOutput.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main() { HANDLE hStdInput=INVALID_HANDLE_VALUE. while(salir==0) { system("cls"). lanzamiento.

[PROGRAMACION I – C++] IDSystems 2011 . contador=contador+1.\n\n".2013 if (lanzamiento==7){ lanzamiento=1+rand()%12. SetConsoleTextAttribute(hStdOutput. } printf("EL SIETE SALIO DOS VECES CONSECUTIVAS EN LA TIRADA NUMERO %d. sea una moneda (recuerda que tiene 2 lados). scanf("%d". if (lanzamiento==7){ contador=contador+1. } } //Fin del while } ACTIVIDAD Trata de modificar el programa para que en lugar de un dado. salir=1. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 106 . if (saliryesno==1){ printf("\n\a"). &saliryesno).contador). i=1. printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "). } } contador=contador+1. FONDO|AMARILLO).

[PROGRAMACION I – C++] IDSystems 2011 .2013 PARTE IV PRACTICAS PARA DESARROLLAR CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 107 .

La transformacion a equivalencia se hace entre estas cuatro unidades: metros. pulgadas. se le pide que introduzca el valor de la unidad que selecciono y entonces el programa le dice el equivalente de ese valor en todas las otras unidades de medida. conociendo la distancia a recorrer y sabiendo que si el numero de dias de estancia es mayor o igual a 7. PRACTICA 10 – Boletos Desarrolla un programa que nos diga el precio de un boleto de ida y vuelta en autobus. 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 según decida el usuario. y la distancia mayor o igual a 100 kilometros.2013 PRACTICA 7 – Contando dinero Desarrolla un programa que ira preguntando por la cantidad de billetes y monedas de cada valor que tiene el usuario y luego determinara la suma de dinero que hay en monedas y la suma que hay en billetes.[PROGRAMACION I – C++] IDSystems 2011 . 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 con cual desea trabajar. PRACTICA 8 – Numeros Desarrolla un programa donde el usuario introduzca tres numeros enteros y luego nos indique cual de ellos es el central o el de en medio. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 108 . Despues. PRACTICA 9 – Numeros ordenados Crea un programa donde el usuario introduzca tres numeros enteros y se orden de manera ascendete y a continuacion en orden descendente. pies y yardas.

y calcule e imprima la suma adeudada. pueden ser raices reales o imaginarias. TIPOS DE DATOS. OPERADORES PRACTICA 12 – Rectangulo Haga un programa que halle el area y el perimetro de un rectangulo. conociendo su altura y su base. perimetro = 2 * (base + altura). Considere las siguientes formulas: area = base * altura. PRACTICA 13 – Pies Diseñe un programa para convertir una longitud dada en centimetros a pies. Los factores de conversion son los siguientes: 1 yarda = 3 pies 1 pie = 12 pulgadas 1 metro = 100 centimetros 1 pulgada = 2.48 centimetros. B y C de una ecuacion de segundo grado. PRACTICA 15 – Raices Realizar un programa para ingresarle los coeficientes A.2013 PRACTICAS DE VARIABLES. Hacer un programa al cual se le dan los valores de C. Las raices de una ecuacion de segundo orden. PRACTICA 14 – Triangulo Calcular el area de un triangulo. pulgadas. pies y yardas.54 centimetros CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 109 . Considere que: 1 pie = 30. minutos y segundos. y que calcule y muestre por pantalla las raices X1 y X2. X1 = (-B + SQR(B^2 – 4*A*C)) / (2*A) y X2 = (-B – SQR(B^2 – 4*A*C)) / (2*A). Al final de los N meses la cantidad adeudada es C * (1 +I) ^N. Para este programa asuma que las raices son siempre reales. y que imprima esa medida expresada en centimetros. PRACTICA 17 – Prestamo Se solicita un prestamo por C pesos durante N meses a una tasa de interes mensual L. PRACTICA 16 – Tiempos Diseñe un programa para sumar dos marcas de tiempo dadas en horas. N e L.[PROGRAMACION I – C++] IDSystems 2011 . ASIGNACIONES. PRACTICA 18 – Metros Hacer un programa para ingresarle una medida en metros.

A Carlos le dejo 1/3 de su fortuna. PRACTICA 27 – Celsius Haga un programa para convertir una temperatura en grados Fahrenheit a grados Celsius.2013 PRACTICA 19 – Millonario Un millonario excentrico tenia tres hijos: Carlos. PRACTICA 25 – Peso Dado el peso de una persona en libras. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 110 . PRACTICA 21 – Circulo Escribe un programa en C++ que calcule el area y perimetro de un circulo PRACTICA 22 – Maquina reversadora de numeros Haz un programa que reciba un numero de 5 digitos (suponga que lo ingresan bien) y muestre el numero en forma inversa.453592Kg. El uso del operador “*” y “\” esta prohibido. PRACTICA 26 – Fahrenheit Haga un programa para convertir una temperatura en grados Centigrados a Fahrenheit. NOTA: 1 libra es aproximadamente igual a 0. PRACTICA 23 – Nibles Haga un programa que sume los nibles (4 bits) mas significativo y menos significativo de una variable de un byte llamada dato y escriba el resultado en una variable de un byte llamada resul. La formula para hacer la conversion es: Fahrenheit = (9 * Celsius) / 5 + 32. Al morir dejo el siguiente legado: A jose le dejo 4/3 de lo que le dejo Carlos. Utilizar la formula: Celsius = (5/9)*(Fahrenheit-32). A marta le dejo la mitad de lo que le dejo a Jose. PRACTICA 24 – Multiplicacion por 300 Haga un programa que lea un entero y lo multiplique por 300. Jose y Marta.[PROGRAMACION I – C++] IDSystems 2011 . PRACTICA 20 – Promedio Haga un programa para calcular el promedio de cinco calificaciones. Preparar un programa para darle la suma a repartir e imprima cuanto le toco a cada uno. calcule su peso en kilogramos.

etc. El dígito de control de un ISBN se puede calcular multiplicando cada dígito del ISBN por el lugar que ocupa dicho dígito en la secuencia numérica (multiplicando el primero por la izquierda por 1. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 111 . El código del país o lengua de origen 2. Estas partes tienen distintas longitudes y generalmente están separadas por guiones. Por ejemplo. El editor 3. El número tiene siempre 10 dígitos de longitud. y está dividido en cuatro partes: 1. para calcular el dígito de control de un ISBN cuyos nueve primeros dígitos son 0-306-40615: 1x0 + 2x3 + 3x0 + 4x6 + 5x4 + 6x0 + 7x6 + 8x1 + 9x5 = 0 + 6 + 0 + 24 + 20 + 0 + 42 + 8 + 45 = 145 = 145%11 = 2 Por lo que el dígito de control es 2.[PROGRAMACION I – C++] IDSystems 2011 . PRACTICA 29 – Don Manolo El almacen “Don Manolo”. Escriba un programa que. El número del artículo. a partir de los dígitos de un ISBN. El dígito de control. con 10 representado por el carácter "X". necesita un programa que ayude a calcular la forma de dar el cambio a sus clientes con el minimo de billetes y monedas posible.) Tomando después la suma de las multiplicaciones y calculando el modulo 11 de esta suma. calcule el dígito de control.2013 PRACTICA 28 – Determinante Dada una matriz de tres filas por tres columnas: | A1 A2 A3 | | A4 A5 A6 | | A7 A8 A9 | Puede obtenerse su determinante mediante la formula: D = A1*A5*A9 + A2*A6*A7 + A3*A4*A8 – A3*A5*A7 – A2*A4*A9 – A1*A6*A8 Preparar un programa que permita ingresar por teclado los elementos de la matriz. el siguiente por 2. o ISBN (pronunciado a veces como "is-bin"). y que calcule y muestre por pantalla el determinante. y 4. es un identificador único para libros.ISBN El International Standard Book Number (en español Número Internacional Estándar del Libro). PRACTICA 30 . y la secuencia completa es ISBN 0-306-40615-2.

CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 112 . Los dos últimos números se utilizan para verificar si el número de tarjeta de crédito es correcto. Donde s es el semi-perímetro (a+b+c)/2. Entonces el área de un triángulo se puede calcular utilizando la siguiente formula: área = SQR( s(s-a)(s-b)(s-c) ). Each day on the road. A estos se le conocen como los check digits. PRACTICA 33 – Distancia Euclidiana Haga un programa que pregunte por las coordenadas de dos puntos en el plano y calcule la distancia (euclidiana) entre ellos.95 Thru: 20. the salesperson records the amount of gasoline put in the car.30 Wed: 10. Los check digits se calculan buscando el residuo de lo acumulado de números en posiciones pares entre el acumulado de números en posiciones impares. Los demás números significan la oficina del representante de servicio y los números que identifican al cliente. Construya un programa que dada la siguiente fórmula valide los números de tarjeta de crédito.00 Find how many miles could the saleperson drive (in average) with a galon.[PROGRAMACION I – C++] IDSystems 2011 . Cada número tiene un significado. 3. Los números en posiciones pares se acumulan. Cada número en posicion impares se multiplica por 2 y se acumula. y2) esta dada por la formula d=SQR( (x2-x1)^2 + (y2-y1)^2 ). He travels by company car. Given the starting odometer reading(that is. b y c son las longitudes de los lados de un triángulo. here some sample data: start: 68723 end: 71289 Mon: 15. 2. 1. the odometer reading before he leaves on monday) and the ending odometer reading (the odometer reading after he returns home on friday). La distancia entre dos puntos (x1.75 Tues: 16. PRACTICA 34 – Validacion de Tarjetas de credito Todas las tarjetas de crédito tienen un sistema de verificación de números. Esto se hace para verificar la autenticidad del número de la tarjeta. PRACTICA 32 – Triangulo II Suponga que a. La mayoría de las veces los primeros números agrupados (que suelen ser de cuatro) significan el tipo de tarjeta.2013 PRACTICA 31 – Odometer A sales person leaves his home every Monday and returns every Friday. y1) y (x2.65 Fri: 30.

[PROGRAMACION I – C++] IDSystems 2011 . igual a cero o negativo.23 Pesos Colombianos 1 Libra Esterlina = 3. Las divisas que puede manejar su programa son: 1 Euro = 2.948.18 Pesos Colombianos 1 Dólar Canadiense = 1.679. PRACITCA 38 – Par Impar Escribir un programa que indique si un número introducido por teclado es par o impar.50 Pesos Colombianos 1 Yen Japones = 19.00 Pesos Colombianos 1 Dólar Australiano = 734. PRACTICA 39 – Convertidor de divisas Hacer un programa que me permita convertir una cierta cantidad de Pesos Colombiano en otras divisas.+ .253.77 Pesos Colombianos [Nota] Haga uso del comando switch para desplegar el menú CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 113 . PRACTICA 37 – Positivo Negativo Escribir un programa que indique si un número introducido por teclado es positivo.2013 PRACTICA 35 – Suma de fracciones Para sumar dos números racionales se utiliza la siguiente fórmula: a c ad + bc .921. PRACTICAS DE ESTRUCTURAS DE CONTROL PRACTICA 36 – Max Calcular el máximo de dos números.17 Pesos Colombianos 1 Peso Chileno = 4.88 Pesos Colombianos 1 Dólar Americano = 2.= ------b d bd Haga un programa que calcule la suma entre dos fracciones.

[Nota] Por simplicidad.5. 1 para D y 0 para F. asuma que el programa solo acepta letras mayúsculas. PRACTICA 42 – Diferencia Ingresar tres números y hallar la diferencia del mayor menos el menor. 2. e) si es positivo y menor que 10. "Buenas tardes" o "Buenas noches".5 o F de lo contrario. Se considera que es de día desde las 6:00 horas hasta las 11:59 horas. PRACTICA 43 – Saludo Escriba un programa que lea un instante de tiempo expresado en horas y minutos y escriba como respuesta uno de los mensajes "Buenos das". El programa deberá utilizar una escala de 4 puntos para calcular el promedio numérico (PN): 4 para A. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 114 . Se considera que es de noche desde las 19:01 horas hasta las 5:59 horas PRACTICA 44 . D si es mayor a 0. PRACTICA 41 – Bisiesto Haga un programa que determine si un año es bisiesto: si es divisible por 4. C si es mayor a 1. c) si es cuadrado perfecto (tiene raíz cuadrada exacta). 2 para C. calcular e imprimir su inverso (1/x). de acuerdo con las siguientes reglas: 1. 3 para B.2013 PRACTICA 40 – Grado Promedio Hacer un programa que lea tres grados en letras. imprimir el mensaje "Es un cuadrado perfecto".5. B si es mayor a 2. b) si es distinto de cero. Su programa debe mostrar que el promedio es A si PN es mayor a 3. d) si es par. y muestre su promedio. pero no es divisible por 100 o si es divisible por 400. f) si está comprendido entre 32 y 127 (ambos inclusive) imprimir el carácter cuyo código ASCII representa.Control Escriba un programa que lea un número x del teclado y lleve a cabo las siguientes operaciones: a) si es positivo. 3. Se considera que es por la tarde desde las 12:00 horas hasta las 19:00 horas. calcular e imprimir su raíz cuadrada. imprimir el mensaje "Sólo tiene un dígito". calcular e imprimir su cociente entre 2 (x/2).5.[PROGRAMACION I – C++] IDSystems 2011 .

4*A*C. Si es un triángulo determine de que tipo de triángulo se trata entre: equilátero (si tiene tres lados iguales). isósceles (si tiene dos lados iguales) o escaleno (si tiene tres lados desiguales). PRACTICAS DE ESTRUCTURAS REPETITIVAS PRACTICA 50 – Countdown Haga un programa que haga un conteo regresivo desde n hasta 1. Donde 1 es Domingo. X1_parte_imaginaria = SQR(-discriminante)/(2*A) y X2_parte_imaginaria = -SQR(-discriminante)/(2*A). Finalmente. Por ejemplo. las dos raíces son complejas conjugadas y valen X1_parte_real=X2_parte_real=-B / (2*A). las dos raices son reales e iguales y valen X1 = X2 = -B / (2*A). introducido por teclado. Primero calcule el discriminate B^2 . el factorial de 4 es 4x3x2x1 = 24. tener en cuenta la posiblidad de tener raíces negativas. PRACTICA 51 – Factorial El factorial de un número es el producto de todos los números entre 1 y ese número. PRACTICA 46 – ASCII Lea un carácter y deduzca si es vocal. PRACTICA 49 – Super Triangulo Diseñe un programa que lea tres longitudes y determine si forman o no un triángulo.[PROGRAMACION I – C++] IDSystems 2011 . PRACTICA 47 – Super Raices Partiendo del enunciado del problema [Raíces] arriba mencionado. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 115 . Considere que para formar un triángulo se requiere que: "el lado mayor sea menor que la suma de los otros dos lados". donde n es un número entero positivo. dígito o caracter especial. si el discriminante es > 0. si el discriminante es 0. PRACTICA 48 – Dia semana Se desea escribir el nombre del día de la semana en función de un número de día.0. Haga un programa para calcular el factorial de un número n. 2 Lunes y así sucesivamente. consonante. las dos raíces son reales y distintas y se caculan de la misma manera que en el programa [Raíces]. si el discriminante es < 0.2013 PRACTICA 45 – Multiplo Ingresar un número n y verificar si es múltiplo de 3 o 5.0.

PRACTICA 59 – Rombo Escribir un programa que lea un entero y un carácter. Actualmente hay 40000 profesionales del área. hay que comprobar que el número no sea divisible por ningún entero entre 2 y la raíz cuadrada del propio número. Correct the errors. + 1/50. PRACTICA 55 – Super Primos Haga un programa que imprima todos los números primos entre 1 y n. los números primos son cantidades enteras positivas que únicamente pueden dividirse por uno o por sí mismos.[PROGRAMACION I – C++] IDSystems 2011 . There are some errors. PRACTICA 60 – Binario The following program reads integers and prints them in binary by division. Find them.2013 PRACTICA 52 – Serie 1 Elabore un programa que calcule e imprima la suma de 1 + 1/2 + 1/3+ 1/4 + 1/5 + 1/6 + . CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 116 . using the shift and "and" operators. But there are two errors in the program. PRACTICA 57 – Cuadrado Has un programa en C++ que dibuje un cuadrado de n asteriscos. Nota: Para saber si un número n es primo. . PRACTICA 53 – Primo Por si no lo recurda. La salida debe ser un rombo dibujado con el carácter dado y de anchura máxima dada por el entero leido. considerando un crecimiento anual de 11%. . Hacer un programa que detecte si un número es primo o no. PRACTICA 54 – Ingenieros 2050 Estime la población de Ingenieros en sistemas en Mexico para el año 2050. PRACTICA 58 – Decimal a Hexadecimal This program reads integers and prints them in hexadecimal. PRACTICA 56 – Mayor Menor Leer una serie de números hasta que el usuario ingrese el valor sentinela de -99 y escriba el número mayor y el número menor.

. Si introducimos un número erróneo nos avisará y volver a mostrar el menú. etc.Sumar 2.Restar 3.. PRACTICA 65 – Nicomaco Considere la siguiente propiedad descubierta por Nicómaco de Gerasa.Multiplicar 4. y finalice cuando el usuario indique que desea ver la tabla del cero. "Sumando el primer numero impar.Dividir 0. El programa irá dando pistas al jugador indicándole si el número introducido por el jugador es menor o mayor que el número que tiene que adivinar. escribiendo un número negativo). se obtiene el primer cubo. Sumando los tres siguientes impares se obtiene el tercer cubo..2013 PRACTICA 61 – Tablas de Multiplicar Implemente un programa que muestre por pantalla las tablas de multiplicar que el usuario quiera.Terminar ============================== Ingrese su selección > __ El programa deberá verificar que introducimos un número válido (del 0 al 4). Nos mostrara el menú siguiente: ====== MENU CALCULADORA ====== 1. PRACTICA 64 – Adivinar Diseñe un programa para jugar a adivinar un número entre 0 y 100. PRACTICA 62 – Divisores Implemente un programa que calcule los divisores de un número entero. Si introducimos un 0 el programa terminar.. mostrará el resultado dependiendo de nuestra elección y volverá a mostrar el menú." Ejemplo: 1^3 = 1 = 1 2^3 = 3 + 5 = 8 3^3 = 7 + 9 + 11 = 27 4^3 = 13 + 15 + 17 + 19 = 64 5^3 = 21 + 23 + 25 + 27 + 29 = 125 CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 117 . Sumando los dos siguientes impares se obtiene el segundo cubo.[PROGRAMACION I – C++] IDSystems 2011 . Si elegimos un número entre el 1 y el 4 nos pedirá dos números. El juego termina cuando el jugador adivina el número o decide terminar de jugar (por ejemplo.. PRACTICA 63 – Calculadora Hacer un programa que simule una calculadora.

Dada la entrada. la sumatoria de los números pares. la sumatoria de los números impares. PRACTICA 67 – Sumatorias Se tiene una entrada de dígitos entre 0 y 9. así como la posición que ocupa en el vector. Ejemplo: 6 es un número perfecto porque 1 + 2 + 3 = 6. PRACTICAS CON VECTORES PRACTICA 71 – Minimo Hacer un programa que: a) Lea una secuencia de 5 valores numéricos reales y los almacene en una vector. PRACTICA 69 – Power Write a program to calculate the power of one number raised to another. por ejemplo 224 y 284 son amigos ya que: 284 : 1 + 2 + 4 + 71 + 142 = 220 220 : 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284 Elabore un programa que imprima todas las parejas de números amigos menores o iguales que un numero n ingresado por teclado. Elabore un programa que calcule todos los números perfectos menores que un número n dado. el promedio de todos los números. el total de números impares. precedida por el número total de dígitos a leer. PRACTICA 68 – Guess my age Write a program to play "Guess my age:". se debe calcular el total de número pares. PRACTICA 66 – Perfectos Los números perfectos son aquellos enteros que son iguales a la suma de sus divisores sin incluir a él mismo. El valor de n debe ser un valor leido por teclado. b) Muestre por pantalla cuál es el valor mínimo.2013 Desarrolle un programa que escriba los n primeros cubos utilizando esta propiedad. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 118 .[PROGRAMACION I – C++] IDSystems 2011 . PRACTICA 70 – Amigos Dos números son amigos si cada una de ellos es igual a la suma de los divisores del otro. la sumatoria de los cuadrados de los números pares y la sumatoria de los cuadrados de los números impares.

1 ·---. 2^2. Un puntaje de 1 significa que la calidad es "pésima" y un puntaje de 10 significa que la calidad es "excelente".--.--- PRACTICA 74 – Serie Escriba un programa en C++ que calcule e imprima el promedio y la varianza de los elementos un arreglo de 10 elementos. donde cada uno de ellos se corresponde con los elementos de la serie 1. CUADERNO DE EJERCICIOS Y PRACTICAS C++ Página 119 .2013 En el caso de aparecer repetido el valor mínimo se mostrara el menor índice de los valores mínimos PRACTICA 72 – Cafeteria Veinte estudiantes de Ingeniería de Sistemas se les pidió que valoraran de 1 a 10 la calidad de los almuerzos en la cafetería de la universidad. .4 ····5 ····· 6 -···· 7 --··· 8 ---·· 9 ----· Cada número en morse se representará en C++ por una cadena de 5 caracteres compuesta de puntos y rayas.. Un ejemplo de lo que debe hacer el programa es: #morses Entre n: 2005 . Leyenda: — : raya (señal larga) · : punto (señal corta) Numeros 0 ----. Su programa deberá colocar las 20 respuestas en un arreglo de tipo int y determinar la frecuencia de cada puntaje. 3^3.. #morse Entre n: 1992 .---. ..[PROGRAMACION I – C++] IDSystems 2011 ... 4^4.3 ···-. ----. PRACTICA 73 – Traductor de Codigo Morse El objetivo de este programa consiste en realizar un traductor de número a morse..----. Las frecuencias deben ser mostradas en forma de histograma. según la tabla anterior.. 5^5.----. .----...2 ··--.

Sign up to vote on this title
UsefulNot useful