Download - Cuadernos de Ejercicios C
-
8/7/2019 Cuadernos de Ejercicios C
1/119
CUADERNO DE EJERCICIOS Y PRA
CUADERN
Cuaderno de Trabajo Visual Basic s
Comercial-Licenciamie
[PROGRAMACION I C++] IDSystems
CTICAS C++
DE TRABAJO DE C
encuentra bajo una Licencia Creative Commo
to Recproco 3.0 Unported. Diciembre IDSys
011 - 2013
gina 1
+
s Atribucin-No
ems
-
8/7/2019 Cuadernos de Ejercicios C
2/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 2
Contenido
PARTE I ............................................................................................................................................. 5INSTRUCCIONES ................................................................................................................................ 6
Ejercicio 1 Hola Mundo .................................................................................................................. 7
Ejercicio 2 Tipos de datos ............................................................................................................... 7
Ejercicio 3 Mezcla de tipos de datos ............................................................................................... 8
Ejercicio 4 Simplificando comandos y datos ................................................................................... 9
Ejercicio 5 Variables de preprocesador ......................................................................................... 10
Ejercicio 6 Salida por pantalla ....................................................................................................... 11
Ejercicio 7 Entrada y salida por pantalla ....................................................................................... 12
Ejercicio 8 Operadores y tipos de datos ........................................................................................ 13
Ejercicio 9 Operaciones simples ................................................................................................... 15
Ejercicio 10 - Concatenacion ........................................................................................................... 17
Ejercicio 11 IfElse ....................................................................................................................... 18
Ejercicio 12 Operaciones condicionales ........................................................................................ 19
Ejercicio 13 IFELSE anidados ...................................................................................................... 21
Ejercicio 14 Salida a un archivo externo ....................................................................................... 24
Ejercicio 15 - Switch ........................................................................................................................ 27
Ejercicio 16 Area de poligonos con Switch .................................................................................... 28
Ejercicio 17 Ciclo For .................................................................................................................... 31
Ejercicio 18 Ciclo while ................................................................................................................. 33
Ejercicio 19 Ciclos anidados .......................................................................................................... 34
Ejercicio 20 Ciclo While ................................................................................................................ 35
PRACTICA 1 ..................................................................................................................................... 37
Ejercicio 21 - Juego del Granjero ..................................................................................................... 37
Ejercicio 22 - Juegos ........................................................................................................................ 48
Ejercicio 22a Juego de Adivinanzas ........................................................................................... 49
Ejercicio 22b - Tragamonedas ..................................................................................................... 51
Ejercicio 22c Pseudovirus ......................................................................................................... 54
Ejercicio 23 - Juego del Ahorcado .................................................................................................... 58
Ejercicio 24 - Juego Las Torres de Hanoi .......................................................................................... 73
Ejercicio 25 Arreglos ..................................................................................................................... 78
Ejercicio 26 ..................................................................................................................................... 80
Ejercicio 27 Cadenas .................................................................................................................... 82
Ejercicio 28 - Arreglos y cadenas ..................................................................................................... 84
Ejercicio 29 - Juego del Gato (Tic-Tac-Toe) ...................................................................................... 86
Ejercicio 30 Estructuras ................................................................................................................ 90
Practica/Ejercicio 1 Zodiaco ......................................................................................................... 92
Practica/Ejercicio 2 Califaciones Estilo USA .................................................................................. 96
Practica/Ejercicio 3 Sueldos a trabajador...................................................................................... 98
Practica/Ejercicio 4 Promocion de Ventas .................................................................................. 100
Practica/Ejercicio 5 Retraso en renta peliculas ........................................................................... 103
Practica/Ejercicio 6 Dados .......................................................................................................... 105
-
8/7/2019 Cuadernos de Ejercicios C
3/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 3
PRACTICA 7 Contando dinero ..................................................................................................... 108
PRACTICA 8 Numeros ................................................................................................................. 108
PRACTICA 9 Numeros ordenados ............................................................................................... 108
PRACTICA 10 Boletos .................................................................................................................. 108
PRACTICA 11 Conversiones metricas .......................................................................................... 108
PRACTICAS DE VARIABLES, TIPOS DE DATOS, ASIGNACIONES, OPERADORES ................................ 109
PRACTICA 12 Rectangulo ........................................................................................................ 109
PRACTICA 13 Pies ................................................................................................................... 109
PRACTICA 14 Triangulo ........................................................................................................... 109
PRACTICA 15 Raices ................................................................................................................ 109
PRACTICA 16 Tiempos ............................................................................................................ 109
PRACTICA 17 Prestamo .......................................................................................................... 109
PRACTICA 18 Metros .............................................................................................................. 109
PRACTICA 19 Millonario ......................................................................................................... 110
PRACTICA 20 Promedio .......................................................................................................... 110
PRACTICA 21 Circulo ............................................................................................................... 110
PRACTICA 22 Maquina reversadora de numeros .................................................................... 110
PRACTICA 23 Nibles ................................................................................................................ 110
PRACTICA 24 Multiplicacion por 300 ...................................................................................... 110
PRACTICA 25 Peso .................................................................................................................. 110
PRACTICA 26 Fahrenheit ........................................................................................................ 110
PRACTICA 27 Celsius ............................................................................................................... 110
PRACTICA 28 Determinante .................................................................................................... 111
PRACTICA 29 Don Manolo ...................................................................................................... 111
PRACTICA 30 - ISBN .................................................................................................................. 111
PRACTICA 31 Odometer ......................................................................................................... 112
PRACTICA 32 Triangulo II ........................................................................................................ 112
PRACTICA 33 Distancia Euclidiana .......................................................................................... 112
PRACTICA 34 Validacion de Tarjetas de credito ...................................................................... 112PRACTICA 35 Suma de fracciones ........................................................................................... 113
PRACTICAS DE ESTRUCTURAS DE CONTROL .................................................................................. 113
PRACTICA 36 Max ................................................................................................................... 113
PRACTICA 37 Positivo Negativo .............................................................................................. 113
PRACITCA 38 Par Impar .......................................................................................................... 113
PRACTICA 39 Convertidor de divisas ....................................................................................... 113
PRACTICA 40 Grado Promedio ................................................................................................ 114
PRACTICA 41 Bisiesto ............................................................................................................. 114
PRACTICA 42 Diferencia.......................................................................................................... 114
PRACTICA 43 Saludo ............................................................................................................... 114
PRACTICA 44 - Control ............................................................................... ............................... 114PRACTICA 45 Multiplo ............................................................................................................ 115
PRACTICA 46 ASCII ................................................................................................................. 115
PRACTICA 47 Super Raices ...................................................................................................... 115
PRACTICA 48 Dia semana ......................................................................... ............................. 115
PRACTICA 49 Super Triangulo ................................................................................................. 115
PRACTICAS DE ESTRUCTURAS REPETITIVAS ................................................................................... 115
PRACTICA 50 Countdown ....................................................................................................... 115
-
8/7/2019 Cuadernos de Ejercicios C
4/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 4
PRACTICA 51 Factorial ............................................................................................................ 115
PRACTICA 52 Serie 1 ............................................................................................................... 116
PRACTICA 53 Primo ................................................................................................................ 116
PRACTICA 54 Ingenieros 2050 ................................................................................................ 116
PRACTICA 55 Super Primos ..................................................................................................... 116
PRACTICA 56 Mayor Menor .................................................................................................... 116
PRACTICA 57 Cuadrado .......................................................................................................... 116
PRACTICA 58 Decimal a Hexadecimal ..................................................................................... 116
PRACTICA 59 Rombo .............................................................................................................. 116
PRACTICA 60 Binario .............................................................................................................. 116
PRACTICA 61 Tablas de Multiplicar ......................................................................................... 117
PRACTICA 62 Divisores ........................................................................................................... 117
PRACTICA 63 Calculadora ....................................................................................................... 117
PRACTICA 64 Adivinar............................................................................................................. 117
PRACTICA 65 Nicomaco .......................................................................................................... 117
PRACTICA 66 Perfectos ........................................................................................................... 118
PRACTICA 67 Sumatorias ........................................................................................................ 118
PRACTICA 68 Guess my age .................................................................................................... 118
PRACTICA 69 Power ............................................................................................................... 118
PRACTICA 70 Amigos .............................................................................................................. 118
PRACTICAS CON VECTORES ........................................................................................................... 118
PRACTICA 71 Minimo ............................................................................................................. 118
PRACTICA 72 Cafeteria ........................................................................................................... 119
PRACTICA 73 Traductor de Codigo Morse ............................................................................... 119
PRACTICA 74 Serie .................................................................................................................. 119
-
8/7/2019 Cuadernos de Ejercicios C
5/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 5
PARTE ILos ejercicios y practicas de esta primera parte estan enfocados a entender los conceptos y el modo
de sintaxis de C++. Se vera la estructura basica de un programa, las instrucciones estandar y al
finalizar algunos ejemplos de comandos condicionales SIENTONCES.
-
8/7/2019 Cuadernos de Ejercicios C
6/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 6
INSTRUCCIONES
En este cuaderno de trabajo tendras los EJERCICIOS y PRACTICAS que veras en el curso de
Programacion I. Los ejercicios seran instrucciones paso a paso o programas ya resueltos para que los
teclees, te familiarices con la sintaxis, comados y realices alguna tarea sobre ellos como generar los
diagramas de flujo, pseudocodigo o indicar su funcionamiento. Las practicas, no tendran aqu la
respuesta, sino que deberas realizarla desde cero.
Debes teclear cada uno de los programas en tu compilador de C++. Hacer la compilacion y
encadenamiento y ver los resultados.
Recuerda que debes guardarlos y entregar tanto el compilado (.EXE) como el codigo fuente a tu
profesor. Ambos deben ir en un archivo ZIP como se describe a continuacion, si se los envias por
correo electronico:
Alumno_Grado_NoEjercicio...... Ejemplo: ReynolHernandez_03_Prog01.zip
Ademas, cada ejercicio debera ir acompaado de su diagrama de flujo y pseudocodigo.
Los programas fueron creados en Visual C++ 6.0, de la suite Microsoft Visual Studio 6.0 que
soporta hasta Windows XP. Para versiones Windows Vista y Windows 7, este compilador no
funcionara. Necesitaras descargar el Visual C++ 2008 Studio Express y posiblemente hacer
algunas modificaciones en el codigo.
Actualizacion 2013.
Desde el curso 2012, se utilizan 3 compiladores distintos para que el alumno aprenda las
diferencias entre los IDE y no propiamente en el lenguaje de C++. La primera parte
corresponde al compilador ZINJAI. La segunda parte al compilador MS Visual C++ 6.0 y la
tercera parte al compilador DevC++. Se han seleccionado estos compiladores porque se prestan
mejor para la manera didactica, aunque en la parte cuarta se utiliza ZINJAI con librerias
visuales y CODEBLOCKS. Los compiladores de NetBeans y Eclipse no se ven sino hasta el
siguiente curso.
En vista de que el compilador MS VISUAL C++ 6.0 no funciona de manera correcta en
Windows Vista, 7 y 8, se opto por utilizar la version Visual C++ 2008 Express o en su defecto
DevC++. Los ejercicios por tanto, mostraran codigo de ambas versiones.
-
8/7/2019 Cuadernos de Ejercicios C
7/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 7
Ejercicio 1 Hola Mundo
1. El primer programa es el clasico HOLA MUNDO. Aqui lo hemos nombrado hola.cpp
Primero.cpp
#includeint main(){
std::cout
-
8/7/2019 Cuadernos de Ejercicios C
8/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 8
SENTENCIA ACCION
Que tipo de variables declaramos?
Que operaciones estamos realizando?
Cual es el comando para mostrar salida porpantalla?
Ejercicio 3 Mezcla de tipos de datos
El tercer programa es una variacion del segundo que incorpora un tipo de dato caracter para mezclar
los dos
Segundob.cpp
#includeint main(){
int x = 5;int y = 7;std::cout
-
8/7/2019 Cuadernos de Ejercicios C
9/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 9
Ejercicio 4 Simplificando comandos y datos
El cuarto programa es otra variacion del no. 2, pero aqui pedira una entrada por el teclado, se
almacena en una variable caracter y luego muestra todos los resultados.
Tercero.cpp
/* Tercero.cppEste es el tercer programa y vamos a ver la entrada del teclado y salidapor pantallaen la consola */
/* Esta es la libreria basica */
#include
/* Para no repetir la libreria std, la declaramos aqui */using std::cout;using std::cin;
int main(){
int x = 5;int y = 7;char nombre [200];cout
-
8/7/2019 Cuadernos de Ejercicios C
10/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 10
Ejercicio 5 Variables de preprocesador
En este ejercicio veremos como usar variables para ejecutarse en el preprocesador
Prog05.cpp
/* Prog05_Case.cppUn programa que pregunta su nombre y le saludaDe: El C++ por la practica. FICHA 1. Pag. 15Por: Lic. Sergio Hugo Sanchez O.Para: Universidad Valle del Bravo
17, Mayo,2009 */
#include#define FRIEND 1
int main (void){
char name [200];std::cout > name;
#ifdef FRIENDstd::cout
-
8/7/2019 Cuadernos de Ejercicios C
11/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 11
Ejercicio 6 Salida por pantalla
Simple programa de salida por pantalla
Prog06.cpp
/* Prog06_17.cpp
Programa del ejercicio propuesto pag. 17 C++ por la practica.Para repasar la forma de mostrar mensajes en la pantalla.Por: Lic. Sergio Hugo Sanchez O.Para: Universidad Matamoros17,Mayo, 2009 */#includeint main(void){
cout
-
8/7/2019 Cuadernos de Ejercicios C
12/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 12
Ejercicio 7 Entrada y salida por pantalla
Entrada y salida por pantalla:
Prog07.cpp
/*Prog07_17.cpp
Programa para el ejercicio propuesto en pag. 17 Manual C++ por lapractica4.1 no. 2Por: Lic. Sergio Hugo Sanchez O.Para: Universidad Matamoros17, Mayo, 2009 */#includeint main(void){
char msg[200] ;cout
-
8/7/2019 Cuadernos de Ejercicios C
13/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 13
Que tipo de dato estamos declarando? Y como?
Ejercicio 8 Operadores y tipos de datos
Programa que muestra el uso de operadores y tipos de datos
Prog08.cpp
/* Prog08_19.cppPrograma de la pagina 19 Curso C++ a la practicaPara conocer los tipos basicos de datos en CPor: Lic. Sergio Hugo Sanchez O
Para: Universidad Matamoros17, Mayo, 2009
FICHA2*/#include
int global = 5;
int main (void){
-
8/7/2019 Cuadernos de Ejercicios C
14/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 14
int a= 1;double x = 1.2 ;double y = 2.3 ;
cout
-
8/7/2019 Cuadernos de Ejercicios C
15/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 15
INSTRUCCION ACCION
Que tipos de datos estamos declarando?
Que tipos de operaciones estamos realiznado?
Cual es el resultado del programa?
Ejercicio 9 Operaciones simples
Otro ejemplo de operaciones simples con tipos de datos numericos
Prog09.cpp
/* Prog09_21.cppPrograma pag 21 El C++ por la practicaTipos de datos numericos y operaciones simplesPor: Lic. Sergio Hugo Sanchez O.Para: Universidad Valle del Bravo17, Mayo, 2009
Ficha2*/#include
int main (void){
double x, y, z;cout x;cout y;z = x+y;cout
-
8/7/2019 Cuadernos de Ejercicios C
16/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 16
double x, y, z;cout x;cout y;z = x+y;cout
-
8/7/2019 Cuadernos de Ejercicios C
17/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 17
Ejercicio 10 - Concatenacion
Suma de caracteres, tambien llamada CONCATENACION.
Prog11.cpp
/*Prog11.cpp
Programa que permite la suma (concatenacion) de 2 caracteres.Por: Lic. Sergio Hugo Sanchez O.Para: Universidad Matamoros17, Mayo, 2009
Ficha 2*/#includeint main (void){
char a; //declaracion de la variable tipo caracterchar b;
cout a;
cout b;
a+=b; // a=a+b, suma o concatenacion de caracterescout
-
8/7/2019 Cuadernos de Ejercicios C
18/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 18
Responde a lo siguiente:
Qu es la concatenacin?
Cmo se realiza la concatenacin?
Ejercicio 11 IfElse
Ejercicio para usar la sentencia IF/ELSE
Prog12.cpp
/* Sentencias tipo if/else. Anidamientos y operaciones logicas */#include
int main (){
int i = 1; int j = 2;if (i>j){cout
-
8/7/2019 Cuadernos de Ejercicios C
19/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 19
Explica el comando de IF
Ejercicio 12 Operaciones condicionales
Ejercicio con operaciones, entrada salida por consola y condicional
Prog13.cpp
/* Pregunta dos numoers, que operacion deseas hacer y muestra el resultado */#includeint main(){
double a, b;int c;
cout a;cout b;cout c;
if (c==1) {cout
-
8/7/2019 Cuadernos de Ejercicios C
20/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 20
}
/* Pregunta dos numeros, que operacion deseas hacer y muestra el resultado */#include using namespace std;
int main(){
double a, b;int c;cout a;cout b;cout c;
if (c==1) {cout
-
8/7/2019 Cuadernos de Ejercicios C
21/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 21
Realiza el pseudocdigo del programa anterior
Ejercicio 13 IFELSE anidados
Ejercicio mas complejo de IF...ELSE anidados
Prog14.cpp
/*Calcular el area de diferentes poligonos */#includeint main(){
double a, b;double area;int figura;cout a;
-
8/7/2019 Cuadernos de Ejercicios C
22/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 22
cout > b;area = a*b;}
elseif (figura==3){ cout a;cout > b;area=a*b/2.0;}
else{ cout
-
8/7/2019 Cuadernos de Ejercicios C
23/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 23
return 0;}
ACCION COMANDO
Qu son las condiciones anidadas?
Cmo se escriben las condiciones anidadas?
-
8/7/2019 Cuadernos de Ejercicios C
24/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 24
Ejercicio 14 Salida a un archivo externo
Programa mas complejo que involucra: IF...ELSE, matrices, mas de 1 libreria, creacion de archivo de
texto, entrada y salida por pantalla. Nuevos comandos
Prog15.cpp
/* Se define la dimesion de un vector mediante un entero, el concepto dematrizse restringe de momento a un vector, se escribe un texto de salidamediante sentencialogica
Aqui veremos otras librerias de C, como se crean los vectores y el uso deun archivode texto
*/#include
#include
#define MAX_SIZE 25
int main (){
int size;ofstream MyReport("resultado.txt");
cout MAX_SIZE){
cerr
-
8/7/2019 Cuadernos de Ejercicios C
25/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 25
logica
Aqui veremos otras librerias de C, como se crean los vectores y el uso deun archivode texto
*/#include #include
using namespace std;#define MAX_SIZE 25
int main (){
int size;ofstream MyReport("resultado.txt");
cout MAX_SIZE)
{cerr
-
8/7/2019 Cuadernos de Ejercicios C
26/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 26
Cules son los comandos de archivo que
se presentan?
Realiza el pseudocdigo correspondiente:
-
8/7/2019 Cuadernos de Ejercicios C
27/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 27
Ejercicio 15 - Switch
Programa de ejemplo para el Switch, variacion del primer programa IF...ELSE
Prog16.cpp
/* Uso de switch en lugar de IF
Igual al prog13 */
#includeint main (){
double a, b; int c;cout
-
8/7/2019 Cuadernos de Ejercicios C
28/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 28
Menciona las diferencias entre la instruccin Switch y la instruccin IF
Ejercicio 16 Area de poligonos con SwitchVariacion de operaciones con poligonos usando switch en lugar de IF... else
Prog17.cpp
/*Calcular el area de diferentes poligonos usando Switch*/#includeint main(){
double a, b, area; int figura;cout b;area = a*b; break;case 2:cout a;cout > b;area=a*b/2.0; break ;
default:cout
-
8/7/2019 Cuadernos de Ejercicios C
29/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 29
cout > b;area = a*b; break;case 2:cout a;cout > b;area=a*b/2.0; break ;default:cout
-
8/7/2019 Cuadernos de Ejercicios C
30/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 30
PARTE IIEn esta segunda parte se incluyen ejemplos para realizar ciclos. Ademas de incorporar funciones,matrices, y ejemplos de algunos juegos los cuales preparan al estudiante en la logica de la
programacion.
-
8/7/2019 Cuadernos de Ejercicios C
31/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 31
Ejercicio 17 Ciclo For
Primero haremos uno fcil. Escribir un programa que muestre una lista de nmeros del 1 al20, indicando a la derecha de cada uno si es divisible por 3 o no.
Prog19.cpp
// Este programa muestra una lista de nmeros, indicando para cada uno// si es o no mltipo de 3.// 11/09/2000 Salvador Pozo
#include// librera para uso de cout
int main() // funcin principal
{
int i; // variable para bucle
for(i = 1; i
-
8/7/2019 Cuadernos de Ejercicios C
32/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 32
El enunciado es el tpico de un problema que puede ser solucionado con un bucle "for".Observa el uso de los comentarios, y acostmbrate a incluirlos en todos tus programas.Acostmbrate tambin a escribir el cdigo al mismo tiempo que los comentarios. Si lo dejaspara cuando has terminado el cdigo, probablemente sea demasiado tarde, y la mayorade las veces no lo hars. ;-)
Tambin es una buena costumbre incluir al principio del programa un comentarioextenso que incluya el enunciado del problema, aadiendo tambin el nombre del autor yla fecha en que se escribi. Adems, cuando hagas revisiones, actualizaciones ocorrecciones deberas incluir una explicacin de cada una de ellas y la fecha en que sehicieron.
Una buena documentacin te ahorrar mucho tiempo y te evitar muchos dolores decabeza.
-
8/7/2019 Cuadernos de Ejercicios C
33/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 33
Ejercicio 18 Ciclo while
Escribir el programa anterior, pero usando una funcin para verificar si el nmero esdivisible por tres, y un bucle de tipo "while".
Prog20.cpp
// Este programa muestra una lista de nmeros, indicando para cada uno// si es o no mltipo de 3.
#include// librera para uso de cout
// Prototipos:bool MultiploDeTres(int n);
int main() // funcin principal
{
int i = 1; // variable para buclewhile(i
-
8/7/2019 Cuadernos de Ejercicios C
34/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 34
else cout
-
8/7/2019 Cuadernos de Ejercicios C
35/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 35
}
return 0;}
// Este programa muestra una lista de nmeros
// de este tipo:// 1// 1 2// 1 2 3// ...
#include // librera para uso de coutusing namespace std;int main() // funcin principal
{
int i, j; // variables para buclesfor(i = 1; i
-
8/7/2019 Cuadernos de Ejercicios C
36/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 36
Prog21.cpp
/* Prog22 */
#include
int main() // funcin principal
{
int i = 1; // variable para buclesbool sumar = true; // Siguiente operacin es sumar o restarbool terminado = false; // Se ha alcanzado la condicin de fin
do { // Hacercout
-
8/7/2019 Cuadernos de Ejercicios C
37/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 37
// Cambio de lnea
system("pause");return 0;
}
PRACTICA 1
1.Ahora lee las paginas de la 32 a la 40 del manual el C++ por la practica y realiza losejercicios propuestos ah para enviarlos al profesor.
Ejercicio 21 - Juego del Granjero
Aqui vamos a hacer un alto o un parentesis en los temas que llevamos visto, para mostrar un
ejemplo mas practico y divertido sobre la programacion y sobre C++. Nada mejor que checar la
logica de un programa, asi como ver nuevas instrucciones que con un juego. Este programa incluye
algunas cosas que no se han visto hasta este momento en el curso. Como estructuras, funciones,nuevas librerias y comandos (sentencias). Pero que por lo demas no son dificiles de entender.
1. Deberas teclear todo el codigo en C++
2. Deberas ejecutarlo... Y JUGARLO.
3. Deberas realizar el algoritmo. LINEA X LINEA del codigo del juego indicando que es lo que crees
que hace.
4. Si tienes una duda sobre alguna instruccion... consulta la ayuda del editor o en la wikipedia.
5. Opcial (para obtener mas puntos) realizar el diagrama de flujo del juego.
NOTA: Puedes usar el siguiente programa ONLINE y gratuito para hacer tu diagrama de
flujo. No olvides guardarlo o invitar al profesor con tu registro para que lo evalue.
http://www.gliffy.com/
He aqui el codigo:
-
8/7/2019 Cuadernos de Ejercicios C
38/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 38
granjero.cpp
/** G R A N J E R O** El problema del granjero cruzando el rio*
*/
#include#include#include
#define BELL 7#define K_ESC 27#define NBYTES 80
/** Estructura de datos de los jugadores (bitfield)*/struct player_st {
unsigned granjero : 1;unsigned zorra : 1;unsigned gallina : 1;unsigned maiz : 1;
};
struct player_st Player; // variable generica bitfield
/** Prototipos de funcion*/void Instruct(void);int GetMove(int);void DoMove(int);int CheckMap(int);
int MadeIt(void);void YouLose(void);void PrintMap(void);
int main(){
int bank; //0 significa que el granjero esta enel banco izquierdo
int move; // el codigo de la tecla para elmovimiento requerido
int trips; // numero de viajes a traves del riochar reply[NBYTES]; //respuesta del usuario
/*
* Poner las condiciones iniciales. Todos los elementos estan en el* banco oeste y no se han hecho ningun viaje*/Player.granjero = Player.gallina = Player.zorra = Player.maiz = 0;bank = Player.granjero;trips = 0;
printf("\n============= GRANJERO =================\n");printf("Presione ESC en cualquier tiempo para salir.\n\n");printf("Necesita instrucciones? (Pulse S o N): ");gets(reply);
-
8/7/2019 Cuadernos de Ejercicios C
39/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 39
if (reply[0] == 'S' || reply[0] == 's' )Instruct();PrintMap();while (1) {
move = GetMove(bank);DoMove(move);++trips;bank = Player.granjero;PrintMap();if (CheckMap(bank))
YouLose();if (MadeIt())
break;}printf("Felicidades! Has llegado a salvo!\n");printf("El numero de viajes fueron %d\n", trips);
return (0);}
/*
* Instruct()** Despliega las reglas del juego**/voidInstruct(){
printf("**************************** INSTRUCCIONES********************************** \n");
printf("Un granjero debe cruzar un rio en un bote.\n");printf("El tiene una zorra, una gallina y un balde de maiz.\n");printf("El granjero solo puede tomar una cosa a la vez en el
bote.\n");
printf("La zorra no se puede quedar sola con la gallina porque sela come.\n");
printf("Tampoco puede dejar a la gallina con el maiz.\n");printf("Cuando el granjero esta presente, los animales se portan
bien.\n");printf("Usted es el granjero. Intente llegar desde el lado oeste
del rio \n");printf("al lado este con su equipaje a cuestas mientras hace el
\n");printf("posible numero de viajes.\n");
}
/*** GetMove()* Hacer los movimientos*/
intGetMove(int bank){
int key;
-
8/7/2019 Cuadernos de Ejercicios C
40/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 40
/** Pregunte al usuario solo con los comandos disponibles.*/printf("\nComandos: S(olo) ");if (Player.zorra == bank)
printf("Z(orra) ");if (Player.gallina == bank)
printf("G(allina) ");if (Player.maiz == bank)
printf("M(aiz) ");printf(":");while (1) {
key = toupper(getch());if (key == 'S')
break;elseif (key == 'Z' && Player.zorra == bank)
break;elseif (key == 'G' && Player.gallina == bank)
break;elseif (key == 'M' && Player.maiz == bank )
break;
elseif (key == K_ESC) {putchar('\n');exit (0);
}else
putchar(BELL); // mal comando}putchar('\n');return (key);
}
voidDoMove(int move){
switch (move) {case'S':
break;case'Z':
Player.zorra = !Player.zorra;break;
case'G':Player.gallina = !Player.gallina;break;
case'M':Player.maiz = !Player.maiz;break;
}Player.granjero = !Player.granjero;
}
/** CheckMap()** Verificar que ningun elemento hostil se quedo solo* Regresar 1 si lo estan o 0 si no*/intCheckMap(int bank){
-
8/7/2019 Cuadernos de Ejercicios C
41/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 41
int status = 0;
if (Player.zorra != bank && Player.gallina != bank)status = 1;
if (Player.gallina !=bank && Player.maiz != bank)status = 1;
return (status);}
/** PrintMap()** Desplegar el mapa actual mostrando las posiciones* del granjero y los demas elementos*/voidPrintMap(){
char wc, ec;
/* El granjero */
wc = ec = ' ';if (Player.granjero)
ec = 'G';else
wc = 'G';printf("\n%c ^^^^^^ %c\n",wc, ec);
/* La zorra */wc = ec = ' ';if (Player.zorra)
ec = 'z';else
wc = 'z';printf("\n%c ^^^^^^ %c\n",wc, ec);
/* La gallina */wc = ec = ' ';if (Player.gallina)
ec = 'g';else
wc = 'g';printf("\n%c ^^^^^^ %c\n",wc, ec);
/* El maiz */wc = ec = ' ';if (Player.maiz)
ec = 'm';else
wc = 'm';printf("\n%c ^^^^^^ %c\n",wc, ec);
}
/** MadeIt()** Determinar si todos los elementos fueron satisfactoriamente* transportados al lado este del rio*/int
-
8/7/2019 Cuadernos de Ejercicios C
42/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 42
MadeIt()
{int status;status =0;if (Player.granjero && Player.zorra && Player.gallina &&
Player.maiz)status = 1;
return (status);}
/** Cuando pierdes*/
voidYouLose()
{printf("Lo sentimos, has perdido. ");if (Player.zorra == Player.gallina)
printf("La zorra se comio a la gallina.\n");elseif (Player.gallina == Player.maiz)
printf("La gallina se comio el maiz.\n");
exit(1);}/** G R A N J E R O** El problema del granjero cruzando el rio**/
#include
#include #include #include
#define BELL 7#define K_ESC 27#define NBYTES 80
/** Estructura de datos de los jugadores (bitfield)*/struct player_st {
unsigned granjero : 1;unsigned zorra : 1;unsigned gallina : 1;unsigned maiz : 1;
};
struct player_st Player; // variable generica bitfield
/** Prototipos de funcion*/void Instruct(void);int GetMove(int);
-
8/7/2019 Cuadernos de Ejercicios C
43/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 43
void DoMove(int);int CheckMap(int);int MadeIt(void);void YouLose(void);void PrintMap(void);
int main(){
int bank; //0 significa que el granjero esta enel banco izquierdo
int move; // el codigo de la tecla para elmovimiento requerido
int trips; // numero de viajes a traves del riochar reply[NBYTES]; //respuesta del usuario
/** Poner las condiciones iniciales. Todos los elementos estan en el* banco oeste y no se han hecho ningun viaje*/Player.granjero = Player.gallina = Player.zorra = Player.maiz = 0;bank = Player.granjero;trips = 0;
printf("\n============= GRANJERO =================\n");printf("Presione ESC en cualquier tiempo para salir.\n\n");printf("Necesita instrucciones? (Pulse S o N): ");gets(reply);if (reply[0] == 'S' || reply[0] == 's' )
Instruct();PrintMap();while (1) {
move = GetMove(bank);DoMove(move);++trips;bank = Player.granjero;PrintMap();
if (CheckMap(bank))YouLose();
if (MadeIt())break;
}printf("Felicidades! Has llegado a salvo!\n");printf("El numero de viajes fueron %d\n", trips);
system("pause");return (0);
}
/** Instruct()** Despliega las reglas del juego**/voidInstruct(){
printf("**************************** INSTRUCCIONES********************************** \n");
printf("Un granjero debe cruzar un rio en un bote.\n");printf("El tiene una zorra, una gallina y un balde de maiz.\n");
-
8/7/2019 Cuadernos de Ejercicios C
44/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 44
printf("El granjero solo puede tomar una cosa a la vez en elbote.\n");
printf("La zorra no se puede quedar sola con la gallina porque sela come.\n");
printf("Tampoco puede dejar a la gallina con el maiz.\n");printf("Cuando el granjero esta presente, los animales se portan
bien.\n");printf("Usted es el granjero. Intente llegar desde el lado oeste
del rio \n");printf("al lado este con su equipaje a cuestas mientras hace el
\n");printf("posible numero de viajes.\n");
system("pause");
}
/*** GetMove()* Hacer los movimientos*/
intGetMove(int bank){
int key;
/** Pregunte al usuario solo con los comandos disponibles.*/printf("\nComandos: S(olo) ");if (Player.zorra == bank)
printf("Z(orra) ");if (Player.gallina == bank)
printf("G(allina) ");
if (Player.maiz == bank)printf("M(aiz) ");
printf(":");while (1) {
key = toupper(getch());if (key == 'S')
break;else if (key == 'Z' && Player.zorra == bank)
break;else if (key == 'G' && Player.gallina == bank)
break;else if (key == 'M' && Player.maiz == bank )
break;else if (key == K_ESC) {
putchar('\n');exit (0);
}else
putchar(BELL); // mal comando}putchar('\n');return (key);
}
void
-
8/7/2019 Cuadernos de Ejercicios C
45/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 45
DoMove(int move){
switch (move) {case 'S':
break;case 'Z':
Player.zorra = !Player.zorra;break;
case 'G':Player.gallina = !Player.gallina;break;
case 'M':Player.maiz = !Player.maiz;break;
}Player.granjero = !Player.granjero;
}
/** CheckMap()** Verificar que ningun elemento hostil se quedo solo
* Regresar 1 si lo estan o 0 si no*/intCheckMap(int bank){
int status = 0;
if (Player.zorra != bank && Player.gallina != bank)status = 1;
if (Player.gallina !=bank && Player.maiz != bank)status = 1;
return (status);}
/** PrintMap()** Desplegar el mapa actual mostrando las posiciones* del granjero y los demas elementos*/voidPrintMap(){
char wc, ec;
/* El granjero */wc = ec = ' ';if (Player.granjero)
ec = 'G';else
wc = 'G';printf("\n%c ^^^^^^ %c\n",wc, ec);
/* La zorra */wc = ec = ' ';if (Player.zorra)
ec = 'z';else
-
8/7/2019 Cuadernos de Ejercicios C
46/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 46
wc = 'z';printf("\n%c ^^^^^^ %c\n",wc, ec);
/* La gallina */wc = ec = ' ';if (Player.gallina)
ec = 'g';else
wc = 'g';printf("\n%c ^^^^^^ %c\n",wc, ec);
/* El maiz */wc = ec = ' ';if (Player.maiz)
ec = 'm';else
wc = 'm';printf("\n%c ^^^^^^ %c\n",wc, ec);
}
/** MadeIt()
** Determinar si todos los elementos fueron satisfactoriamente* transportados al lado este del rio*/intMadeIt()
{int status;status =0;if (Player.granjero && Player.zorra && Player.gallina &&
Player.maiz)status = 1;
return (status);
}
/** Cuando pierdes*/
voidYouLose()
{printf("Lo sentimos, has perdido. ");if (Player.zorra == Player.gallina)
printf("La zorra se comio a la gallina.\n");else if (Player.gallina == Player.maiz)
printf("La gallina se comio el maiz.\n");system("pause");exit(1);
}
-
8/7/2019 Cuadernos de Ejercicios C
47/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 47
Responde a lo siguiente:
Cual es el objetivo del juego?
Cuantas y cuales son las funciones que tiene el
juego?
Porque el juego esta dividido en funciones?
Cuales son las nuevas libreras incluidas?
Cuales son los commandos que sustituyen a
cout y cin?
Que tipo de datos estamos declarando y
como?
Que significa cada constante declarada?
-
8/7/2019 Cuadernos de Ejercicios C
48/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 48
Ejercicio 22 - Juegos
Para terminar de ver los ejemplos acerca de las condicionales y los ciclos, vamos a ver 3 juegos mas.
Sin embargo, es importante hacer la siguiente aclaracion:
Estos juegos fueron adaptados de otras versiones de compilador C++. Como habiamos visto en la
primer leccion, hay varios compiladores de C++, y ademas del Microsot Visual C++, otro muy usado
es el Turbo C++ o Borland C++. Estos compiladores traen unas librerias no estandar de C, que
permiten extender un poco el lenguaje y facilitar algunas tareas en modo DOS para accesar algunas
funciones graficas.
De entre ellas, hay una libreria llamada CONIO.H y STDLIB.H, que si bien existen en la version del
compilador de Microsoft que estamos usando, no contiene las mismas instrucciones.
Por lo tanto, hay que seguir algunas reglas para que estos juegos funcionen y apliques estas nuevas
instrucciones que generalmente son utiles en los juegos. Sin embargo, algunas setenciones no se
recomiendan en su uso porque precisamente no son librerias estandar que puedan ser emuladas
facilmente.
Asi que habra que seguir un par de instrucciones para que estos programas funcionen de manera
correcta.
INSTRUCCIONES ANTES DE EJECUTAR LOS PROGRAMAS.
1. Ve a la seccion de Manuales y Video y deberas bajar CONSOLA.H y CONSOLA.LIB
2. Estos dos archivos deberas incluirlos donde este tu proyecto de programa.
3. Sera muy importante que primero crees un proyecto de programa, porque deberas anexar estos
dos archivos. Uno bajo HEADER y el otro bajo RESOURCES.
4. Ademas, deberas incluir el archivo CONSOLA.H al inicio de tu programa pero veras que en lugar
de , lo haras con " ", ya que, estaras indicando que sera de manera local.5. Tambien se deberan sustituir algunas instrucciones (que veras como comentarios en algunos
casos) por otras compatibles con esta version del compilador (como RANDOM y RANDOMIZE).
Cualquier duda, preguntale a tu profesor.
-
8/7/2019 Cuadernos de Ejercicios C
49/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 49
Ejercicio 22a Juego de Adivinanzas
El siguiente es un pequeo juego de adivinanzas. La computadora "pensara" un numero entre 1 y 100
y tu deberas adivinarlo en maximo 9 oportunidades.
prog22a_adivinanzas.cpp
#include#include#include#include
void main(){int i, a, b;//randomize();//clrscr();system("cls");//a=rand()%100;srand(time(0));a = 1 + rand() % 100;cout
-
8/7/2019 Cuadernos de Ejercicios C
50/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 50
else if (b>a)cout
-
8/7/2019 Cuadernos de Ejercicios C
51/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 51
Ejercicio 22b - Tragamonedas
Ahora, un pequeo juego muy popular en las vegas. El clasico tragamonedas, el cual cada vez que loejecutes generara aleatoriamente las columnas con los elementos. Si le "atinas" a que las 3 columnas
contengan lo mismo... YA GANASTE!.
prog22b_tragamonedas.cpp
/* progb22b_tragamonedas.cppJUEGO: El clasico de las Vegas. */
#include#include#include#include#include
#include#include"consola.h"
void Frutas(int col);int i, a, b, c, m;char fruta[10][10];int cuenta, columna = 0;int frutas[4];
void main() {//randomize();//clrscr();srand(time(0)); // for seed based on current timesystem("cls");
strcpy(fruta[0], "Melocoton");strcpy(fruta[1], "Melon");strcpy(fruta[2], "Sandia");strcpy(fruta[3], "Naranja");strcpy(fruta[4], "Pia");strcpy(fruta[5], "Fresa");strcpy(fruta[6], "Frambuesa");strcpy(fruta[7], "Mango");strcpy(fruta[8], "Pera");strcpy(fruta[9], "Durazno");// b = random(5);// c = random(5);b = 1 + rand() % 5;c = 1 + rand() % 5;
for (cuenta =1; cuenta
-
8/7/2019 Cuadernos de Ejercicios C
52/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 52
if (frutas[1]==frutas[2] || frutas[1]==frutas[3] ||frutas[2]==frutas[3]) {
gotoxy(24,20);cout
-
8/7/2019 Cuadernos de Ejercicios C
53/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 53
strcpy(fruta[9], "Durazno");// b = random(5);// c = random(5);b = 1 + rand() % 5;c = 1 + rand() % 5;
for (cuenta =1; cuenta
-
8/7/2019 Cuadernos de Ejercicios C
54/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 54
Qu tipos de datos estamos declarando y como?
Qu funciones de C++ nuevas has descubierto
en el programa?
Ejercicio 22c Pseudovirus
Quieres hacer una pequea demostracion de un virus? Aqui tienes la oportunidad mientras practicas
los ciclos.
prog22c_pseudovirus.cpp
/* Pseudovirus.cppPrograma que muestra un supuesto virus en la pantalla
Por: LSC Sergio Hugo Sanchez.
NOTA: Recordar que necesitamos el archivo CONSOLA.H y CONSOLA.LIBen el mismo directorio del programa para compilar*/#include#include#include#include#include"consola.h"
void derecha(int fila);
-
8/7/2019 Cuadernos de Ejercicios C
55/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 55
void izquierda(int fila);void final();
int col,i, j, r;
void main(){clrscr();r=50;
for (j=1; j
-
8/7/2019 Cuadernos de Ejercicios C
56/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 56
delay(3000);clrscr();delay(1000);
}
/* Pseudovirus.cppPrograma que muestra un supuesto virus en la pantalla
Por: LSC Sergio Hugo Sanchez.NOTA: Recordar que necesitamos el archivo CONSOLA.H y CONSOLA.LIBen el mismo directorio del programa para compilarMOD: 18-Feb-2013.. En la version DevC++ no necesitamos el headerCONSOLA.H y la
libreria asociada, basta usar la libreria windows.h y la pequenafuncion al
inicio. Ademas, se sustituye la funcion delay() por la funcion Sleepde la
misma libreria windows.h*/#include #include #include
#include #include
using namespace std;
//Defines gotoxy() for ANSI C compilers.void gotoxy(short x, short y) {COORD pos = {x, y};SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);}
void derecha(int fila);void izquierda(int fila);void final();
int col,i, j, r;
int main(){//HANDLE hConsoleOutput;
//hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);//SetConsoleDisplayMode(hConsoleOutput,1,NULL);
system("cls");r=50;
for (j=1; j
-
8/7/2019 Cuadernos de Ejercicios C
57/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 57
// cambiar * por el codigo ASCII 176 (Si usas NOTEPAD++). Normal @void derecha(int fila) {
for (col=1; col
-
8/7/2019 Cuadernos de Ejercicios C
58/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 58
Qu tipos de datos estamos declarando?
Qu funciones propias estamos usando?
Ejercicio 23 - Juego del Ahorcado
Para seguir probando lo que son las funciones y como un programa se divide en estaspara hacer mas facil de administrar, ahora veamos este juego un poco mas largo: elAhorcado.
Si bien, es un juego sencillo ya que solo acepta 3 palabras, contiene un menu inicial y laforma basica para jugarlo. En la seccion de practicas de este curso apareceran otrosmodelos de juego del ahorcado (incluso con graficas, mas temas y el uso de archivos paralas palabras) que estan hechos en Borland C++ (en lugar de MS Visual C++) y con loscuales podras practicar.
Mientras, divirtete y si quieres modifica el programa para que acepte mas palabras una vez
que te funcione. Aqui aplicaremos los temas anteriores.
El programa esta un poco largo, pero te gustara:
-
8/7/2019 Cuadernos de Ejercicios C
59/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 59
prog23_ahorcado.cpp
/*Pro23_ahorcado.cppEste es el juego del Ahorcado.Solamente contiene 3 palabras iniciales pero puede seragrandado hasta donde quieras.
Por: LSC Sergio Hugo Sanchez
NOTA: No oldivar poner el header y libreria CONSOLA.H, CONSOLA.LIB enla misma carpeta*/
#include#include#include#include#include"consola.h"
#define num_palabras 3
void construye_todo();void captura_las_palabras();
void muestra_las_palabras();void exhibe_el_menu();void elegir_palabra();void construye_cabeza();void construye_tronco();void construye_brazo_izquierdo();void construye_brazo_derecho();void construye_pie_izquierdo();void construye_pie_derecho();void construye_hora();
int opcion_elegida;int posicion_de_palabra_a_adivinar;int cant_de_palabras = num_palabras;
int longitud_de_las_palabras[num_palabras];char todas_las_palabras[20] [num_palabras];char palabra_actual[20];int logitud_palabra_actual=0;
main(){
opcion_elegida = 0;clrscr();exhibe_el_menu();getche();return 0;
}
//***********************************************************void exhibe_el_menu(void){
//clrscr();do{
gotoxy(25,2);printf("PRESIONA EL NUMERO DE LA OPCION QUE DESEE");gotoxy(25,3);
printf("-----------------------------------------");
-
8/7/2019 Cuadernos de Ejercicios C
60/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 60
gotoxy(25,3.5);printf("-");gotoxy(59,3.5);printf("!");gotoxy(25,4);printf("- MENU DEL JUEGO EL AHORCADO !");gotoxy(25,5);printf("- 1 - INGRESAR LAS PALABRAS !");gotoxy(25,6);printf("- 2 - JUGAR EL AHORCADO !");gotoxy(25,7);printf("- 3 - MOSTRAS LAS PALABRAS !");gotoxy(25,8);printf("- 4 - ABANDONAR EL PROGRAMA !");gotoxy(25,9);printf("----------------------------------------");gotoxy(25.5,15);printf("ELIJA LA OPCION QUE DESEE Y PULSE ACEPTAR:");gotoxy(67,15);scanf("%d",&opcion_elegida);
}while (opcion_elegida < 1 || opcion_elegida > 4 );
switch (opcion_elegida){
case 1: captura_las_palabras();case 2: elegir_palabra();case 3: muestra_las_palabras();case 4: break;
}}
//*****************************************************************void captura_las_palabras(void){
int ia,ja;clrscr();
for (ia=0; ia>palabra_actual;longitud_palabra_actual = strlen(palabra_actual);longitud_de_las_palabras[a] = longitud_palabra_actual;for (ja=0; ja
-
8/7/2019 Cuadernos de Ejercicios C
61/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 61
{gotoxy(19+j, i+10);printf("%c", todas_las_palabras[j][i]);
}}printf("\n Pulse una tecla para continuar...";getche();exhibe_el_menu();
}
//***************************************************************void elegir_palabra(void){
int longitud_de_palabra_a_adivinar, l;int i,j,sw=0, errores=0,contaP=0;char letra[l], completa[20];clrscr();do{
gotoxy(10,4);printf("Escriba un numero entre 1 y %d y pulse enter:",
cant_de_palabras);gotoxy(55,4);scanf("%d", &posicion_de_palabra_a_adivinar);clrscr();
}while (posicion_de_palabra_a_adivinar < 1 ||
posicion_de_palabra_a_adivinar > cant_de_palabras);longitud_de_palabra_a_adivinar =
longitud_de_las_palabras[posicion_de_palabra_a_adivinar-1];for (i=0: i>letra;sw=0;for (j=0; j
-
8/7/2019 Cuadernos de Ejercicios C
62/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 62
}
if (contaP=longitud_de_palabra_a_adivinar){
gotoxy(37,10);printf("\nGANASTES EL JUEGO....");errores=4;i=longitud_de_palabra_a_adivinar;getch();exhibe_el_menu();
}else{
if (sw==0)errores++;if (errores==1)
construye_cabeza();else
if (errores==2)construye_tronco();
elseif (errores==3)
construye_brazo_derecho();else
if (errores==4)
construye_brazo_izquierdo();else
if (errores==5)
construye_pie_derecho();else
if (errores==6)
construye_pie_izquierdo();else
if(errores==7)
{
clrscr();
construye_todo();
errores=7;}
}} while (i
-
8/7/2019 Cuadernos de Ejercicios C
63/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 63
gotoxy(38,8);printf("|_-_|");
}
//***********************************************************************void construye_tronco(void){
gotoxy(41,9);printf("|");gotoxy(41,10);printf("|");gotoxy(41,11);printf("|");gotoxy(41,12);printf("|");
}
//********************************************************************void construye_brazo_derecho(void){
gotoxy(40,9);
printf("/");gotoxy(38,10);printf("/");
}
//********************************************************************void construye_brazo_izquierdo(void){
gotoxy(42,9);printf("\");gotoxy(44,10);printf("\");
}
//*******************************************************************void construye_pie_izquierdo(void){
gotoxy(42,13);printf("");gotoxy(44,14);printf("");
}
//*******************************************************************void construye_pie_derecho(void){
gotoxy(40,13);printf("/");gotoxy(38,14);printf("/");
}
//******************************************************************void construye_horca(void){
int i;gotoxy(41,5);printf(":");gotoxy(41,4);
-
8/7/2019 Cuadernos de Ejercicios C
64/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 64
printf(":");gotoxy(41,3);printf(":");gotoxy(42,3);printf(":::::::::::::::");for (i=3; i
-
8/7/2019 Cuadernos de Ejercicios C
65/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 65
void construye_tronco();void construye_brazo_izquierdo();void construye_brazo_derecho();void construye_pie_izquierdo();void construye_pie_derecho();void construye_horca();
int opcion_elegida=0;int posicion_de_palabra_a_adivinar=0;int cant_de_palabras = num_palabras;int longitud_de_las_palabras[num_palabras];char todas_las_palabras[20] [num_palabras];char palabra_actual[20];int longitud_palabra_actual=0;
int main(){
opcion_elegida = 0;system("cls");exhibe_el_menu();system("pause");return 0;
}
//***********************************************************void exhibe_el_menu(void){
system("cls");do{
gotoxy(25,2);printf("PRESIONA EL NUMERO DE LA OPCION QUE DESEE");gotoxy(25,3);
printf("-----------------------------------------");// gotoxy(25,3.5);
printf("-");// gotoxy(59,3.5);
printf("!");gotoxy(25,4);printf("- MENU DEL JUEGO EL AHORCADO !");gotoxy(25,5);printf("- 1 - INGRESAR LAS PALABRAS !");gotoxy(25,6);printf("- 2 - JUGAR EL AHORCADO !");gotoxy(25,7);printf("- 3 - MOSTRAS LAS PALABRAS !");gotoxy(25,8);printf("- 4 - ABANDONAR EL PROGRAMA !");gotoxy(25,9);printf("----------------------------------------");gotoxy(25,15);printf("ELIJA LA OPCION QUE DESEE Y PULSE ACEPTAR:");gotoxy(67,15);scanf("%d",&opcion_elegida);
}while (opcion_elegida < 1 || opcion_elegida > 4 );switch (opcion_elegida){
case 1: captura_las_palabras();case 2: elegir_palabra();
-
8/7/2019 Cuadernos de Ejercicios C
66/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 66
case 3: muestra_las_palabras();case 4: break;
}}
//*****************************************************************void captura_las_palabras(void){
int ia,ja;system("cls");for (ia=0; ia>palabra_actual;longitud_palabra_actual = strlen(palabra_actual);longitud_de_las_palabras[ia] = longitud_palabra_actual;for (ja=0; ja
-
8/7/2019 Cuadernos de Ejercicios C
67/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 67
system("cls");}while (posicion_de_palabra_a_adivinar < 1 ||
posicion_de_palabra_a_adivinar > cant_de_palabras);longitud_de_palabra_a_adivinar =
longitud_de_las_palabras[posicion_de_palabra_a_adivinar-1];for (i=0; i>letra;sw=0;for (j=0; j
-
8/7/2019 Cuadernos de Ejercicios C
68/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 68
construye_brazo_izquierdo();else
if (errores==5)
construye_pie_derecho();else
if (errores==6)
construye_pie_izquierdo();else
if(errores==7)
{
system("cls");
construye_todo();
errores=7;}
}
} while (i
-
8/7/2019 Cuadernos de Ejercicios C
69/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 69
printf("/");}
//********************************************************************void construye_brazo_izquierdo(void){
gotoxy(42,9);printf("*");gotoxy(44,10);printf("*");
}
//*******************************************************************void construye_pie_izquierdo(void){
gotoxy(42,13);printf("*");gotoxy(44,14);printf("*");
}
//*******************************************************************
void construye_pie_derecho(void){
gotoxy(40,13);printf("/");gotoxy(38,14);printf("/");
}
//******************************************************************void construye_horca(void){
int i;gotoxy(41,5);printf(":");
gotoxy(41,4);printf(":");gotoxy(41,3);printf(":");gotoxy(42,3);printf(":::::::::::::::");for (i=3; i
-
8/7/2019 Cuadernos de Ejercicios C
70/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 70
construye_tronco();construye_cabeza();
}
DevC++
con
WimbGi
m
/* Dev_prog23bGJuego del Ahorcado de manera grafica
Gracias a:TRABAJO FINAL DE COMPUTACIONPAZ CARDENAS ISRAEL EDSONESCOBAR CHAINA PABLO WILSONMEDRANO AROSQUETA FREDDY(creadores originales)*/
#include #include #include #include #include
using namespace std;
int main(){
int x=20;system("color e1");char texto[20];cout
-
8/7/2019 Cuadernos de Ejercicios C
71/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 71
for (int i=0;i < n;i++){if(texto[i]==letra[0]){encontrado=1;otro[i]=letra[0];cout
-
8/7/2019 Cuadernos de Ejercicios C
72/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 72
Ademas, compara que el codigo para DevC++ no utiliza la librera consola.h y en su defecto
utiliza la librera windows.h. Este programa tiene errores de manera intencional para las
versiones de Visual C++ y DevC++. Descubrelos y da una solucion, ademas:
Se ha incorporado otro codigo del ahorcado de manera grafica utilizando la librera
wimbgim.h. Para lo cual buscala en internet o pidela a tu profesor. Deberas instalar esta
librera para tu compilador DevC++, y crear un proyecto nuevo bajo Console GraphicsApplication, en lugar de Console Application tradicional. Una vez hecho esto, teclea el codigo
correspondiente y compila.
Responde a lo siguiente:
Qu libreras son las que se incluyen en este
programa?
Cules son las funciones en las que esta
dividido este programa?
Cules son los nuevos comandos de C, que se
incluyen en este programa?
Qu tipos de datos se declaran en este
-
8/7/2019 Cuadernos de Ejercicios C
73/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 73
programa?
Dnde se almacenan las palabras?
Cmo se pueden poner mas palabras?
Qu funcin o proceso es lo que mas realiza
este programa y se repite?
Ejercicio 24 - Juego Las Torres de Hanoi
Generalmente para probar el tema de la recursividad se aplica el ejercicio del juego de lastorres de Hanoi. En este juego, el usuario tiene que mover unos aros que estan desde elposte 1 hasta el poste 3, pasando a veces por el poste 2, de tal forma que quedenacomodados de menor a mayor hacia abajo como estaban en el poste 1.
Prueba hacer el codigo siguiente en MS Visual C++
prog24_hanoi.cpp
/*prog24_hanoi.cppPrograma de la Torre de HanoiPor: Enrique R. Mosqueda */#include#include#include
/* include #define BG_BLACK (0) #define FG_RED (12) #defineFG_BLUE (9) #define FG_WHITE (15)
-
8/7/2019 Cuadernos de Ejercicios C
74/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 74
#define FG_GREEN (2) */
//void clrscr()/* {
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE), COORD cor = {0,0},DWORD count;CONSOLE_SCREEN_BUFFER_INFO csbi;GetConsoleScreenBufferInfo(hStdOut, &csbi);FillConsoleOutputCharacter(hStdOut, ' ', csbi.dvSize.X * csbi.dvSize.Y,
coord, &count);SetConsoleCursorPosition(hStdOut, coord);}*/
void Towers( int, int, char, char, char);int n=0, a=0, b=0, c=0;void main(){
//clsscr();printf("\n\n\t\tTORRE DE HANOI\n");printf("CREADO POR ENRIQUE RADHAMES MOSQUEA MARTINEZ\n");printf("las torres estan representadas como A,B,C\n");
printf("Digite el 0 para salir del sistema.\n");printf("Digite la cantidad de Discos ===> ",n); scanf("%d",&n);Towers( n,a,'A','B','C');c=((a+b)-1);printf("\n\n Con %d DISCOS %d", n, c);printf("\n\tEl numero de Dias es => %d", c);printf("\n\n\n\tnota: estas variables solo alcanzan para 30
discos");printf("\n\ty usando la funcion POW(2,n)-1");c=pow(2,n)-1;printf("\n\tEl resultado es el mismo => %d",c);printf("\n\tpara jugar con los colores solo activen las
funciones");printf("\n\tque estan como comentarios.");
printf("\nEspero que les guste ");getch();
}
/* juego del sistema */void Towers( int n, int a, char frompeg, char topeg, char auxpeg ){
/* HANDLE hStdInput = INVALID_HANDLE_VALUE,hStdOutPut = INVALID_HANDLE_VALUE;hStdInput = GetStdHandle(STD_INPUT_HANDLE);hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hStdOutput, BG_BLACK | FG_RED); */if (n==1){
b=b+2;c*=a+b;printf( "\n%s%d%s%c%s%c", "\t\t\t DISCO ", n, " DESDE ",
frompeg, " HACIA ", topeg, a);return;
} a=a+1;Towers( n-1,a, frompeg, auxpeg, topeg);//SetConsoleTextAttribute(hStdOutput, BG_BLACK | FG_BLUE );printf("\n%s%d%s%c%s%c", "\t\t\t DISCO ", n, " DESDE ", frompeg, "
HACIA ", topeg, a);Towers( n-1,a, frompeg, auxpeg, topeg);
-
8/7/2019 Cuadernos de Ejercicios C
75/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 75
//SetConsoleTextAttribute(hStdOutput, BG_BLACK | FG_BLUE );}
Para la version DevC++, solo hay que cambiar unas lineas que esperamos ya hayasidentificado.
Y despues, ve a la seccion de BIBLIOTECA\DESCARGAS y baja el archivo de HANOIG(BORLAND), para que ejecutes el ejecutable. Este ultimo programa esta escrito en BorlandC++ y utiliza bibliotecas graficas de MSDOS.
NOTA:En ambos es posible que solo veas a la computadora jugar. Podrias modificar elprograma para que tu seas el que haga los movimientos?Es un buen reto. =)
-
8/7/2019 Cuadernos de Ejercicios C
76/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 76
Responde a lo que se indica:
Qu es la recursin?
Por qu estn varias
instrucciones con
comentarios?
-
8/7/2019 Cuadernos de Ejercicios C
77/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 77
PARTE IIIARREGLOS Y ESTRUCTURASA partir de aqu, usamos solamente el compilador DevC++.
-
8/7/2019 Cuadernos de Ejercicios C
78/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 78
Ejercicio 25 Arreglos
Realiza la siguiente practica, tecleando los siguientes programas para que veas elfuncionamiento de los arreglos. Primero un programa que cuenta los numeros sin usararrelgos:
prog24_vectores.cpp
/* prog24 - Ejemplo de vectores */#include#define MAX 100
//Declara funcion de vectores//void vectores()
// Comenzamos con la funcion normal/* A continuacion se muestra un programa que cuenta el numero deapariciones de los numeros 0, 1, 2 y3 en una secuencia de enteros acabada en -1. */
int main(){
int num, c0=0, c1=0, c2=0, c3=0;printf("El siguiente programa cuenta en numero de apariciones de
los numeros 0 al 3\n");printf("Por lo que se te preguntara por un numero, teclealo y pulsa
ENTER \n");printf("Para finalizar el ciclo, teclea -1 y te apaceran los
resutados \n\n");scanf("%d", &num);while (num != -1){
if (num == 0) c0++;if (num == 1) c1++;
if (num == 2) c2++;if (num == 3) c3++;scanf( "%d", &num );
}printf( "Resultado Contadores:%d, %d, %d, %d \n\n", c0, c1, c2, c3
);
return 0;}
Y ahora basado en el mismo concepto de contar numeros, usando arrays:
-
8/7/2019 Cuadernos de Ejercicios C
79/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 79
prog30_vectores.cpp
/* Pro30 - Uso de vectores *//* Que ocurriria si tuviesemos que contar las apariciones de los cienprimeros numeros enteros? Deberamos declarar cien contadores yescribir cien construcciones if para cada caso? La respuesta, como era deesperar, se halla en el uso de vectores.Veamoslo en el siguiente codigo que llama a la funcion:
*/
#include#define MAX 100
int main(){
int i, num2, cont[MAX];
printf("El siguiente programa cuenta en numero de apariciones delos numeros 0 al 3\n");
printf("Por lo que se te preguntara por un numero, teclealo y pulsaENTER \n");
printf("Para finalizar el ciclo, teclea -1 y te apaceran los
resutados \n\n");
for (i= 0; i< MAX; i++)cont[i] = 0;scanf("Numero %d", &num2);while (num2 != -1) {
if ((num2 >= 0) && (num2
-
8/7/2019 Cuadernos de Ejercicios C
80/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 80
Por qu cambiaron las instrucciones paralos ciclos?
Ejercicio 26
Ahora un ejercicio para aprender sobre arrays multidimensionales:
prog31.cpp
/* Prog31 - Arrays multidimensionales
El siguiente ejemplo muestra el empleo de una tabla multidimensional.Concretamente, el programa utiliza una tabla de 3 dimensiones paraalmacenar 1000 numerosaleatorios. Para generar numeros aleatorios se usa la funcion rand de lalibreria estandarstdlib.h. Tambien se ha usado la funcion getchar (stdio.h), queinterrumpe el programa yespera a que el usuario presione una tecla.*/
#include#include#define DIM 10
void main(){
int tabla_random [DIM][DIM][DIM], a, b, c;for (a= 0; a< DIM; a++)for (b= 0; b< DIM; b++)for (c= 0; c< DIM; c++)tabla_random[a][b][c] = rand();
/* Muestra series de DIM en DIM elementos. */for (a= 0; a< DIM; a++)for (b= 0; b < DIM; b++){
for (c= 0; c < DIM; c++){
printf( "\n\n tabla[%d][%d][%d] = ", a, b, c );printf( "%d", tabla_random[a][b][c] );
}printf( "\n\nPulse ENTER para seguir" );getchar();
}}
-
8/7/2019 Cuadernos de Ejercicios C
81/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 81
Responde a lo siguiente:
Que son los arrays multidimensionales?
Como generamos los numerousaleatorios?
Como declaramos las variables?
-
8/7/2019 Cuadernos de Ejercicios C
82/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 82
Ejercicio 27 Cadenas
Para repasar los temas, realiza estos dos programas:
prog32.cpp
/* Prog32 - Ejemplo de cadenas
El siguiente programa cuenta el numero de veces que se repite una palabraen una frase.El programa emplea la funcion de comparacion de cadenas strcmp.Dicha funcion devuelve 0 en caso de que las cadenas comparadas seaniguales */
#include#include#define MAXLIN 100
void main()
{char pal[MAXLIN]; /* La que buscamos. */char palfrase[MAXLIN]; /* Una palabra de la frase. */char c;int total = 0;printf( "\nPALABRA:" );scanf( "%s", pal );printf( "\nFRASE:" );c=' ';while (c != '\n'){
scanf( "%s%c", palfrase, &c );if (strcmp(pal, palfrase) == 0)total++;
}printf( "\nLa palabra %s aparece %d veces.", pal, total );
}
Y tambien este otro:
prog33.cpp
/* Prog33 - Otro ejemplo de cadenas
A continuacion se muestra otro ejemplo que hace uso de las cadenas de
caracteres.El programa lee dos cadenas de caracteres, las concatena, convierte lasletras minusculasen mayusculas y viceversa, y finalmente escribe la cadena resultante. */
#include#include
void main(){
char cad1[80], cad2[80], cad3[160];
-
8/7/2019 Cuadernos de Ejercicios C
83/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 83
int i, delta;printf( "Introduzca la primera cadena:\n" );gets(cad1);printf( "Introduzca la segunda cadena:\n" );gets( cad2 );/* cad3 = cad1 + cad2 */strcpy( cad3, cad1 );strcat( cad3, cad2 );i = 0;delta = 'a' - 'A';while (cad3[i] != '\0'){
if ((cad3[i] >= 'a') && (cad3[i] = 'A') && (cad3[i]
-
8/7/2019 Cuadernos de Ejercicios C
84/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 84
Cmo se declaran las variables en ambosprogramas y por que de esa manera?
Ejercicio 28 - Arreglos y cadenas
Para repasar la leccion anterior sobre los arrays, realiza el siguiente ejercicio para que
veas como se determinan y que resultados muestran:
prog23_arrays.cpp
/*ej4.cInicializacion y manejo de "arrays", cadenas y estructuras.*/# include
void main(){
int i, j;//Aqui inicializamos los arrays, tanto de numeros como de cadenasstaticint enteros [5] = { 3, 7, 1, 5, 2 };
staticchar cadena1 [16] = "cadena";staticchar cadena2 [16] = { 'c','a','d','e','n','a','\0' };
//Ahora inicializamos las estructuras de datosstaticint a[2][5] = {
{ 1, 22, 333, 4444, 55555 },{ 5, 4, 3, 2, 1 }
};staticint b[2][5] = { 1,22,333,4444,55555,5,4,3,2,1 };staticchar *c = "cadena";staticstruct {
int i;float x;
} sta = { 1, 3.1415e4}, stb = { 2, 1.5e4 };staticstruct {
char c;int i;float s;
} st [2][3] = {{{ 'a', 1, 3e3 }, { 'b', 2, 4e2 }, { 'c', 3, 5e3 }},{ { 'd', 4, 6e2 },}
};
//Aqui pondremos los resultados de dichos arrays y estructuras.// Comenzamos con las cadenas
-
8/7/2019 Cuadernos de Ejercicios C
85/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 85
printf ("enteros:\n");for ( i=0; i
-
8/7/2019 Cuadernos de Ejercicios C
86/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 86
Que funcion tienen la instruccion static?
Cual es la descripcion del formato que usa
la funcion printf?
Ejercicio 29 - Juego del Gato (Tic-Tac-Toe)
A continuacion se presenta el juego del gato o Tres en raya (Tic-Tac-Toe en ingles), paraaprender un poco mas sobre las matrices y ver su aplicacion.
Teclea el codigo siguiente y ejecutalo, ademas tendras que traducirlo porque los mensajes
estan en ingles. Que te diviertas!!!
prog35_juegogato.cpp
#include#include#include
char matrix[3][3]; //={0}void playbox(void);
int main(){
int m, n;char ch='y';
while (ch=='Y' || ch =='y'){
for (m=0; m
-
8/7/2019 Cuadernos de Ejercicios C
87/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 87
{if (sum==0)
playbox();cout
-
8/7/2019 Cuadernos de Ejercicios C
88/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 88
couti;coutj;
}matrix[i-1][j-1]='O';sum++;//the play boxplaybox();
//Check if winsif (matrix[0][0]=='O' &&
matrix[0][0]==matrix[1][1] && matrix[1][1]==matrix[2][2]) {if (matrix[2][0]=='O' &&
matrix[2][0]==matrix[1][1] && matrix[1][1]==matrix[0][2]) {if (matrix[0][0]=='O' &&
matrix[0][0]==matrix[1][0] && matrix[1][0]==matrix[2][0]) {if (matrix[0][1]=='O' &&
matrix[0][1]==matrix[1][1] && matrix[1][1]==matrix[2][1]) {if (matrix[0][2]=='O' &&
matrix[0][2]==matrix[1][2] && matrix[1][2]==matrix[2][2]) {if (matrix[0][0]=='O' &&
matrix[0][0]==matrix[0][1] && matrix[0][1]==matrix[0][2]) {if (matrix[1][0]=='O' &&
matrix[1][0]==matrix[1][1] && matrix[1][1]==matrix[1][2]) {if (matrix[2][0]=='O' &&
matrix[2][0]==matrix[2][1] && matrix[2][1]==matrix[2][2]) {}cout>ch;
}system("PAUSE");return 0;
}
}
/****************************/
void playbox(void){
//the play boxcout
-
8/7/2019 Cuadernos de Ejercicios C
89/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 89
Responde a lo siguiente:
Por que este juego implementa arreglos?
Que tipo de arreglos usa este programa?
Este programa contiene errores de maneraintencional. Cules son?
Cul es la solucion a los errorespresentados?
-
8/7/2019 Cuadernos de Ejercicios C
90/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 90
Ejercicio 30 Estructuras
Realiza el siguiente ejemplo de manejo de estructuras:
prog34_estruc.cpp
/* Prog34 - Ejemplo de estrucutras */#include
struct datos{
char nombre[20];char apellido[20];longint dni;
};
struct tablapersonas{
int numpersonas;
struct datos persona[100];};
void main(){
int i;struct tablapersonas tabla;printf( "Numero de personas: " );scanf( "%d", &tabla.numpersonas );for (i= 0; i< tabla.numpersonas; i++){
printf( "\nNombre: " );gets( tabla.persona[i].nombre );printf( "\nApellido: " );
gets( tabla.persona[i].apellido );//printf( "\nRFC: " );//scanf( "%ld", &tabla.persona[i].dni );
}
// Ahora hay que realizar el codigo para imprimir los resultados dela tabla}
Y una vez terminado, completalo, creando el codigo necesario para que imprima los
resultados capturados que se almacenaron en la estructura de la tabla.
Responde a lo que se indica:
Cul fue el cdigo que escribiste paracompletar el programa?
-
8/7/2019 Cuadernos de Ejercicios C
91/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 91
Qu es una estructura?
-
8/7/2019 Cuadernos de Ejercicios C
92/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 92
Practica/Ejercicio 1 Zodiaco
Ahora teclea el siguiente programa que te dice el signo zodiacal de una persona. Este ya es un
ejercicio resuelto en donde veras algunas instrucciones nuevas para construir una funcion que
borre la pantalla.
El programa ademas, esta basado en instrucciones condicionales IFELSE.
prog36_zodiaco.cpp
/*Este programa muestra el signo zodiacal de una persona. Para ello elusuario debe introducir nicamente el da y el mes de nacimiento y elprograma determinar inmediatamente el signo zodiacal de la persona.*///muestra el signo zodiacal#include
#include#includevoid clrscr()/*Creando funcion para limpiar pantalla.*/{HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);COORD coord = {0, 0};DWORD count;
CONSOLE_SCREEN_BUFFER_INFO csbi;GetConsoleScreenBufferInfo(hStdOut, &csbi);
FillConsoleOutputCharacter(hStdOut, ' ', csbi.dwSize.X * csbi.dwSize.Y,coord, &count);
SetConsoleCursorPosition(hStdOut, coord);}void main(){
int salir,saliryesno;salir=0;while(salir==0){
clrscr();/*Llamando la funcion para limpiar pantalla.*/shortunsignedint m,d = 0;printf("Introduzca su mes de nacimiento: ");scanf("%d",&m,"\n");while ((m > 12) || (m < 1)){
printf("Introduzca su mes de nacimiento(DE 1 A 12): ");scanf("%d",&m,"\n");
}if (m==1){
printf("Introduzca su dia de nacimiento: ");scanf("%d",&d,"\n");while ( (d>31) || (d != (d)) ){//!= esta sentencia es
diferente de{printf("Introduzca dia(ENTRE 1 Y 31): ");scanf("%d",&d,"\n");
}(d
-
8/7/2019 Cuadernos de Ejercicios C
93/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 93
}else{
if(m==2){printf("Introduzca su dia de nacimiento: ");scanf("%d",&d,"\n");while ( (d>29) || (d != (d)) ){
printf("Introduzca dia(ENTRE 1 Y 29): ");scanf("%d",&d,"\n");
}(d31) || (d != (d)) ){
printf("Introduzca dia(ENTRE 1 Y 31):");
scanf("%d",&d,"\n");}
(d30) || (d!=(d)) ){
printf("Introduzca dia(ENTRE 1 Y31): ");
scanf("%d",&d,"\n");}(d31) || (d != (d)) ){
printf("Introduzcadia(ENTRE 1 Y 31): ");
scanf("%d",&d,"\n");}(d30) || (d!=(d))
){printf("Introduzca
dia(ENTRE 1 Y 31): ");scanf("%d",&d,"\n");
}
-
8/7/2019 Cuadernos de Ejercicios C
94/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 94
(d31) || (d
!= (d)) ){
printf("Introduzca dia(ENTRE 1 Y 31): ");
scanf("%d",&d,"\n");}(d31)
|| (d != (d)) ){
printf("Introduzca dia(ENTRE 1 Y 31): ");
scanf("%d",&d,"\n");}(d30) || (d!=(d)) ){
printf("Introduzca dia(ENTRE 1 Y 31): ");
scanf("%d",&d,"\n");}(d31) || (d != (d)) ){
printf("Introduzca dia(ENTRE 1 Y 31): ");
-
8/7/2019 Cuadernos de Ejercicios C
95/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 95
scanf("%d",&d,"\n");}
(d30) || (d!=(d)) ){
printf("Introduzca dia(ENTRE 1 Y 31): ");
scanf("%d",&d,"\n");
}
(d31) || (d !=(d)) ){
printf("Introduzca dia(ENTRE 1 Y 31): ");
scanf("%d",&d,"\n");
}
(d
-
8/7/2019 Cuadernos de Ejercicios C
96/119
[PROGRAMACION I C++] IDSystems 2011 - 2013
CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 96
if(saliryesno==1){salir=1;
}}
}
ACTIVIDAD
Realiza el mismo programa pero usando sentencias SWITCH y una modificacion para hacer el
algoritmo mas simple.
Practica/Ejercicio 2 Califaciones Estilo USA
Este ejercicio permite convertir el sistema de calificacion escolar de Mexico al sistema de Estados
Unidos que se basa en letras de la A hasta la F. Primero se debe mostrar una tabla de equivalenciasy luego preguntara la calificacion. El resultado sera el equivalente a la notacion americana.
Generalmente, para este tipo de programas se utilizan muchas condicionales. Este tipo de
programas se utilizan en el ambito escolar para saber las calificaciones de los alumnos.
prog37_califeu.cpp
/*El programa muestra primero una tabla de notas con sus equivalentes enel Standard Grading System o el sistema utilizado en los Estados Unidosque va desde la A hasta la F. El programa preguntar al usuario su notay transformar ese resultado al equivalente en el Standard GradingSystem. Tambin el programa dar una pequea pero valiosa recomendacinal usuario respecto a su nivel de estudio y calidad como estudiante.*/
#include"stdio.h"#includevoid clrscr()/*Creando funcion para limpiar pantalla.*/{HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);COORD coord = {0, 0};DWORD count;
CONSOLE_SCREEN_BUFFER_INFO csbi;GetConsoleScreenBufferInfo(hStdOut, &csbi);
FillConsoleOutputCharacter(hStdOut, ' ', csbi.dwSize.X * csbi.dwSize.Y,coord, &count);
SetConsoleCursorPosition(hStdOut, coord);}void main(){
int salir,saliry