Está en la página 1de 7

Laboratorio de Programacin II.

Grupo C

PRACTICA 1: ASPECTOS BSICOS DE C++(I) EJERCICIOS GUIADOS


Ejercicio 1: Entrada/Salida bsica(I).
En este ejercicio se va a probar el flujo cout , que permite mostrar cadenas por pantalla. Para ello se debe crear una aplicacin de consola, de forma que el nombre del proyecto ser Ejer00.bpr y el del programa ser Ejer00.cpp. A continuacin se debe copiar el siguiente programa en el editor de cdigo y realizar su ejecucin. #include <iostream.h> void main (void){ cout << "Hola futuro(a) programador de C++" << endl; cout << "Como estas?" << endl; } Para completar el ejercicio se va introducir el flujo cin, el cual permite leer tanto nmeros como cadenas de caracteres, pero cuando encuentra blancos, tabuladores o espacios, termina de leer. Se debe crear una aplicacin de consola, de forma que el nombre del proyecto ser Ejer01.bpr y el del programa ser Ejer01.cpp. A continuacin se debe copiar el siguiente programa en el editor de cdigo y realizar su ejecucin. #include <iostream.h> void main (void){ char nombre[30]; int edad; cout << "Hola! Como te llamas?"; cin >> nombre; cout << "Cuantos anyos tienes?"; cin >> edad; cout << "Hola " << nombre ; cout << ",tienes " << edad << " anyos" << endl; }

Ejercicio 2:Entrada/Salida(II)
En este ejercicio se va a encriptar un texto dado por el usuario usando el operador XOR y la funcin getline del flujo cin, la cual toma todo lo escrito por el usuario, incluidos los espacios. Se debe crear una aplicacin de consola, de forma que el nombre del proyecto ser Ejer02.bpr y el del programa ser Ejer02.cpp. A continuacin se debe copiar el siguiente programa en el editor de cdigo y realizar su ejecucin.Observar el uso de la funcin strlen(). #include <iostream.h> #include <string.h> //para strlen() void main() { int len; const int NUM=120; //num. maximo de caracteres. char texto[NUM],key; cout << "Escriba un texto:"; cin.getline(texto,120); cout << "Introduzca la clave para codificar (un digito):"; cin >> key; len=strlen(texto); cout << "\n\t*** texto Codificado ***\n"; for (int i=0;i<len;i++){

Laboratorio de Programacin II. Grupo C


texto[i] = texto[i] ^ key; //XOR } cout << texto << endl; cout << "\n\t*** texto DeCodificado ***\n"; for (i=0;i<len;i++){ texto[i] = texto[i] ^ key; } cout << texto << endl; }

Ejercicio 3: Expresiones aritmticas


En este ejercicio se va a ilustrar el uso de expresiones aritmticas. Para ello se debe crear una aplicacin de consola, de forma que el nombre del proyecto ser Ejer03.bpr y el del programa ser Ejer03.cpp. A continuacin se debe copiar el siguiente programa en el editor de cdigo y realizar su ejecucin. /* Un marathon tiene 26 millas y 385 yardas */ /* Calcula la distancia del marathon en Kilmetros */ /* Una milla tiene 1760 yardas */ #include <iostream.h> void main (void){ int millas,yardas; float kilometros; millas = 26; yardas = 385; /* frmula de conversin */ kilometros = 1.609 * (millas + yardas / 1760); // salida de datos cout <<"Un marathon tiene "<< kilometros << " kilometros" << endl; } Despus de realizar su ejecucin se debe modificar el programa sustituyendo 1760 por 1760.0 en la lnea que calcula el nmero de kilmetros, y volver a ejecutar. Reflexionar sobre el resultado que se obtiene ahora con la modificacin.

Ejercicio 4: La funcin main


Todos los argumentos que se le pasan al programa desde la lnea de comandos (ventana del MS-DOS) se reciben en un array de caracteres, esto quiere decir que si pasamos un nmero, este es ledo como una cadena de caracteres, con lo cual no se puede utilizar para hacer operaciones aritmticas. En este ejercicio se van a convertir esas cadenas de caracteres en nmeros, enteros o reales. Para ello se debe crear una aplicacin de consola, de forma que el nombre del proyecto ser Ejer04.bpr y el del programa ser Ejer04.cpp. A continuacin se debe copiar el siguiente programa en el editor de cdigo y realizar su ejecucin pasndole un nmero real como por ejemplo Ejer1 25.6 debiendo obtener como salida Numero de argumentos: 2 #include <iostream.h> void main(int num, char *cadena[]) { cout << "Numero de argumentos: " << num; } Como la variable num de la funcin main() almacena el nmero de argumentos, se pueden obtener los datos del argumento (char *cadena[]). En particular se va obtener la sqrt() del nmero pasado como argumento. Para ello se va utilizar la funcin atof(), definida en el fichero math.h, para realizar la conversin de caracteres a una variable numrica tipo double. Modifique el cdigo anterior con:

#include <iostream.h>

Laboratorio de Programacin II. Grupo C


#include <math.h> //para atof y sqrt void main(int num, char *cadena[]) { if (num == 1 ){ cout << "Pasar un nmero real como parmetro" << endl; }else{ double valor = atof(cadena[1]); double res = sqrt(valor); cout << "Resultado: " << res << endl; } } Probar a ejecutar el programa sin pasarle argumentos, se obtendr un mensaje.

Ejercicio 5:Bucle for(I)


En este ejercicio se van a escribir distintos bucles for para sumar los enteros del 1 al 5.En la forma 1 se dejan en blanco las partes de inicializacin y actualizacin del bucle for; el resultado es correcto porque dichas tareas se han incluido de otra forma. La forma 2 es completamente estndar. En la forma 3 todo se ha introducido en el parntesis del bucle; en la inicializacin se da valor inicial tanto a i como a suma; en la actualizacin se modifica tambin tanto i como suma. El resultado es que el bucle slo necesita una sentencia vaca, representada por el punto y coma (;). La forma 4 es una variante de la forma 3. Se debe crear una aplicacin de consola, de forma que el nombre del proyecto ser Ejer05.bpr y el del programa ser Ejer05.cpp. A continuacin se debe copiar el siguiente programa en el editor de cdigo y realizar su ejecucin. #include <iostream.h> void main(void) { int i=1, suma=0; for( ; i<=5; ) { // forma 1 suma += i; ++i; } cout << "suma 1 = " << suma << endl; suma=0; for(i=1; i<=5; ++i) // forma 2 suma += i; cout << "suma 2 = " << suma << endl; for(i=1, suma=0; i<=5; ++i, suma+=i) // forma 3 ; cout << "suma 3 = " << suma << endl; for(i=1, suma=0; i<=5; suma+=i, ++i) // forma 4 ; cout << "suma 4 = " << suma << endl; } Despus de crear el proyecto, de compilar y de ejecutar este programa, observar que la forma 3 da un resultado diferente de las dems. Sabras explicar por qu? Puedes corregirla?

Ejercicio 6:Bucle for(II)


En este ejercicio se va a realizar un men, desde el cual se pueden escoger distintas opciones. Para ello se va a usar un bucle for sin ningn parmetro que acta como un bucle infinito, esto quiere decir que nunca terminar, por eso se termina el programa por medio de la funcin exit(0) aunque tambin se puede probar a utilizar la sentencia break para salir del bucle for.

Laboratorio de Programacin II. Grupo C


Se debe crear una aplicacin de consola, de forma que el nombre del proyecto ser Ejer06.bpr y el del programa ser Ejer06.cpp. A continuacin se debe copiar el siguiente programa en el editor de cdigo y realizar su ejecucin. #include <iostream.h> #include <stdlib.h> //para system() y exit; void main(void) { int opcion; system("cls"); //borra la pantalla al inicio for(;;){ cout << "\tMi Menu" << endl; cout << "\t-------" << endl; cout << "1. Opcion 1" << endl; cout << "2. Opcion 2" << endl; cout << "3. Opcion 3" << endl; cout << "4. Opcion 4" << endl; cout << "5. Salir" << endl; //pedimos al usuario que escoja. cin >> opcion; //evaluamos la opcion escogida if (opcion==1) { cout << "\tHa elegido la opcion 1." << endl; }else if (opcion==2){ cout << "\tHa elegido la opcion 2." << endl; }else if (opcion==3){ cout << "\tHa elegido la opcion 3." << endl; }else if (opcion==4){ cout << "\tHa elegido la opcion 4." << endl; }else if (opcion==5){ cout << "Adios.." << endl; exit(0); //termina }else { cout << "Elija Bien..." << endl; } } }

Ejercicio 7:El if-else


En este programa se va a resolver la ecuacin de segundo grado segn el valor de su discriminante. Para ello se debe crear una aplicacin de consola, de forma que el nombre del proyecto ser Ejer07.bpr y el del programa ser Ejer07.cpp. A continuacin se debe copiar el siguiente programa en el editor de cdigo, completar el cdigo que aparece con puntos suspensivos y realizar su ejecucin. #include <iostream.h> #include <math.h> //para sqrt() void main(void) { double a, b, c; double discr, x1, x2, xr, xi; cout << "Escribe los valores de los coeficientes A, B y C: "; cin >> a >> b >> c; discr = ... ; if (discr > 0.0) { x1= . . .; x2= . . .;

Laboratorio de Programacin II. Grupo C


cout << "Las dos races reales son: "; cout << x1 << " y " << x2 << endl; } else if (discr < 0.0) { xr= . . .; xi= . . .; cout << "Raices complejas: " << endl; cout << "(" << xr << ", " << xi << "i) y "; cout << "(" << xr << ", " << -xi << "i)" << endl; } else { x1= . . .; cout << "Las dos races son iguales y valen: " << x1 << endl; } } Para probar el cdigo se pueden usar los siguientes valores: A B C Resultado 1 4 4 Races iguales 1 5 4 Races reales 1 3 6.25 Races imaginarias

EJERCICIOS PROPUESTOS
Ejercicio 1
En este ejercicio se va a generar una serie de nmeros aleatorios entre 0 y 1. La cantidad de nmeros a generar tiene que se pasada como argumento al programa desde la consola como por ejemplo ejer2 10, para lo cual se utilizar la variable entera Num. La funcin rand() genera un nmero entero aleatorio entre 0 y 32767 y se encuentra en math.h y la funcin atoi(char *) convierte una cadena de caracteres en un nmero entero y se encuentra en stdlib.h . Usar la directiva #include para incluir tanto math.h como stdlib.h. Se debe crear una aplicacin de consola, de forma que el nombre del proyecto ser Ejer08.bpr y el del programa ser Ejer08.cpp. A continuacin se debe copiar el siguiente programa en el editor de cdigo, completar el cdigo que aparece con puntos suspensivos y realizar su ejecucin. ... int Num = atoi(cadena[1]); for (int i=0;i<Num;i++){ double val = rand()/32767.0; cout << "Numero: " << i+1 << " Valor:"<< val << endl; } ...

Ejercicio 2
En este programa se va a calcular el mayor elemento entre un conjunto de nmeros enteros que son pasados como argumentos al programa. Para el clculo se utiliza el siguiente algoritmo: se crea una variable llamada Max, a la que se da inicialmente el valor del primer elemento pasado como argumento, previamente convertido a entero por medio de la funcin atoi(). Luego se recorren paso a paso todos los otros valores, por medio de un bucle for. Usamos una variable temporal tmp para obtener el siguiente valor, convertido a entero, y lo comparamos con el valor de la variable Max. Si el nuevo valor es mayor que Max (o Max menor que tmp) entonces se copia este valor en la variable Max. De esta forma, una vez que hayamos recorrido todos los valores, la variable Max contendr el mximo valor del conjunto, pues cada vez que se ha encontrado un valor mayor que Max, esta variable se ha cambiado a dicho valor. La variable iMax indica la posicin del ltimo valor copiado a Max. Al final, iMax indicar en qu posicin estaba el mayor elemento. Se debe crear una aplicacin de consola, de forma que el nombre del proyecto ser Ejer09.bpr y el del programa ser Ejer09.cpp. A continuacin se debe copiar el siguiente programa en el editor de cdigo, y realizar su ejecucin pasndole varios nmeros por ejemplo ejer6 10 15 4 22 18 34.

Laboratorio de Programacin II. Grupo C

#include <iostream.h> #include <stdlib.h> //para atoi void main(int Num, char *cadena[]) { int iMax, Max; if (Num == 1) { cout << "Dar los numeros para hallar el mayor" << endl; exit(0); } iMax = 1; Max = atoi( cadena[1] ); for (int i=2; i<Num; i++){ int tmp = atoi( cadena[i] ); if ( Max < tmp ){ Max = tmp; //guarda el valor iMax = i; } } cout << "El mayor es: " << Max; cout << " En la Posicion:" << iMax << endl; } Basndose en el anterior programa se pide: a) Escribir un programa que permita calcular el menor de varios nmeros reales pasados como argumentos. Llamar al proyecto Ejer09a.bpr y al programa Ejer09a.cpp b) Escribir un programa que permita dados un conjunto de nmeros enteros, positivos y negativos, calcular el mayor en valor absoluto. Usar la funcin abs(int) que est definida en el fichero math.h. Esta funcin trabaja de la siguiente manera: int x1=-5, x2; x2 = abs(x1); cout <<Valor absoluto de << x1 << es << x2; Llamar al proyecto Ejer09b.bpr y al programa Ejer09b.cpp. Probar a realizar la llamada ejer8 12 25 4 16 10 , de forma que el resultado obtenido sea el nmero -25 o la posicin 2.

Ejercicio 3
Realizar una aplicacin de consola que imprima por la consola todos los argumentos que se le pasan desde la lnea de comandos de la forma: Argumento 1: Valor: 10 Argumento 2: Valor: 13.5 Argumento 3: Valor: Mensaje Crear un nuevo proyecto Ejer10.bpr y el fichero Ejer10.cpp para realizar este ejercicio.

Ejercicio 4
Realizar una aplicacin de consola que calcule el factorial de un nmero entero. El programa tiene que ver si el nmero al que se le va a calcular el factorial viene como argumento de main(), entonces hace el clculo. Si no viene como argumento, el programa debe pedirle al usuario que ingrese el nmero por teclado y realizar el clculo.

Ejercicio 5
Realizar una aplicacin de consola que permita la conversin de euros, de forma que pregunte los euros que desea convertir y como salida devuelva cuantas pesetas y dlares son. Recordar que 1 son 166.386 pesetas y

Laboratorio de Programacin II. Grupo C


aproximadamente 1.078 dlares. El nombre del proyecto debe ser Ejer12.bpr y al nombre del fichero fuente debe ser Ejer12.cpp.

Realizar una aplicacin de consola que permita realizar la conversin entre temperaturas de C F y FC, segn la siguiente frmula: F = (9.0/5.0)* (C)+32.El programa debe pedir al usuario qu tipo de conversin debe hacer y luego el dato de la temperatura a convertir. Para este ejercicio debe crear un proyecto Ejer13.bpr y el nombre del programa ser Ejer13.cpp.

Ejercicio 6

Ejercicio 7
Realizar una aplicacin de consola que muestre por pantalla el siguiente tringulo: 1 232 34543 4567654 567898765 67890109876 7890123210987 890123454321098 90123456765432109 0123456789876543210 El nombre del proyecto debe ser Ejer14.bpr y al nombre del fichero fuente debe ser Ejer14.cpp.

ENTREGA DE LOS EJERCICIOS


La forma de entregar la prctica ser a travs de la asignatura virtualizada en el campus virtual. Para ello debes darte de alta en el campus virtual de la complutense, lo cual puedes realizar en la siguiente pgina www.ucm.es/campusvirtual, o bien puedes encontrar un enlace al mismo desde la pgina Web de la facultad. En dicha pgina podrs encontrar un formulario de Inscripcin de alumnos, y es all donde debes darte de alta. Una vez que te hayas dado de alta, y tengas acceso al campus virtual, entra en la asignatura de Laboratorio de Programacin II con el usuario y password que te hayan proporcionado al registrarte. En la asignatura virtualizada vers una serie de enlaces, entre ellos, hay uno titulado como prcticas. Navega sobre dicho enlace, y vers que hay un grupo de trabajo creado denominado Prctica 1. Dicho grupo de trabajo tiene asociado una carpeta sobre la que puedes subir , eliminar o editar archivos(Accedes usando Editar Archivos). All vers que hay tres subcarpetas, una por cada laboratorio. Zippea el trabajo correspondiente, y dentro del zip incluye un archivo de texto en que aparezcan los nombres de los que formis el grupo. Etiqueta el archivo zip con el nombre LabnApellidoApellido.zip. Por ejemplo si Juan Martnez Martin y Silvia Prez Garca estn en el laboratorio 1, y forman un grupo etiquetan su zip como Lab1MartinezPerez.zip. A continuacin usa la opcin cargar que hay en la parte derecha del rea donde te encuentras, y te permitir subir archivos desde tu disco duro. Almacnalo en la carpeta correspondiente al laboratorio al que perteneces. Como an la mayora de los alumnos no estn registrados, tenis de plazo para registraros y subir la correspondiente prctica 1 hasta este viernes da 29 de Octubre. Acabado el plazo no se podrn subir las prcticas, y se considerar como prctica no entregada. Si tienes alguna duda o problema sobre el procedimiento de entrega no dudes en preguntar.

También podría gustarte