Sie sind auf Seite 1von 7

Prcticas de C++

Practica N 3

Informtica II Fundamentos de Programacin


Prof. Dr. Paul Bustamante

Practica N3 Programacin en C++

Pg. 1

NDICE
NDICE ........................................................................................................................................ 1 1. Introduccin...................................................................................................................... 1 1.1 Ejercicio 1: Usando mi primer array .......................................................................... 1 1.2 Ejercicio 2: Pasando los lmites al ejercicio anterior. ................................................ 2 1.3 Ejercicio 3: Calculando el Mayor y el Menor de un conjunto de nmeros................ 2 1.4 Ejercicio 4: Ordenando un conjunto de nmeros. ...................................................... 3 1.5 Ejercicio 5: Ordenar sin olvidar el desorden inicial................................................... 4 1.6 Ejercicio 6: Jugando con las cadenas...................................................................... 4 1.7 Ejercicio 7: Buscando palabras. ................................................................................. 5

1. Introduccin.
Ha llegado el momento de empezar a trabajar con los Arrays, para lo cual se le dar una pequea introduccin en el tema: Un array (tambin conocido como arreglo, vector o matriz) es una coleccin de variables relacionadas a las que se hace referencia por medio de un nombre en comn. Es un modo de manejar una gran cantidad de datos del mismo tipo bajo un mismo nombre o identificador. Su forma general es: tipo nombre[ tamao ] Ejemplo double datos[10] : En esta sentencia se reserva espacio para 10 variables de tipo double, las cuales se van a manejar por medio del nombre datos y un ndice, el cual en C++ siempre empieza por cero. Los elementos se enumeran desde 0 hasta (n-1). Hay que tener mucho cuidado de no sobre-pasar las dimensiones del array, en cuyo caso dara error el programa. Si queremos acceder al primer elemento del ejemplo anterior: datos[0]=2.5; Al segundo: datos[1]=4.5; Y as sucesivamente hasta el ltimo valor: datos[9]=3.5; 1.1 Ejercicio 1: Usando mi primer array En este ejercicio vamos a generar una cantidad constante de nmeros aleatorios entre dos lmites A y B dados por el usuario y los vamos a introducir en un array de doubles. Sacaremos por la consola dichos nmeros con sus correspondientes races cuadradas, para lo cual usaremos algunos manipuladores vistos en clase:
#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 Informtica II Fundamentos de Programacin - Tecnun

Practica N3 Programacin en C++ } //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

Pg. 2

1.2 Ejercicio 2: Pasando los lmites al ejercicio anterior. El objetivo de este ejercicio es hacerle una mejora al ejercicio anterior, la cual consiste en que 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. Para el desarrollo de este ejercicio no es necesario que cree un proyecto ni fichero nuevo, puede utilizar el del ejercicio 1. 1.3 Ejercicio 3: Calculando el Mayor y el Menor de un conjunto de nmeros. En este ejercicio vamos a hacer la versin 1.1 del ejercicio 6 de la prctica No. 2, en el que se calculaba el mayor elemento de un conjunto de nmeros enteros. En este caso, los datos sern pedidos por el programa y se irn almacenando en un array. El objetivo de este ejercicio es calcular no solo el mayor, sino tambin el menor elemento de un grupo de nmeros enteros. Todo esto lo haremos en un solo bucle. Los pasos que debe seguir son: 1- Debe crear un array de datos de tipo int, para almacenar hasta 10 elementos. Por ejemplo int datos[10]; 2- Debe crear dos variables tipo int: iMax, iMin, en las cuales se almacenar el valor mximo y el mnimo. 3- Si lo cree necesario, puede crear ms variables temporales que le ayuden a hacer los clculos. 4- Luego debe pedir por teclado al usuario que introduzca los elementos, uno a uno, y los debe ir almacenando en el array. 5- Es momento de hacer el algoritmo de calcular el mximo y mnimo. 6- Finalmente sacar por la consola todos los elementos, tal como han sido introducidos y luego cual es el mayor, cul es el menor del conjunto y sus respectivas posiciones. Este ejercicio tiene dos pasos, para lo cual debe generar un solo proyecto: Ejer3. Para el primer paso debe generar un fichero MayMinFor.cpp en el que har el programa, segn las indicaciones anteriores, slo con sentencias For (donde deba usar los bucles). El segundo paso es hacer lo mismo pero con la sentencia While o Do-While en lugar de for, para lo cual har otro fichero MayMinWhile.cpp.

Informtica II Fundamentos de Programacin - Tecnun

Practica N3 Programacin en C++

Pg. 3

1.4 Ejercicio 4: Ordenando un conjunto de nmeros. En este ejercicio vamos a ordenar un conjunto de nmeros introducidos por el usuario, a travs del teclado. Primero, el programa debe pedir al usuario de qu forma desea ordenarlos: ascendente o descendente. Debe Ud. crear un proyecto nuevo Ejer4 y en l un fichero ordena.cpp, en el que pondr el siguiente cdigo:
#include <iostream.h> #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 cin >> ch; //captura la tecla presionada if (ch=='A' || ch=='a') { ord=true; break; } else if (ch=='D' || ch=='d') { ord=false; break; } else cout << "Error, no ha elegido bien.\n"; } //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; }

Una vez que le ha funcionado el programa y lo ha entendido por completo, deber reemplazar cada for por un while y cada while por un for. Esto lo har en otro fichero ordena1.cpp (podra copiar el cdigo de un fichero a otro y hacer lo cambios oportunos, para que no pierda tiempo en volver a escribirlo). Debe tener en cuenta la forma en que se compara la tecla presionada, cuyo valor est en la variable ch. Tambin debe analizar la forma como utilizamos el operador ternario ( ? : ).
Informtica II Fundamentos de Programacin - Tecnun

Practica N3 Programacin en C++

Pg. 4

Para ordenar se usa un algoritmo sencillo, el llamado algoritmo de la burbuja que procede 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. 1.5 Ejercicio 5: Ordenar sin olvidar el desorden inicial Este ejercicio consiste en guardar los datos dados al inicio en el ejercicio anterior, con el fin de mantener los datos desordenados, tal cual fueron introducidos. Para este ejercicio puede utilizar el proyecto anterior, pero debe crear un nuevo fichero Ordena2.cpp, en el cual va a copiar todo el cdigo anterior. A partir de aqu empezar a hacer las modificaciones. Para desarrollar el ejercicio, debe crear otro array de enteros: int datoOld[NUM]; en el cual debe copiar los datos introducidos al inicio. Recuerde que el algoritmo de ordenacin modifica el vector. Finalmente, debe sacar por la consola los dos arrays: a la izquierda el inicial y a la derecha el ordenado, tal como se ve en la siguiente figura:
Orden elegido: Ascendente VecIni VecFin dato[0]: 1 1 dato[1]: 5 2 dato[2]: 9 5 dato[3]: 2 9 dato[4]: 40 40

1.6 Ejercicio 6: Jugando con las cadenas. En este ejercicio vamos a experimentar con algunas de las 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. Debe crear un proyecto nuevo Ejer6 y en l crear el fichero cadena.cpp, en el cual escribir el siguiente cdigo:
// fichero cadena.cpp #include <iostream.h> #include <string.h> #include <ctype.h> void main(void) { char cadena[120];

//para strlen() //para islower()

cout << "Escribe una frase:" << endl; cin.getline(cadena,120); int len = strlen(cadena); cout << "Longitud de la cadena: " << len << endl; //escribir la cadena al revs cout << "Cadena al reves: " << endl << "\t";

Informtica II Fundamentos de Programacin - Tecnun

Practica N3 Programacin en C++


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;

Pg. 5

} Dentro de las funciones utilizadas tenemos: strlen( char* ): devuelve la longitud de la cadena, hasta encontrar el carcter nulo \0. 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. No olvide poner siempre los ficheros de encabezado para poder usar estas funciones. 1.7 Ejercicio 7: Buscando palabras. Dada su experiencia ya con el manejo de las cadenas, demostrada en el ejercicio anterior, en este ejercicio debe hacer un programa que pida al usuario una frase y tambin que pida 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.

Informtica II Fundamentos de Programacin - Tecnun

Das könnte Ihnen auch gefallen