como programar en c++.pdf

Embed Size (px)

Citation preview

  • PPRROOGGRRAAMMAACCIINN EENN CC++++ PPRRCCTTIICCAA 1100

    VVEECCTTOORREESS YY MMAATTRRIICCEESS Ejercicio 1 Arrays de nmeros................................................................................................ 1

    Ejercicio 1.1 Manejo de un primer array de nmeros ............................................................ 1 Ejercicio 1.2 Calculando el mayor y el menor de un conjunto de nmeros........................... 2 Ejercicio 1.3 Orden de un conjunto de nmeros por el mtodo de la burbuja. ...................... 2 Ejercicio 1.4 Ordenar sin olvidar el desorden inicial ............................................................. 4

    Ejercicio 2 Manejo de matrices............................................................................................... 4 Ejercicio 2.1 Producto de vector por matriz........................................................................... 4 Ejercicio 2.2 Producto de matriz por matriz .......................................................................... 5 Ejercicio 2.3 Resolucin de un sistema lineal de 2 ecuaciones ............................................. 6

    Abra un nuevo directorio dentro de G:\Informatica\C++ llamado Practica12. Ha llegado el momento de empezar a trabajar con cadenas de datos (Arrays), para lo cual se le dar un pequeo recordatorio del tema:

    Un aarrrraayy (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.

    EEjjeerrcciicciioo 11 AArrrraayyss ddee nnmmeerrooss

    Ejercicio 1.1 Manejo de un primer array de nmeros Debe Ud. crear un proyecto nuevo Ejercicio1_1 y en l un fichero array.cpp. 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 los manipuladores vistos en clase:

    #include #include //para sqrt() #include //para rand() #include void main(void) { double datos[15]; //array double A,B; //limites cout > A >> B; //generacion de numeros con For for (int i=0;i

  • Practica N10 Programacin en C++ Pg. 2

    Informtica I Fundamentos de Computadores - Tecnun

    double x = rand()/32767.0; //entre 0 y 1 datos[i] = A + x * (B - A); //entre A y B } //imprimir datos con While i=0; while(i

  • Practica N10 Programacin en C++ Pg. 3

    Informtica I Fundamentos de Computadores - Tecnun

    cin >> ch; //captura la tecla presionada if (ch=='A' || ch=='a') { ord=true; resp_incorrecta=false; } else if (ch=='D' || ch=='d') { ord=false; resp_incorrecta=false; } else { cout

  • Practica N10 Programacin en C++ Pg. 4

    Informtica I Fundamentos de Computadores - Tecnun

    Ejercicio 1.4 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 inicie un nuevo proyecto llamado Ejercicio1_4 y 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

    EEjjeerrcciicciioo 22 MMaanneejjoo ddee mmaattrriicceess

    Una mmaattrriizz tiene la forma general de: tipo nombre[ filas][columnas] Ejemplo long datos[10][12] : En esta sentencia se reserva espacio para 10*12 variables de tipo long, las cuales se van a manejar por medio del nombre datos y dos ndices.

    Los elementos se enumeran desde [0][0] hasta [n-1][n-1]. En la memoria los elementos se guardan por filas. Por lo que el ndice que ms rpidamente vara es el de las columnas.

    Ejercicio 2.1 Producto de vector por matriz Para que no deje sin explotar todas las posibilidades de los bucles for, le proponemos este sencillo programa que multiplica un vector por una matriz (en este orden). La frmula utilizada para realizar el producto matricial y = x*A ha sido la siguiente:

    =

    =1

    0*

    n

    jjiji axb

    Escriba el siguiente programa y gurdelo como VxMatriz.cpp (no se olvide de crear el proyecto Ejercicio2_1):

    // fichero vxmatriz.cpp #include

    #include

  • Practica N10 Programacin en C++ Pg. 5

    Informtica I Fundamentos de Computadores - Tecnun

    void main (void) {

    int vector[100]; int matriz[100][100]; int resultado[100]; int ColumnasVector, ColumnasMatriz, dato; cout > ColumnasVector; cout > ColumnasMatriz; cout vector[i]; for (i=0; i

  • Practica N10 Programacin en C++ Pg. 6

    Informtica I Fundamentos de Computadores - Tecnun

    Como se puede observar en la frmula, intervienen 3 ndices i,j,k, lo cual se traduce en que necesitaremos tres bucles for para realizar dicha operacin.

    Pasos a seguir:

    1- Debe crear tres matrices de 10x10 (A, B y C), para tener espacio suficiente para realizar las operaciones.

    2- Pedir por teclado las dimensiones de la matriz A (filas y columnas). Debe comprobar de no sobrepasar el lmite reservado (10 en nuestro caso).

    3- Pedir por teclado slo las columnas de la matriz B, ya que las filas tienen que ser igual a las columnas de A para la multiplicacin. Tambin debe comprobar que no sea mayor que la memoria reservada.

    4- Realizar la multiplicacin, como en el ejemplo anterior, en sendos bucles for anidados (en este caso hacen falta 3 bucles for). Ir almacenando el resultado en la matriz C.

    5- Finalmente debe sacar por consola: a. La matriz A y la matriz B con sus respectivos formatos (usar setw() ). b. La matriz resultante C, tambin formateada.

    Ejercicio 2.3 Resolucin de un sistema lineal de 2 ecuaciones

    El ejercicio a realizar en este apartado debe permitir resolver un sistema lineal de 2 ecuaciones del tipo:

    22221

    11211

    bYaXabYaXa

    =+=+

    Donde el determinante viene dado por:

    122122112221

    1211det aaaaaaaa ==

    Y los valores de las variables vienen dados por las siguientes expresiones:

    det;

    det221

    111

    222

    121

    baba

    yabab

    x == Crear el proyecto Ejercicio2_3 y el fichero Ecuaciones.cpp para escribir el cdigo. Pasos a seguir para programar este ejercicio:

    a. Crear una matriz para albergar los coeficientes a11, a12, etc. b. Crear un vector para albergar los trminos independientes b1 y b2. c. Pedir los datos al usuario. d. Realizar los clculos (verificar que el determinante no es cero). e. Imprimir la matriz del determinante (con formato), as como su valor. f. Imprimir la solucin (x e y).

  • Practica N10 Programacin en C++ Pg. 7

    Informtica I Fundamentos de Computadores - Tecnun

    En la figura anterior se puede apreciar lo que debe salir por la consola. Tambin cuando el usuario pide los datos de la matriz y del vector (caracterizado por el ?: en el mensaje).