Documente Academic
Documente Profesional
Documente Cultură
Pgina 1
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 ....................................................................................... 11 Ejercicio 8 Operadores y tipos de datos ........................................................................................ 12 Ejercicio 9 Operaciones simples ................................................................................................... 13 Ejercicio 10 - Concatenacion ........................................................................................................... 14 Ejercicio 11 IfElse ....................................................................................................................... 15 Ejercicio 12 Operaciones condicionales ........................................................................................ 15 Ejercicio 13 IFELSE anidados ...................................................................................................... 16 Ejercicio 14 Salida a un archivo externo ....................................................................................... 18 Ejercicio 15 - Switch ........................................................................................................................ 20 Ejercicio 16 Area de poligonos con Switch .................................................................................... 20 Ejercicio 17 Ciclo For .................................................................................................................... 23 Ejercicio 18 Ciclo while ................................................................................................................. 24 Ejercicio 19 Ciclos anidados .......................................................................................................... 25 Ejercicio 20 Ciclo While ................................................................................................................ 26 PRACTICA 1 ..................................................................................................................................... 26 Ejercicio 21 - Juego del Granjero ..................................................................................................... 27 Ejercicio 22 - Juegos ........................................................................................................................ 33 Ejercicio 22a Juego de Adivinanzas ........................................................................................... 34 Ejercicio 22b - Tragamonedas..................................................................................................... 36 Ejercicio 22c Pseudovirus ......................................................................................................... 38 Ejercicio 23 - Juego del Ahorcado .................................................................................................... 40 Ejercicio 24 - Juego Las Torres de Hanoi .......................................................................................... 48 Ejercicio 25 Arreglos ..................................................................................................................... 52 Ejercicio 26 ..................................................................................................................................... 54 Ejercicio 27 Cadenas .................................................................................................................... 56 Ejercicio 28 - Arreglos y cadenas ..................................................................................................... 58 Ejercicio 29 - Juego del Gato (Tic-Tac-Toe) ...................................................................................... 60 Ejercicio 30 Estructuras ................................................................................................................ 64 Practica/Ejercicio 1 Zodiaco ......................................................................................................... 66 Practica/Ejercicio 2 Califaciones Estilo USA .................................................................................. 70 Practica/Ejercicio 3 Sueldos a trabajador...................................................................................... 72 Practica/Ejercicio 4 Promocion de Ventas .................................................................................... 74 Practica/Ejercicio 5 Retraso en renta peliculas ............................................................................. 77 Practica/Ejercicio 6 Dados ............................................................................................................ 79 PRACTICA 7 Contando dinero ....................................................................................................... 82 PRACTICA 8 Numeros ................................................................................................................... 82 PRACTICA 9 Numeros ordenados ................................................................................................. 82 PRACTICA 10 Boletos.................................................................................................................... 82 CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 2
[PROGRAMACION I C++] IDSystems 2011 PRACTICA 11 Conversiones metricas ............................................................................................ 82 PRACTICAS DE VARIABLES, TIPOS DE DATOS, ASIGNACIONES, OPERADORES .................................. 83 PRACTICA 12 Rectangulo .......................................................................................................... 83 PRACTICA 13 Pies ..................................................................................................................... 83 PRACTICA 14 Triangulo ............................................................................................................. 83 PRACTICA 15 Raices.................................................................................................................. 83 PRACTICA 16 Tiempos .............................................................................................................. 83 PRACTICA 17 Prestamo ............................................................................................................ 83 PRACTICA 18 Metros ................................................................................................................ 83 PRACTICA 19 Millonario ........................................................................................................... 84 PRACTICA 20 Promedio ............................................................................................................ 84 PRACTICA 21 Circulo ................................................................................................................. 84 PRACTICA 22 Maquina reversadora de numeros ...................................................................... 84 PRACTICA 23 Nibles .................................................................................................................. 84 PRACTICA 24 Multiplicacion por 300 ........................................................................................ 84 PRACTICA 25 Peso .................................................................................................................... 84 PRACTICA 26 Fahrenheit .......................................................................................................... 84 PRACTICA 27 Celsius ................................................................................................................. 84 PRACTICA 28 Determinante ...................................................................................................... 85 PRACTICA 29 Don Manolo ........................................................................................................ 85 PRACTICA 30 - ISBN .................................................................................................................... 85 PRACTICA 31 Odometer ........................................................................................................... 86 PRACTICA 32 Triangulo II .......................................................................................................... 86 PRACTICA 33 Distancia Euclidiana ............................................................................................ 86 PRACTICA 34 Validacion de Tarjetas de credito ........................................................................ 86 PRACTICA 35 Suma de fracciones ............................................................................................. 87 PRACTICAS DE ESTRUCTURAS DE CONTROL .................................................................................... 87 PRACTICA 36 Max ..................................................................................................................... 87 PRACTICA 37 Positivo Negativo ................................................................................................ 87 PRACITCA 38 Par Impar ............................................................................................................ 87 PRACTICA 39 Convertidor de divisas ......................................................................................... 87 PRACTICA 40 Grado Promedio.................................................................................................. 88 PRACTICA 41 Bisiesto ............................................................................................................... 88 PRACTICA 42 Diferencia............................................................................................................ 88 PRACTICA 43 Saludo ................................................................................................................. 88 PRACTICA 44 - Control ................................................................................................................ 88 PRACTICA 45 Multiplo .............................................................................................................. 89 PRACTICA 46 ASCII ................................................................................................................... 89 PRACTICA 47 Super Raices ........................................................................................................ 89 PRACTICA 48 Dia semana ........................................................................................................ 89 PRACTICA 49 Super Triangulo ................................................................................................... 89 PRACTICAS DE ESTRUCTURAS REPETITIVAS ..................................................................................... 89 PRACTICA 50 Countdown ......................................................................................................... 89 PRACTICA 51 Factorial .............................................................................................................. 89 PRACTICA 52 Serie 1 ................................................................................................................. 90 PRACTICA 53 Primo .................................................................................................................. 90 PRACTICA 54 Ingenieros 2050 .................................................................................................. 90 CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 3
[PROGRAMACION I C++] IDSystems 2011 PRACTICA 55 Super Primos ....................................................................................................... 90 PRACTICA 56 Mayor Menor ...................................................................................................... 90 PRACTICA 57 Cuadrado ............................................................................................................ 90 PRACTICA 58 Decimal a Hexadecimal ....................................................................................... 90 PRACTICA 59 Rombo ................................................................................................................ 90 PRACTICA 60 Binario ................................................................................................................ 90 PRACTICA 61 Tablas de Multiplicar ........................................................................................... 91 PRACTICA 62 Divisores ............................................................................................................. 91 PRACTICA 63 Calculadora ......................................................................................................... 91 PRACTICA 64 Adivinar............................................................................................................... 91 PRACTICA 65 Nicomaco ............................................................................................................ 91 PRACTICA 66 Perfectos ............................................................................................................. 92 PRACTICA 67 Sumatorias .......................................................................................................... 92 PRACTICA 68 Guess my age ...................................................................................................... 92 PRACTICA 69 Power ................................................................................................................. 92 PRACTICA 70 Amigos ................................................................................................................ 92 PRACTICAS CON VECTORES ............................................................................................................. 92 PRACTICA 71 Minimo ............................................................................................................... 92 PRACTICA 72 Cafeteria ............................................................................................................. 93 PRACTICA 73 Traductor de Codigo Morse ................................................................................. 93 PRACTICA 74 Serie .................................................................................................................... 93
Pgina 4
PARTE I
Los 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.
Pgina 5
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.
Pgina 6
Responde que es lo que hace cada una de las instrucciones: SENTENCIA Que tipo de variables declaramos? ACCION
Pgina 7
[PROGRAMACION I C++] IDSystems 2011 Que operaciones estamos realizando? Cual es el comando para mostrar salida por pantalla?
Pgina 8
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
Pgina 9
Responde a lo que se indica: Cual es la diferencia entre una variable normal y las variables de preprocesador?
Pgina 10
Cual es la diferencia entre este programa y los que se han escrito anteriormente?
Pgina 11
[PROGRAMACION I C++] IDSystems 2011 Que tipo de dato estamos declarando? Y como?
ACCION
Pgina 12
Pgina 13
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 Matamoros 17, Mayo, 2009 Ficha 2 */ #include <iostream.h> int main (void) { char a; //declaracion de la variable tipo caracter char b; cout << "Introduzca el primer caracter: " << endl; cin >> a; cout << "Introduzca el segundo caracter: " << endl; cin >> b; a+=b; // a=a+b, suma o concatenacion de caracteres cout << "El resultado " << a; return 0;}
Pgina 14
Ejercicio 11 IfElse
Ejercicio para usar la sentencia IF/ELSE
Prog12.cpp /* Sentencias tipo if/else. Anidamientos y operaciones logicas */ #include <iostream.h> int main () { int i = 1; int j = 2; if (i>j) {cout << "i es mejor que j"<<endl;} else {cout << "i es mayor que j"<<endl;} return 0; }
Explica el comando de IF
Pgina 15
Pgina 16
else { cout << "figura equivocada" << endl; area=0;} cout <<"El area de la figura es= "<<area<<endl; return 0; }
COMANDO
Pgina 17
Pgina 18
[PROGRAMACION I C++] IDSystems 2011 Indica lo siguiente: Qu libreras estamos incorporando al programa? Qu es lo que hace el programa?
Pgina 19
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 */ #include <iostream.h> int main () { double a, b; int c; cout << "Introduzca el primer numero"<<endl; cin >> a; cout << "Introduzca el segundo numero"<<endl; cin >> b; cout << "Que operacion deseas hacer: 1(suma) 2(Multiplicacion)"<<endl; cin>>c; switch (c) { case 1: cout << "el resultado es:"<<a+b<<endl; break; default: cout << "el resultado es:"<<a*b<<endl; break; } return 0; }
Pgina 20
switch (figura) { case 1: cout << "Valor del lado menor = "; cin >>a; cout << "Valor del lado mayor = " ; cin >> b; area = a*b; break; case 2: cout <<"Valor de la base ="; cin >> a; cout << "Valor de la altura ="; cin >> b; area=a*b/2.0; break ; default: cout << "figura equivocada" << endl; area=0; break; } if (area) cout <<"El area de la figura es= "<<area<<endl; else cerr <<"error, la figura no tiene area"<<endl; return 0; }
Prueba a hacer este programa sin ver el cdigo aqu presentado, ya que es una variacin del ejercicio de polgonos usando el IFelse
Pgina 21
PARTE II
En esta segunda parte se incluyen ejemplos para realizar ciclos. Ademas de incorporar funciones, matrices, y ejemplos de algunos juegos los cuales preparan al estudiante en la logica de la programacion.
Pgina 22
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 dejas para cuando has terminado el cdigo, probablemente sea demasiado tarde, y la mayora de las veces no lo hars. ;-) Tambin es una buena costumbre incluir al principio del programa un comentario extenso que incluya el enunciado del problema, aadiendo tambin el nombre del autor y la fecha en que se escribi. Adems, cuando hagas revisiones, actualizaciones o correcciones deberas incluir una explicacin de cada una de ellas y la fecha en que se hicieron. Una buena documentacin te ahorrar mucho tiempo y te evitar muchos dolores de cabeza.
Pgina 23
Comprueba cmo hemos declarado el prototipo de la funcin "MultiploDeTres". Adems, al declarar la variable i le hemos dado un valor inicial 1. Observa que al incluir la funcin, con el nombre adecuado, el cdigo queda mucho ms legible, de hecho prcticamente sobra el comentario. Por ltimo, fjate en que la definicin de la funcin va precedida de un comentario que explica lo que hace. Esto tambin es muy recomendable.
Pgina 24
#include <iostream.h> // librera para uso de cout int main() // funcin principal { int i, j; // variables para bucles for(i = 1; i <= 20; i++) // bucle hasta i igual a 20 { for(j = 1; j <= i; j++) // bucle desde 1 a i cout << i << " "; // muestra el nmero cout << endl; // cambio de lnea } return 0; }
Este ejemplo ilustra el uso de bucles anidados. El bucle interior, que usa "j" como variable toma valores entre 1 e "i". El bucle exterior incluye, adems del bucle interior, la orden de cambio de lnea, de no ser as, la salida no tendra la forma deseada. Adems, despus de cada nmero se imprime un espacio en blanco, de otro modo los nmeros apareceran amontonados.
Pgina 25
separadores if(sumar) i += 4; else i -= 2;// Calcula siguiente elemento sumar = !sumar; // Cambia la siguiente operacin } while(!terminado); // ... mientras no se termine cout << endl; return 0; } // Cambio de lnea
PRACTICA 1
1.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.
Pgina 26
1. Deberas teclear todo el codigo en C++ 2. Deberas ejecutarlo... Y JUGARLO. 3. Deberas realizar el algoritmo. LINEA X LINEA del codigo del juego indicando que es lo que crees que hace. 4. Si tienes una duda sobre alguna instruccion... consulta la ayuda del editor o en la wikipedia. 5. Opcial (para obtener mas puntos) realizar el diagrama de flujo del juego.
NOTA: Puedes usar el siguiente programa ONLINE y gratuito para hacer tu diagrama de flujo. No olvides guardarlo o invitar al profesor con tu registro para que lo evalue. http://www.gliffy.com/
He aqui el codigo:
granjero.cpp /* * G R A N J E R O * * El problema del granjero cruzando el rio * */ #include <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; // variable generica bitfield
Pgina 27
/* * 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];
//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); 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); }
Pgina 28
/* * * GetMove() * Hacer los movimientos */ int GetMove(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
Pgina 29
Pgina 30
/* 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 MadeIt() { int status; status =0; if (Player.granjero && Player.zorra && Player.gallina && Player.maiz) status = 1; return (status); }
/* * Cuando pierdes */ void YouLose() { printf("Lo sentimos, has perdido. "); if (Player.zorra == Player.gallina) printf("La zorra se comio a la gallina.\n"); else if (Player.gallina == Player.maiz) printf("La gallina se comio el maiz.\n"); exit(1); }
Pgina 31
Pgina 32
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.
Pgina 33
[PROGRAMACION I C++] IDSystems 2011 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 <iostream.h> #include <conio.h> #include <stdlib.h> #include <time.h> void main(){ int i, a, b; //randomize(); //clrscr(); system("cls"); //a=rand()%100; srand(time(0)); a = 1 + rand() % 100; cout<<"A D I V I N A N Z A S\n"; cout<<"Adivina el numero que estoy pensando\n"; for (i = 1; i < 9; i++){ cin>>b; if (b == a) { cout<<"Muy bien, has acertado en "<<i<<" oportunidades \n"; break; } else if (b>a) cout<<"Es alto\n"; else cout<<"Es bajo\n"; } if (b != a) { cout<<"Lo siento, el numero es: "<<a <<endl; } }
Aqui veras que se incluyen nuevas librerias. Ademas de nuevas instrucciones que no habiamos visto hasta el momento. Te servira para repasar las instrucciones de condicion, contadores y generacion de numeros aleatorios. Deberas descubrirlas y ver que es lo que hacen. REALIZA: El pseudocdigo El diagrama de flujo
Pgina 34
Pgina 35
Ahora, un pequeo juego muy popular en las vegas. El clasico tragamonedas, el cual cada vez que lo ejecutes 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.cpp JUEGO: El clasico de las Vegas. */ #include #include #include #include #include #include #include <iostream.h> <conio.h> <stdlib.h> <string.h> <dos.h> <time.h> "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)); system("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<=3; cuenta++) { columna += 20; Frutas(columna); frutas[cuenta] = a; } if (frutas[1]==frutas[2] && frutas[1]==frutas[3]) { gotoxy(24,20); cout<<"--- F e l i c i d a d e s h a s !!!"; } if (frutas[1]==frutas[2] || frutas[1]==frutas[3] || frutas[2]==frutas[3]) { gotoxy(24,20);
g a n a d o
Pgina 36
//for seed based on current time 9; cout<<" - "; cout<<fruta[a]; delay(100); cout<<" "<<endl;
Aqui repasaras sobre los ciclos y las condicionales. Asi con una pequea funcion. Deberas realizar: 1) El codigo 2) El diagrama de flujo Ademas indica lo siguiente: Cules son las libreras que incorpora el programa y que hacen cada una?
Qu funciones de C++ nuevas has descubierto en el programa? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 37
Quieres hacer una pequea demostracion de un virus? Aqui tienes la oportunidad mientras practicas los ciclos.
prog22c_pseudovirus.cpp /* Pseudovirus.cpp Programa que muestra un supuesto virus en la pantalla Por: LSC Sergio Hugo Sanchez. NOTA: Recordar que necesitamos el archivo CONSOLA.H y CONSOLA.LIB en el mismo directorio del programa para compilar */ #include <iostream.h> #include <conio.h> #include <dos.h> #include <math.h> #include "consola.h" void derecha(int fila); void izquierda(int fila); void final(); int col,i, j, r; void main(){ clrscr(); r=50; for (j=1; j<=50; j++) cout<<"---Auxilio!!! un virus al ataque al sistema "; for (i=1; i<=25; i++) { if (i % 2 !=0 ) derecha(i); else izquierda(i); } final(); } // cambiar * por el codigo ASCII 176 (Si usas NOTEPAD++). Normal @
Pgina 38
Aqui veras bastantes ciclos for. Algunas instrucciones de pantalla y retardo. Realiza: 1) El codigo 2) El diagrama de flujo. Ademas indica lo siguiente: Qu libreras incluye este programa?
Pgina 39
Pgina 40
#define num_palabras 3 void void void void void void void void void void void void construye_todo(); captura_las_palabras(); muestra_las_palabras(); exhibe_el_menu(); elegir_palabra(); construye_cabeza(); construye_tronco(); construye_brazo_izquierdo(); construye_brazo_derecho(); construye_pie_izquierdo(); construye_pie_derecho(); 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("-----------------------------------------");
Pgina 41
Pgina 42
//*************************************************************** 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<longitud_de_palabra_a_adivinar; i++) { gotoxy(i+20,3); printf("-"); } do { i++; gotoxy(10,4); printf("\n Escriba una Letra y Presione <Enter>..."); cin>>letra; sw=0; for (j=0; j<longitud_de_palabra_a_adivinar; j++) { if (todas_las_palabras[j][posicion_de_palabra_a_adivinar1]==letra[0]) { gotoxy(j+20,3); printf("%c", letra[0]); completa[j]= letra[0]; sw=1; } } contaP=0; for (l=0; l<longitud_de_palabra_a_adivinar; l++) { if(completa[l]==todas_las_palabras[l][posicion_de_palabra_a_adivinar1]) contaP++;
Pgina 43
Pgina 44
Pgina 45
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. Este programa tiene errores de manera intencional. Descubrelos y da una solucion, ademas: 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?
Pgina 46
Pgina 47
Pgina 48
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 Borland C++ y utiliza bibliotecas graficas de MSDOS.
Pgina 49
NOTA: En ambos es posible que solo veas a la computadora jugar. Podrias modificar el programa para que tu seas el que haga los movimientos? Es un buen reto. =)
Pgina 50
PARTE III
ARREGLOS Y ESTRUCTURAS
Pgina 51
Ejercicio 25 Arreglos
Realiza la siguiente practica, tecleando los siguientes programas para que veas el funcionamiento de los arreglos. Primero un programa que cuenta los numeros sin usar arrelgos:
prog24_vectores.cpp /* prog24 - Ejemplo de vectores */ #include <stdio.h> #define MAX 100 //Declara funcion de vectores //void vectores() // Comenzamos con la funcion normal /* A continuacion se muestra un programa que cuenta el numero de apariciones de los numeros 0, 1, 2 y 3 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; }
Pgina 52
int main() { int i, num2, cont[MAX]; 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"); for (i= 0; i< MAX; i++) cont[i] = 0; scanf("Numero %d", &num2); while (num2 != -1) { if ((num2 >= 0) && (num2 <= MAX)) cont[num2]++; scanf( "%d", &num2 ); } for (i= 0; i< MAX; i++) printf( "Contador [%d] = %d \n\n", i, cont[i] ); return 0; }
Pgina 53
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 para almacenar 1000 numeros aleatorios. Para generar numeros aleatorios se usa la funcion rand de la libreria estandar stdlib.h. Tambien se ha usado la funcion getchar (stdio.h), que interrumpe el programa y espera a que el usuario presione una tecla. */ #include <stdio.h> #include <stdlib.h> #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(); } }
Pgina 54
los
numerous
Pgina 55
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 palabra en una frase. El programa emplea la funcion de comparacion de cadenas strcmp. Dicha funcion devuelve 0 en caso de que las cadenas comparadas sean iguales */ #include <stdio.h> #include <string.h> #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 ); }
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 las letras minusculas en mayusculas y viceversa, y finalmente escribe la cadena resultante. */ #include <stdio.h> #include <string.h> void main() { char cad1[80], cad2[80], cad3[160];
Pgina 56
Cules son las instrucciones de entrada en los dos programas? CUADERNO DE EJERCICIOS Y PRACTICAS C++ Pgina 57
Cmo se declaran las variables en ambos programas y por que de esa manera?
j; inicializamos los int enteros [5] = char cadena1 [16] char cadena2 [16]
//Ahora inicializamos las estructuras de datos static int a[2][5] = { { 1, 22, 333, 4444, 55555 }, { 5, 4, 3, 2, 1 } }; static int b[2][5] = { 1,22,333,4444,55555,5,4,3,2,1 }; static char *c = "cadena"; static struct { int i; float x; } sta = { 1, 3.1415e4}, stb = { 2, 1.5e4 }; static struct { char c; int i; float s; } st [2][3] = { {{ 'a', 1, 3e3 }, { 'b', 2, 4e2 }, { 'c', 3, 5e3 }}, { { 'd', 4, 6e2 },} }; //Aqui pondremos los resultados de dichos arrays y estructuras. // Comenzamos con las cadenas
Pgina 58
Pgina 59
prog35_juegogato.cpp #include <iostream.h> #include <stdlib.h> #include <conio.h> 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<3; m++) for (n=0; n<3; n++) matrix[m][n]='\0'; int i,j, sum=0; while (sum<10)
Pgina 60
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, hahaha, you both stink!!!"<<endl; break; } // player 2's turn cout<<"Player 2 is 'O': choose the row and column "<<endl; cout<<"Row : "; cin>>i; cout<<"Coumn : "; cin>>j; for (;i>3 || i<1 || j>3 || j<1 || ('X'==matrix[i-1][j-1] ||'O'==matrix[i-1][j-1]);) { cout<<"Sorry boy, but you gotta choose another place.\n";
Pgina 61
- N)\n";
Pgina 62
[PROGRAMACION I C++] IDSystems 2011 Responde a lo siguiente: Por que este juego implementa arreglos?
Pgina 63
Ejercicio 30 Estructuras
Realiza el siguiente ejemplo de manejo de estructuras:
prog34_estruc.cpp /* Prog34 - Ejemplo de estrucutras */ #include <stdio.h> struct datos { char nombre[20]; char apellido[20]; long int dni; }; struct tablapersonas { int numpersonas; struct datos persona[100]; }; void main() { int i; struct tablapersonas tabla; printf( "Numero de personas: " ); scanf( "%d", &tabla.numpersonas ); for (i= 0; i< tabla.numpersonas; i++) { printf( "\nNombre: " ); gets( tabla.persona[i].nombre ); printf( "\nApellido: " ); gets( tabla.persona[i].apellido ); //printf( "\nRFC: " ); //scanf( "%ld", &tabla.persona[i].dni ); } // Ahora hay que realizar el codigo para imprimir los resultados de la 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 para completar el programa?
Pgina 64
Qu es una estructura?
Pgina 65
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 el usuario debe introducir nicamente el da y el mes de nacimiento y el programa determinar inmediatamente el signo zodiacal de la persona.*/ //muestra el signo zodiacal #include <STdio.h> #include <math.h> #include <windows.h> void clrscr()/*Creando funcion para limpiar pantalla.*/ { HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); COORD coord = {0, 0}; DWORD count; CONSOLE_SCREEN_BUFFER_INFO csbi; GetConsoleScreenBufferInfo(hStdOut, &csbi); FillConsoleOutputCharacter(hStdOut, ' ', csbi.dwSize.X * csbi.dwSize.Y, coord, &count); SetConsoleCursorPosition(hStdOut, coord); } void main() { int salir,saliryesno; salir=0; while(salir==0){ clrscr();/*Llamando la funcion para limpiar pantalla.*/ short unsigned int m,d = 0; printf("Introduzca su mes de nacimiento: "); scanf("%d",&m,"\n"); while ((m > 12) || (m < 1)){ printf("Introduzca su mes de nacimiento(DE 1 A 12): "); scanf("%d",&m,"\n"); } if (m==1){ printf("Introduzca su dia de nacimiento: "); scanf("%d",&d,"\n"); while ( (d>31) || (d != (d)) ){//!= esta sentencia es diferente de{ printf("Introduzca dia(ENTRE 1 Y 31): "); scanf("%d",&d,"\n"); } (d<=20) ? printf("\nSu signo es CAPRICORNIO.\n\n"):printf("\nSu signo es ACUARIO.\n\n");
Pgina 66
Pgina 67
Pgina 68
scanf("%d",&d,"\n"); } (d<=23) ? printf("\nSu signo es LIBRA.\n\n") : printf("\nSu signo es ESCORPION.\n\n"); } else{ if(m==11){ printf("Introduzca su dia de nacimiento: "); scanf("%d",&d,"\n"); while ( (d>30) || (d!=(d)) ){ printf("Introduzca dia(ENTRE 1 Y 31): "); scanf("%d",&d,"\n"); } (d<=22) ? printf("\nSu signo es ESCORPION.\n\n"):printf("\nSu signo es SAGITARIO.\n\n"); } else{ if(m==12){ printf("Introduzca su dia de nacimiento: "); scanf("%d",&d,"\n"); while ( (d>31) || (d !=(d)) ){ printf("Introduzca dia(ENTRE 1 Y 31): "); scanf("%d",&d,"\n"); } (d<=21) ? printf("\nSu signo es SAGITARIO.\n\n"):printf("\nSu signo es CAPRICORNIO.\n\n"); } } } } } } } } } } } } printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno);
Pgina 69
ACTIVIDAD Realiza el mismo programa pero usando sentencias SWITCH y una modificacion para hacer el algoritmo mas simple.
Pgina 70
Pgina 71
ACTIVIDAD Realiza el mismo programa, cambiando las sentencias condicionales IF..ELSE por SWITCH para hacer el programa mas corto. Tambien podrias usar un archivo externo para leer la informacion de equivalencias o la informacion de calificaciones de un alumno.
Pgina 72
Pgina 73
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> void clrscr()/*Creando funcion para limpiar pantalla.*/ { HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); COORD coord = {0, 0}; DWORD count; CONSOLE_SCREEN_BUFFER_INFO csbi; GetConsoleScreenBufferInfo(hStdOut, &csbi); FillConsoleOutputCharacter(hStdOut, ' ', csbi.dwSize.X * csbi.dwSize.Y, coord, &count); SetConsoleCursorPosition(hStdOut, coord); } void main() {
Pgina 74
Pgina 75
ACTIVIDAD Realiza el mismo programa pero usando las sentencias SWITCH donde se requiera
Pgina 76
prog40_peliculas.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 nmero de das de atraso en la devolucin de la pelcula. Lo que hace el programa es sumar el precio de la pelcula ms el valor del recargo multiplicado por el nmero de das de atraso, y as se muestra al final el total a pagar.*/ #include "STdio.h" #include <windows.h> void clrscr()/*Creando funcion para limpiar pantalla.*/ { HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); COORD coord = {0, 0}; DWORD count; CONSOLE_SCREEN_BUFFER_INFO csbi; GetConsoleScreenBufferInfo(hStdOut, &csbi); FillConsoleOutputCharacter(hStdOut, ' ', csbi.dwSize.X * csbi.dwSize.Y, coord, &count); SetConsoleCursorPosition(hStdOut, coord); } void main() { int salir,saliryesno; salir=0; while(salir==0){ clrscr();/*Llamando la funcion para limpiar pantalla.*/ int cod_pel,a; float dias,fav,nue,est,sest; printf("\n"); printf("\t CATEGORIA\tPRECIO\t CODIGO\tRECARGO/DIA DE ATRASO\n\n"); printf("\tFAVORITOS\t$2.50\t\t1\t\t$0.50\n"); printf("\tNUEVOS\t\t$3.00\t\t2\t\t$0.75\n"); printf("\tESTRENOS\t$3.50\t\t3\t\t$1.00\n"); printf("\tSUPER ESTRENOS\t$4.00\t\t4\t\t$1.50\n\n"); printf("INTRODUZCA EL CODIGO DE LA CATEGORIA DE LA PELICULA: "); scanf("%d",&cod_pel); a=0; while(a==0){ if(cod_pel<1 || cod_pel>4){ printf("INTRODUZCA EL CODIGO DE LA CATEGORIA DE LA PELICULA (ENTRE 1 Y 4): ");
Pgina 77
ACTIVIDAD Elimina el codigo que no sea necesario y que puedas sustituir por otras funciones o crear las propias
Pgina 78
Practica/Ejercicio 6 Dados
Otra practica de programa para ver la funcion aleatoria. Tambien repasamos las sentencias IFELSE
prog41_dados.cpp /* DISELE UN PROGRAMA QUE SIMULE EL LANZAMIENTO DE DOS DADOS HASTA 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. Si esto es asi, el programa se sale del ciclo o de lo contrario continua. Se aade tambien un contador que es el que dice finalmente a las cuantas tiradas se dio el eento de dos sietes consecutivamente*/ #include <stdio.h> #include <time.h> #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main() { HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); float salir; int saliryesno; salir=0; while(salir==0) { system("cls"); SetConsoleTextAttribute(hStdOutput, FONDO|VERDE); printf("\n\t\t\t EJERCICIO 41 (DADOS)\n"); printf("\t\t\t =====================\n"); int a, lanzamiento, i=0, contador=0; printf("\nPROBLEMA: DISEE UN PROGRAMA QUE SIMULE UN LANZAMIENTO DE DOS DADOS HASTA QUE\n"); printf("SALGA UN SIETE DOS VECES CONSECUTIVAS. EL PROGRAMA DEBE INDICAR EN QUE TIRADA\n"); printf("OCURRIO ESE RESULTADO.\n\n"); srand(time(NULL)); //Inicializar generador aleatorio while(i==0){ lanzamiento=1+rand()%12; //Generar numeros aleatorios
Pgina 79
ACTIVIDAD Trata de modificar el programa para que en lugar de un dado, sea una moneda (recuerda que tiene 2 lados).
Pgina 80
PARTE IV
PRACTICAS PARA DESARROLLAR
Pgina 81
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.
PRACTICA 10 Boletos
Desarrolla un programa que nos diga el precio de un boleto de ida y vuelta en autobus, conociendo la distancia a recorrer y sabiendo que si el numero de dias de estancia es mayor o igual a 7, y la distancia mayor o igual a 100 kilometros, el boleto tiene un descuento del 50%
Pgina 82
Pgina 83
[PROGRAMACION I C++] IDSystems 2011 PRACTICA 19 Millonario Un millonario excentrico tenia tres hijos: Carlos, Jose y Marta. Al morir dejo el siguiente legado: A jose le dejo 4/3 de lo que le dejo Carlos. A Carlos le dejo 1/3 de su fortuna. A marta le dejo la mitad de lo que le dejo a Jose. Preparar un programa para darle la suma a repartir e imprima cuanto le toco a cada uno. PRACTICA 20 Promedio Haga un programa para calcular el promedio de cinco calificaciones. 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. 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. PRACTICA 24 Multiplicacion por 300 Haga un programa que lea un entero y lo multiplique por 300. El uso del operador * y \ esta prohibido. PRACTICA 25 Peso Dado el peso de una persona en libras, calcule su peso en kilogramos. NOTA: 1 libra es aproximadamente igual a 0.453592Kg. PRACTICA 26 Fahrenheit Haga un programa para convertir una temperatura en grados Centigrados a Fahrenheit. La formula para hacer la conversion es: Fahrenheit = (9 * Celsius) / 5 + 32. PRACTICA 27 Celsius Haga un programa para convertir una temperatura en grados Fahrenheit a grados Celsius. Utilizar la formula: Celsius = (5/9)*(Fahrenheit-32).
Pgina 84
[PROGRAMACION I C++] IDSystems 2011 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, y que calcule y muestre por pantalla el determinante. PRACTICA 29 Don Manolo El almacen Don Manolo, necesita un programa que ayude a calcular la forma de dar el cambio a sus clientes con el minimo de billetes y monedas posible. PRACTICA 30 - ISBN El International Standard Book Number (en espaol Nmero Internacional Estndar del Libro), o ISBN (pronunciado a veces como "is-bin"), es un identificador nico para libros. El nmero tiene siempre 10 dgitos de longitud, y est dividido en cuatro partes: 1. El cdigo del pas o lengua de origen 2. El editor 3. El nmero del artculo, y 4. El dgito de control. Estas partes tienen distintas longitudes y generalmente estn separadas por guiones. El dgito de control de un ISBN se puede calcular multiplicando cada dgito del ISBN por el lugar que ocupa dicho dgito en la secuencia numrica (multiplicando el primero por la izquierda por 1, el siguiente por 2, etc.) Tomando despus la suma de las multiplicaciones y calculando el modulo 11 de esta suma, con 10 representado por el carcter "X". Por ejemplo, para calcular el dgito de control de un ISBN cuyos nueve primeros dgitos 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 dgito de control es 2, y la secuencia completa es ISBN 0-306-40615-2. Escriba un programa que, a partir de los dgitos de un ISBN, calcule el dgito de control.
Pgina 85
[PROGRAMACION I C++] IDSystems 2011 PRACTICA 31 Odometer A sales person leaves his home every Monday and returns every Friday. He travels by company car. Each day on the road, the salesperson records the amount of gasoline put in the car. Given the starting odometer reading(that is, the odometer reading before he leaves on monday) and the ending odometer reading (the odometer reading after he returns home on friday). here some sample data: start: 68723 end: 71289 Mon: 15.75 Tues: 16.30 Wed: 10.95 Thru: 20.65 Fri: 30.00 Find how many miles could the saleperson drive (in average) with a galon. PRACTICA 32 Triangulo II Suponga que a, b y c son las longitudes de los lados de un tringulo. Entonces el rea de un tringulo se puede calcular utilizando la siguiente formula: rea = SQR( s(s-a)(s-b)(s-c) ). Donde s es el semi-permetro (a+b+c)/2. 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. La distancia entre dos puntos (x1, y1) y (x2, y2) esta dada por la formula d=SQR( (x2-x1)^2 + (y2-y1)^2 ). PRACTICA 34 Validacion de Tarjetas de credito Todas las tarjetas de crdito tienen un sistema de verificacin de nmeros. Esto se hace para verificar la autenticidad del nmero de la tarjeta. Cada nmero tiene un significado. La mayora de las veces los primeros nmeros agrupados (que suelen ser de cuatro) significan el tipo de tarjeta. Los dems nmeros significan la oficina del representante de servicio y los nmeros que identifican al cliente. Los dos ltimos nmeros se utilizan para verificar si el nmero de tarjeta de crdito es correcto. A estos se le conocen como los check digits. Construya un programa que dada la siguiente frmula valide los nmeros de tarjeta de crdito. 1. Los nmeros en posiciones pares se acumulan. 2. Cada nmero en posicion impares se multiplica por 2 y se acumula. 3. Los check digits se calculan buscando el residuo de lo acumulado de nmeros en posiciones pares entre el acumulado de nmeros en posiciones impares.
Pgina 86
PRACTICA 35 Suma de fracciones Para sumar dos nmeros racionales se utiliza la siguiente frmula:
a c ad + bc - + - = ------b d bd
Pgina 87
[PROGRAMACION I C++] IDSystems 2011 PRACTICA 40 Grado Promedio Hacer un programa que lea tres grados en letras, y muestre su promedio. El programa deber utilizar una escala de 4 puntos para calcular el promedio numrico (PN): 4 para A, 3 para B, 2 para C, 1 para D y 0 para F. Su programa debe mostrar que el promedio es A si PN es mayor a 3.5, B si es mayor a 2.5, C si es mayor a 1.5, D si es mayor a 0.5 o F de lo contrario. [Nota] Por simplicidad, asuma que el programa solo acepta letras maysculas.
PRACTICA 41 Bisiesto Haga un programa que determine si un ao es bisiesto: si es divisible por 4, pero no es divisible por 100 o si es divisible por 400.
PRACTICA 42 Diferencia Ingresar tres nmeros y hallar la diferencia del mayor menos el menor. 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", "Buenas tardes" o "Buenas noches", de acuerdo con las siguientes reglas: 1. Se considera que es de da desde las 6:00 horas hasta las 11:59 horas. 2. Se considera que es por la tarde desde las 12:00 horas hasta las 19:00 horas. 3. Se considera que es de noche desde las 19:01 horas hasta las 5:59 horas PRACTICA 44 - Control Escriba un programa que lea un nmero x del teclado y lleve a cabo las siguientes operaciones: a) si es positivo, calcular e imprimir su raz cuadrada. b) si es distinto de cero, calcular e imprimir su inverso (1/x). c) si es cuadrado perfecto (tiene raz cuadrada exacta), imprimir el mensaje "Es un cuadrado perfecto". d) si es par, calcular e imprimir su cociente entre 2 (x/2). e) si es positivo y menor que 10, imprimir el mensaje "Slo tiene un dgito". f) si est comprendido entre 32 y 127 (ambos inclusive) imprimir el carcter cuyo cdigo ASCII representa.
Pgina 88
[PROGRAMACION I C++] IDSystems 2011 PRACTICA 45 Multiplo Ingresar un nmero n y verificar si es mltiplo de 3 o 5. PRACTICA 46 ASCII Lea un carcter y deduzca si es vocal, consonante, dgito o caracter especial. PRACTICA 47 Super Raices Partiendo del enunciado del problema [Races] arriba mencionado, tener en cuenta la posiblidad de tener races negativas. Primero calcule el discriminate B^2 - 4*A*C, si el discriminante es > 0.0, las dos races son reales y distintas y se caculan de la misma manera que en el programa [Races], si el discriminante es 0, las dos raices son reales e iguales y valen X1 = X2 = -B / (2*A). Finalmente, si el discriminante es < 0.0, las dos races son complejas conjugadas y valen X1_parte_real=X2_parte_real=-B / (2*A), X1_parte_imaginaria = SQR(-discriminante)/(2*A) y X2_parte_imaginaria = -SQR(-discriminante)/(2*A). PRACTICA 48 Dia semana Se desea escribir el nombre del da de la semana en funcin de un nmero de da, introducido por teclado. Donde 1 es Domingo, 2 Lunes y as sucesivamente. PRACTICA 49 Super Triangulo Disee un programa que lea tres longitudes y determine si forman o no un tringulo. Si es un tringulo determine de que tipo de tringulo se trata entre: equiltero (si tiene tres lados iguales), issceles (si tiene dos lados iguales) o escaleno (si tiene tres lados desiguales). Considere que para formar un tringulo se requiere que: "el lado mayor sea menor que la suma de los otros dos lados".
PRACTICA 51 Factorial El factorial de un nmero es el producto de todos los nmeros entre 1 y ese nmero. Por ejemplo, el factorial de 4 es 4x3x2x1 = 24. Haga un programa para calcular el factorial de un nmero n.
Pgina 89
[PROGRAMACION I C++] IDSystems 2011 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 + . . . + 1/50. PRACTICA 53 Primo Por si no lo recurda, los nmeros primos son cantidades enteras positivas que nicamente pueden dividirse por uno o por s mismos. Hacer un programa que detecte si un nmero es primo o no. Nota: Para saber si un nmero n es primo, hay que comprobar que el nmero no sea divisible por ningn entero entre 2 y la raz cuadrada del propio nmero. PRACTICA 54 Ingenieros 2050 Estime la poblacin de Ingenieros en sistemas en Mexico para el ao 2050, considerando un crecimiento anual de 11%. Actualmente hay 40000 profesionales del rea. PRACTICA 55 Super Primos Haga un programa que imprima todos los nmeros primos entre 1 y n. PRACTICA 56 Mayor Menor Leer una serie de nmeros hasta que el usuario ingrese el valor sentinela de -99 y escriba el nmero mayor y el nmero menor. PRACTICA 57 Cuadrado Has un programa en C++ que dibuje un cuadrado de n asteriscos. PRACTICA 58 Decimal a Hexadecimal This program reads integers and prints them in hexadecimal, using the shift and "and" operators. But there are two errors in the program. Correct the errors. PRACTICA 59 Rombo Escribir un programa que lea un entero y un carcter. La salida debe ser un rombo dibujado con el carcter dado y de anchura mxima dada por el entero leido. PRACTICA 60 Binario The following program reads integers and prints them in binary by division. There are some errors. Find them.
Pgina 90
[PROGRAMACION I C++] IDSystems 2011 PRACTICA 61 Tablas de Multiplicar Implemente un programa que muestre por pantalla las tablas de multiplicar que el usuario quiera, y finalice cuando el usuario indique que desea ver la tabla del cero. PRACTICA 62 Divisores Implemente un programa que calcule los divisores de un nmero entero. PRACTICA 63 Calculadora Hacer un programa que simule una calculadora. Nos mostrara el men siguiente: ====== MENU CALCULADORA ====== 1.- Sumar 2.- Restar 3.- Multiplicar 4.- Dividir 0.- Terminar ============================== Ingrese su seleccin > __ El programa deber verificar que introducimos un nmero vlido (del 0 al 4). Si introducimos un nmero errneo nos avisar y volver a mostrar el men. Si introducimos un 0 el programa terminar. Si elegimos un nmero entre el 1 y el 4 nos pedir dos nmeros, mostrar el resultado dependiendo de nuestra eleccin y volver a mostrar el men. PRACTICA 64 Adivinar Disee un programa para jugar a adivinar un nmero entre 0 y 100. El programa ir dando pistas al jugador indicndole si el nmero introducido por el jugador es menor o mayor que el nmero que tiene que adivinar. El juego termina cuando el jugador adivina el nmero o decide terminar de jugar (por ejemplo, escribiendo un nmero negativo). PRACTICA 65 Nicomaco Considere la siguiente propiedad descubierta por Nicmaco de Gerasa. "Sumando el primer numero impar, se obtiene el primer cubo; Sumando los dos siguientes impares se obtiene el segundo cubo; Sumando los tres siguientes impares se obtiene el tercer cubo, etc." 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++ Pgina 91
Desarrolle un programa que escriba los n primeros cubos utilizando esta propiedad. El valor de n debe ser un valor leido por teclado. PRACTICA 66 Perfectos Los nmeros perfectos son aquellos enteros que son iguales a la suma de sus divisores sin incluir a l mismo. Ejemplo: 6 es un nmero perfecto porque 1 + 2 + 3 = 6. Elabore un programa que calcule todos los nmeros perfectos menores que un nmero n dado. PRACTICA 67 Sumatorias Se tiene una entrada de dgitos entre 0 y 9, precedida por el nmero total de dgitos a leer. Dada la entrada, se debe calcular el total de nmero pares, el total de nmeros impares, el promedio de todos los nmeros, la sumatoria de los nmeros pares, la sumatoria de los nmeros impares, la sumatoria de los cuadrados de los nmeros pares y la sumatoria de los cuadrados de los nmeros impares. PRACTICA 68 Guess my age Write a program to play "Guess my age:". PRACTICA 69 Power Write a program to calculate the power of one number raised to another. PRACTICA 70 Amigos Dos nmeros son amigos si cada una de ellos es igual a la suma de los divisores del otro, 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 nmeros amigos menores o iguales que un numero n ingresado por teclado.
En el caso de aparecer repetido el valor mnimo se mostrara el menor ndice de los valores mnimos PRACTICA 72 Cafeteria Veinte estudiantes de Ingeniera de Sistemas se les pidi que valoraran de 1 a 10 la calidad de los almuerzos en la cafetera de la universidad. Un puntaje de 1 significa que la calidad es "psima" y un puntaje de 10 significa que la calidad es "excelente". Su programa deber colocar las 20 respuestas en un arreglo de tipo int y determinar la frecuencia de cada puntaje. Las frecuencias deben ser mostradas en forma de histograma. PRACTICA 73 Traductor de Codigo Morse El objetivo de este programa consiste en realizar un traductor de nmero a morse. Leyenda: : raya (seal larga) : punto (seal corta) Numeros 0 ----- 1 ---- 2 --- 3 -- 4 5 6 - 7 -- 8 --- 9 ---- Cada nmero en morse se representar en C++ por una cadena de 5 caracteres compuesta de puntos y rayas, segn la tabla anterior. Un ejemplo de lo que debe hacer el programa es: #morses Entre n: 2005 ..--- ----- ----- ..... #morse Entre n: 1992 .---- ----. ----. ..---
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, 2^2, 3^3, 4^4, 5^5, ... .
Pgina 93