Sunteți pe pagina 1din 7

Laboratorio de Programación II.

Grupo C

PRACTICA 1: ASPECTOS BÁSICOS DE C++(I)

EJERCICIOS GUIADOS
Ejercicio 1: Entrada/Salida básica(I).
En este ejercicio se va a probar el flujo cout , que permite mostrar cadenas por pantalla. Para ello se debe
crear una aplicación de consola, de forma que el nombre del proyecto será Ejer00.bpr y el del programa será
Ejer00.cpp. A continuación se debe copiar el siguiente programa en el editor de código y realizar su
ejecución.

#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 números como cadenas de
caracteres, pero cuando encuentra blancos, tabuladores o espacios, termina de leer. Se debe crear una
aplicación de consola, de forma que el nombre del proyecto será Ejer01.bpr y el del programa será
Ejer01.cpp. A continuación se debe copiar el siguiente programa en el editor de código y realizar su
ejecución.

#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 función getline
del flujo cin, la cual toma todo lo escrito por el usuario, incluidos los espacios. Se debe crear una aplicación
de consola, de forma que el nombre del proyecto será Ejer02.bpr y el del programa será Ejer02.cpp. A
continuación se debe copiar el siguiente programa en el editor de código y realizar su ejecución.Observar el
uso de la función 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++){

1
Laboratorio de Programación 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 aritméticas


En este ejercicio se va a ilustrar el uso de expresiones aritméticas. Para ello se debe crear una aplicación de
consola, de forma que el nombre del proyecto será Ejer03.bpr y el del programa será Ejer03.cpp. A
continuación se debe copiar el siguiente programa en el editor de código y realizar su ejecución.

/* Un marathon tiene 26 millas y 385 yardas */


/* Calcula la distancia del marathon en Kilómetros */
/* Una milla tiene 1760 yardas */
#include <iostream.h>
void main (void){
int millas,yardas;
float kilometros;
millas = 26;
yardas = 385;
/* fórmula de conversión */
kilometros = 1.609 * (millas + yardas / 1760);
// salida de datos
cout <<"Un marathon tiene "<< kilometros << " kilometros" << endl;
}

Después de realizar su ejecución se debe modificar el programa sustituyendo 1760 por 1760.0 en la línea que
calcula el número de kilómetros, y volver a ejecutar. Reflexionar sobre el resultado que se obtiene ahora con
la modificación.

Ejercicio 4: La función main


Todos los argumentos que se le pasan al programa desde la línea de comandos (ventana del MS-DOS) se
reciben en un array de caracteres, esto quiere decir que si pasamos un número, este es leído como una cadena
de caracteres, con lo cual no se puede utilizar para hacer operaciones aritméticas. En este ejercicio se van a
convertir esas cadenas de caracteres en números, enteros o reales. Para ello se debe crear una aplicación de
consola, de forma que el nombre del proyecto será Ejer04.bpr y el del programa será Ejer04.cpp. A
continuación se debe copiar el siguiente programa en el editor de código y realizar su ejecución pasándole un
número 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 función main() almacena el número de argumentos, se pueden obtener los datos
del argumento (char *cadena[]). En particular se va obtener la sqrt() del número pasado como argumento.
Para ello se va utilizar la función atof(), definida en el fichero math.h, para realizar la conversión de
caracteres a una variable numérica tipo double. Modifique el código anterior con:

#include <iostream.h>

2
Laboratorio de Programación II. Grupo C

#include <math.h> //para atof y sqrt


void main(int num, char *cadena[])
{
if (num == 1 ){
cout << "Pasar un número real como parámetro" << 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 inicialización y actualización del bucle for; el resultado es correcto porque dichas
tareas se han incluido de otra forma. La forma 2 es completamente estándar. En la forma 3 todo se ha
introducido en el paréntesis del bucle; en la inicialización se da valor inicial tanto a i como a suma; en la
actualización se modifica también tanto i como suma. El resultado es que el bucle sólo necesita una sentencia
vacía, representada por el punto y coma (;). La forma 4 es una variante de la forma 3.

Se debe crear una aplicación de consola, de forma que el nombre del proyecto será Ejer05.bpr y el del
programa será Ejer05.cpp. A continuación se debe copiar el siguiente programa en el editor de código y
realizar su ejecución.

#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;
}

Después de crear el proyecto, de compilar y de ejecutar este programa, observará que la forma 3 da un
resultado diferente de las demás. ¿Sabrías 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 ningún parámetro que actúa como un bucle infinito, esto quiere decir que nunca
terminará, por eso se termina el programa por medio de la función exit(0) aunque también se puede probar a
utilizar la sentencia break para salir del bucle for.

3
Laboratorio de Programación II. Grupo C

Se debe crear una aplicación de consola, de forma que el nombre del proyecto será Ejer06.bpr y el del
programa será Ejer06.cpp. A continuación se debe copiar el siguiente programa en el editor de código y
realizar su ejecución.

#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 ecuación de segundo grado según el valor de su discriminante. Para ello
se debe crear una aplicación de consola, de forma que el nombre del proyecto será Ejer07.bpr y el del
programa será Ejer07.cpp. A continuación se debe copiar el siguiente programa en el editor de código,
completar el código que aparece con puntos suspensivos y realizar su ejecución.

#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= . . .;

4
Laboratorio de Programación II. Grupo C

cout << "Las dos raíces 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 raíces son iguales y valen: " << x1 << endl;
}
}
Para probar el código se pueden usar los siguientes valores:
A B C Resultado
1 4 4 Raíces iguales
1 5 4 Raíces reales
1 3 6.25 Raíces imaginarias

EJERCICIOS PROPUESTOS
Ejercicio 1
En este ejercicio se va a generar una serie de números aleatorios entre 0 y 1. La cantidad de números 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 función rand() genera un número entero aleatorio entre 0 y 32767
y se encuentra en math.h y la función atoi(char *) convierte una cadena de caracteres en un número entero y
se encuentra en stdlib.h . Usar la directiva #include para incluir tanto math.h como stdlib.h.

Se debe crear una aplicación de consola, de forma que el nombre del proyecto será Ejer08.bpr y el del
programa será Ejer08.cpp. A continuación se debe copiar el siguiente programa en el editor de código,
completar el código que aparece con puntos suspensivos y realizar su ejecución.
...
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 números enteros que son pasados
como argumentos al programa. Para el cálculo 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 función 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 máximo 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 posición del
último valor copiado a Max. Al final, iMax indicará en qué posición estaba el mayor elemento.

Se debe crear una aplicación de consola, de forma que el nombre del proyecto será Ejer09.bpr y el del
programa será Ejer09.cpp. A continuación se debe copiar el siguiente programa en el editor de código, y
realizar su ejecución pasándole varios números por ejemplo ejer6 10 15 4 22 18 34.

5
Laboratorio de Programación 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;
}
Basándose en el anterior programa se pide:

a) Escribir un programa que permita calcular el menor de varios números reales pasados como argumentos.
Llamar al proyecto Ejer09a.bpr y al programa Ejer09a.cpp

b) Escribir un programa que permita dados un conjunto de números enteros, positivos y negativos, calcular el
mayor en valor absoluto. Usar la función abs(int) que está definida en el fichero math.h. Esta función
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 número -25 o la posición 2.

Ejercicio 3
Realizar una aplicación de consola que imprima por la consola todos los argumentos que se le pasan desde la
línea 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 aplicación de consola que calcule el factorial de un número entero. El programa tiene que ver si
el número al que se le va a calcular el factorial viene como argumento de main(), entonces hace el cálculo. Si
no viene como argumento, el programa debe pedirle al usuario que ingrese el número por teclado y realizar
el cálculo.

Ejercicio 5
Realizar una aplicación de consola que permita la conversión de euros, de forma que pregunte los euros que
desea convertir y como salida devuelva cuantas pesetas y dólares son. Recordar que 1€ son 166.386 pesetas y

6
Laboratorio de Programación II. Grupo C

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

Ejercicio 6
Realizar una aplicación de consola que permita realizar la conversión entre temperaturas de ºC ƺF y ºFƺC,
según la siguiente fórmula: ºF = (9.0/5.0)* (ºC)+32.El programa debe pedir al usuario qué tipo de conversión
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 7
Realizar una aplicación de consola que muestre por pantalla el siguiente triángulo:
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 práctica será a través 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 página
www.ucm.es/campusvirtual, o bien puedes encontrar un enlace al mismo desde la página Web de la facultad.
En dicha página podrás encontrar un formulario de Inscripción 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
Programación II con el usuario y password que te hayan proporcionado al registrarte. En la asignatura
virtualizada verás una serie de enlaces, entre ellos, hay uno titulado como prácticas. Navega sobre dicho
enlace, y verás que hay un grupo de trabajo creado denominado Práctica 1. Dicho grupo de trabajo tiene
asociado una carpeta sobre la que puedes subir , eliminar o editar archivos(Accedes usando Editar Archivos).
Allí verás 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 formáis el grupo. Etiqueta el archivo
zip con el nombre LabnApellidoApellido.zip. Por ejemplo si Juan Martínez Martin y Silvia Pérez García están
en el laboratorio 1, y forman un grupo etiquetan su zip como Lab1MartinezPerez.zip. A continuación usa la
opción cargar que hay en la parte derecha del área donde te encuentras, y te permitirá subir archivos desde tu
disco duro. Almacénalo en la carpeta correspondiente al laboratorio al que perteneces.

Como aún la mayoría de los alumnos no están registrados, tenéis de plazo para registraros y subir la
correspondiente práctica 1 hasta este viernes día 29 de Octubre. Acabado el plazo no se podrán subir las
prácticas, y se considerará como práctica no entregada. Si tienes alguna duda o problema sobre el
procedimiento de entrega no dudes en preguntar.

S-ar putea să vă placă și