Вы находитесь на странице: 1из 5

Laboratorio de programacin II. Grupo C.

PRACTICA 2:ASPECTOS BSICOS DE C++(2) EJERCICIOS GUIADOS Ejercicio 1 En este ejercicio se va a crear un programa que genera una cantidad constante de nmeros aleatorios entre dos lmites A y B dados por el usuario y se introducen en un array de doubles. A continuacin se sacar por la consola dichos nmeros con sus correspondientes races cuadradas:
#include <iostream.h> #include <math.h> //para sqrt() #include <stdlib.h> //para rand() #include <iomanip.h> #define NUM 15 void main() { double datos[NUM]; //array double A,B; //limites cout << "Dar limite A y B:"; cin >> A >> B; //generacion de numeros con For for (int i=0;i<NUM;i++){ double x = (double)rand()/RAND_MAX; //entre 0 y 1 datos[i] = A + x * (B - A); //entre A y B } //imprimir datos con While i=0; while(i<NUM){ cout << "Num:"<< setw(8) << setprecision(5) << datos[i]; cout << " Sqrt:"<< sqrt(datos[i]) << endl; i++; } } //fin de main

Probado el programa se pide modificarlo de forma el programa sea capaz de detectar si se le han pasado los lmites A y B a travs de los argumentos de main. En el caso en que no se le pasaran los argumentos, el programa debe pedirlos. Y en caso de que slo se le pasara un argumento, debe asumir que es el lmite A y debe pedir al usuario que ingrese el lmite B. Ejercicio 2 En este ejercicio se va a crear un programa que ordena un conjunto de nmeros introducidos por el usuario a travs del teclado. El programa pedir al usuario de qu forma desea ordenarlos: ascendente o descendente. Para ordenar se usar el algoritmo de la burbuja que funciona de la siguiente manera: se van recorriendo uno a uno todos los elementos del vector, desde el primero hasta el penltimo (ndice i). Cada uno de estos elementos se compara con el de todos los elementos siguientes (ndice j). Si se encuentra un elemento j con un valor menor o mayor que i (segn sea el caso) se intercambian dichos elementos, pues estn desordenados. As pues, para implementar este algoritmo son necesarios dos bucles: el primero, bucle i, recorre el vector desde la posicin i= 0 hasta i < NUM-1. El segundo bucle, bucle j, recorre el vector desde la posicin j= i+1 hasta el final.

Laboratorio de programacin II. Grupo C.

El cdigo del programa es el siguiente:


#include <iostream.h> #include <conio.h> //para getch() #define NUM 10 void main(void){ int dato[NUM]; bool ord=false; //true:ascend false=descen. char ch; while(true){ cout << "\nOrdenar descendente (D) o Ascendente (A)?" ; cout << flush; //limpia buffer ch = getch(); //captura la tecla presionada if ( ch=='a' || ch=='A' ) { ord=true; break; } if ( ch=='d' || ch=='D') { ord=false; break; } } //introducir numeros cout << endl; for (int i=0;i<NUM;i++){ cout << "dame el dato[" << i << "]:"; cin >> dato[i]; } // algoritmo de ordenacion for (i=0;i<NUM-1;i++){ for (int j=i+1;j<NUM;j++){ int a=dato[i]; int b=dato[j]; if ( a < b && !ord) { // Descen dato[i] = b; dato[j] = a; } if ( a > b && ord){ //Ascend dato[i] = b; dato[j] = a; } } } // imprime numeros ordenados cout << "\nOrden elegido: " ; ord? cout << "Ascend" : cout << "Descend"; //operador ternario for ( i=0;i<NUM;i++){ cout << "\ndato[" << i << "]:" << dato[i]; } cout << endl; }

Probado el programa se debe reemplazar cada for por un while y cada while por un for. Adems observar el uso de getch()(captura la tecla que ha sido presionada y deposita el valor en la variable ch) y del operador ternario ( ? : ). Ejercicio 3 En este ejercicio se implementan funciones utilizadas para el manejo de las cadenas, como por ejemplo escribir una cadena al revs, escribirla en maysculas, invertir las maysculas a minsculas y viceversa. Para ello se van a usar varias funciones: *islower( char ): esta funcin devuelve un true si el carcter est en minsculas. *toupper( char ): esta funcin convierte un carcter a maysculas. *tolower( char ): convierte a minsculas.

Laboratorio de programacin II. Grupo C.

El cdigo del programa es el siguiente:


#include <iostream.h> #include <stdio.h> //para gets() #include <string.h> //para strlen() #include <ctype.h> //para islower() void main(void){ char cadena[120]; cout << "Escribe una frase:" << endl; gets(cadena); int len = strlen(cadena); cout << "Longitud de la cadena: " << len << endl; //escribir la cadena al revs cout << "Cadena al reves: " << endl << "\t"; int val=len; //copia longitud while(val--){ cout << cadena[val]; } //convertir las May en Min y viceversa cout << "\nConvertir de May a Min y viceversa:\n"; for (int i=0;i<len;i++){ if ( islower( cadena[i] )) { //es minuscula? cout << (char)toupper(cadena[i]); //conv a may. }else { cout << (char)tolower(cadena[i]); //sino conv. a min. } } cout << endl;}

Ejercicio 4 Dado un conjunto de nmeros enteros, se pide crear un programa que calcule el mayor y el menor elemento del conjunto usando un solo bucle. Los pasos que se deben seguir son: 1- Crear un array de datos de tipo int, para almacenar hasta 10 elementos. 2- Crear dos variables de tipo int: iMax, iMin, en las cuales se almacenar el valor mximo y el mnimo. 3- Crear las variables temporales necesarias para poder realizar los clculos. 4- Pedir por teclado al usuario que introduzca los elementos, uno a uno. 5- Sacar por la consola todos los elementos, tal como han sido introducidos y luego cual es el mayor y cul es el menor del conjunto. Implementar el programa primero usando sentencias For (donde se deban usar los bucles), y despus con sentencias While o Do-While en lugar de for.

Laboratorio de programacin II. Grupo C. EJERCICIOS PROPUESTOS Ejercicio 1 Realizar un programa para calcular el mximo comn divisor de dos nmeros enteros. Por ejemplo: Primer nmero? 655 Segundo nmero? 1325 El mximo comn divisor es: 5 Ejercicio 2 Realizar un programa que escriba un rombo simtrico de asteriscos como el que se muestra a continuacin, tomando como dato el nmero de asteriscos que tiene el lado. Lado? 4 * * * * * * * * * * * * * * * * Ejercicio 3 Realizar un programa que calcule el nmero e mediante el desarrollo en serie: E= 1+ 1/1!+1/2!+1/3!+. con un error menor del introducido como dato. Por ejemplo: Error? 0.000001 Valor de e= 2.71828198 Ejercicio 4 Realizar un programa que lea la longitud de los tres lados de un tringulo y analice qu tipo de tringulo es. Los resultados posibles sern los siguientes: *No forman tringulo (un lado mayor que la suma de los otros dos). *Tringulo equiltero (tres lados iguales). *Tringulo issceles (dos lados iguales). *Tringulo escaleno (tres lados distintos). *Tringulo rectngulo (sus lados cumplen el teorema de Pitgoras) Ejercicio 5 Realizar un programa que analice un texto terminado con el carcter punto(.), y contabilice los siguientes aspectos: -Nmero total de caracteres. -Nmero total de vocales utilizadas. -Total de veces utilizada la vocal a mayscula o minscula. -Total de veces utilizada la vocal e mayscula o minscula. -Total de veces utilizada la vocal i mayscula o minscula. -Total de veces utilizada la vocal o mayscula o minscula. -Total de veces utilizada la vocal u mayscula o minscula.

Laboratorio de programacin II. Grupo C. Ejercicio 6 Realizar un programa que imprima el llamado tringulo de Floyd con los nmeros correlativos de 1 a N, siendo N un valor que lee como dato. Este tringulo se forma imprimiendo los sucesivos nmeros naturales 1,2,3,.. en filas sucesivas, colocando 1 nmero en la primera lnea, 2 en la segunda, 3 en la tercera, etc. Por ejemplo: Lmite de la serie: 12 1 2 3 4 5 6 7 8 9 10 11 12 Ejercicio 7 Realizar un programa que pida al usuario una frase y una palabra para buscar dentro de dicha frase. El programa debe decirle en qu posicin ha encontrado dicha frase en caso de haberla encontrado, sino deber mostrar un mensaje diciendo que no ha encontrado dicha palabra. Por ejemplo: Frase: Esta es una demostracin del uso de las cadenas con el lenguaje C++ Palabra a buscar: uso Resultado: Encontrada en la posicin 30. Ejercicio 8 Realizar un programa que pida al usuario una frase y el programa decida si se trata de una frase palndroma, es decir si las letras de las que consta se leen igual hacia delante que hacia atrs. Por ejemplo: Frase: Dabale arroz a la zorra el abad. Resultado: Es palndroma.

ENTREGA DE LOS EJERCICIOS


La forma de entregar la prctica ser a travs de la asignatura virtualizada en el campus virtual. 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 con los apellidos de los integrantes de los grupos. Dicho grupo de trabajo tiene asociado una carpeta sobre la que puedes subir , eliminar o editar archivos(Accedes usando Editar Archivos). 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 grupo al que perteneces. Tenis de plazo para subir la correspondiente prctica 2 hasta este viernes da 12 de Noviembre. 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.

Вам также может понравиться