Prof. Dr. Paul Bustamante

Documentos relacionados
Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Prof. Dr. Paul Bustamante

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Prof. Dr. Paul Bustamante

Introducción al tipo de dato ARRAY

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Instituto Tecnológico de Celaya

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Memoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez

Funciones. Parámetros por valor

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

Vectores. 27/05/05 Programación Digital I 1

Algoritmos y Programación I

EJERCICIO 1. CREACIÓN DE UNA FUNCIÓN

Tema 2: La clase string

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Apuntadores en C y C++

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Prof. Dr. Paul Bustamante

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Segundo Taller Final de PROGRAMACIÓN ORIENTADO A OBJETOS. INGENIERÍA DE SISTEMAS. Docente y Administrativo: Luz Esperanza Espitia Preciado

Apuntadores (Punteros)

Prof. Dr. Paul Bustamante

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática

Tema 6. Gestión dinámica de memoria

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

LABORATORIO 3 ESTRUCTURAS REPETITIVAS WHILE / DO WHILE

6.1.- Introducción a las estructuras de datos Tipos de datos Arrays unidimensionales: los vectores Operaciones con vectores.

TEMA 4. ESTRUCTURAS DE CONTROL

TUTORIAL SOBRE HOJAS DE CALCULO

Informática FACULTAD DE FÍSICAS

Tema 9. Vectores y Matrices

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8

UNIDAD V: ARR R EGL G OS O BIDI D MENS N IONALE L S

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

Introducción al tipo Vector Cómo guardar una colección de datos conceptualmente relacionados? - almacenar los 100 primeros números primos, - al

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Sesión No. 10. Contextualización INFORMÁTICA 1. Nombre: Gestor de Base de Datos (Access)

Prof. Dr. Paul Bustamante

8.1 Un primer bucle FOR Varias formas de utilizar el bucle FOR Calcular el factorial de un número mediante un bucle FOR...

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

media = ( temp0 + temp1 + temp2 + temp3 + temp temp23 ) / 24; printf( "\nla temperatura media es %f\n", media );

INSTITUCIÓN EDUCATIVA LICEO DEPARTAMENTAL ÁREA DE TECNOLOGÍA E INFORMÁTICA

INSTITUCION EDUCATIVA MANUEL ANGEL ANACHURY AREA: TECNOLOGIA E INFORMATICA

Procesos e Hilos en C

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

ARREGLOS EN. Nota: El autor.

Práctica 3: Vectores y matrices en C.

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

= RETURN =3 7-. ELSE K

Arrays y Cadenas en C

E/S POR CONSOLA DE C++ Parte I. Elementos Básicos Dr. Oldemar Rodríguez R.

TécniquesInformàtiques PRÀCTICA 6 (2 Sessions) Curs

Maribel Martínez y Ginés Ciudad-Real Fichas para mejorar la atención MATRIZ DE LETRAS

INDICE Capitulo 1. El Turbo C++ y el Lenguaje C Capitulo 2. Declaración e inicialización de variables Capitulo 3. Funciones de entrada y salida

MICROSOFT EXCEL 2010

Una base de datos de Access puede estar conformada por varios objetos, los más comunes son los siguientes:

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

PROGRAMACION / Clave: 11214

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Tema 3: Ficheros en C++

UNIDAD 4. MODIFICAR TABLAS DE DATOS

Fundamentos de programación

Resolución de problemas mediante algoritmos

Tema: Arreglos de Objetos en C++.

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

SESIÓN PRÁCTICA 3: TRANSFORMACIONES DE DATOS PROBABILIDAD Y ESTADÍSTICA. PROF. Esther González Sánchez. Departamento de Informática y Sistemas

1. Juego del Ahorcado

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Programación PHP. orientada a formularios DISEÑOS CURRICULARES CON ENFOQUE POR COMPETENCIAS LABORALES

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

QUANTUM COMPUTACION CURSO DE PLANILLA ELECTRONICA MICROSOFT EXCEL 2013

Excel 2013 Completo. Duración: Objetivos: Contenido: 80 horas

MICROSOFT WORD AVANZADO. Nº Horas: 18. Objetivos:

Prof. Dr. Paul Bustamante

Estructuras de Repetición (Hacer-Mientras)

1 Estructura básica de un programa C++

Programación Java - Ingeniería de Sistemas - UATF 12 Ing. Limber Ruíz Molina

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Lenguajes de programación LPSI EUI UPM CADENAS DE CARACTERES

OBJETIVOS. Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos.

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Estructuras de Decisión Simples y Dobles

1. Introducción. 1.1 Ejercicio 1: Estación Meteorológica (4.0 pts.) Ejercicio 2: Gestión Académica: Alumnos (5.0 pts.)...

FÓRMULAS Y FUNCIONES

Principios de Computadoras II

Estructuras de repetición

Transcripción:

Prácticas de C++ Practica Nº 2 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante

Practica Nº 2 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1: Reserva dinámica de memoria para vectores... 1 1.2 Ejercicio 2: Introducción a la estadística... 2 1.3 Ejercicio 3: Matrices dinámicas.... 2 1.4 Ejercicio 4: Producto de matriz por matriz.... 3 1.5 Ejercicio 5: Ordenando Nombres... 3 1.6 Ejercicio 6: Ordenando Nombres v1.1... 4 1. Introducción. Como ya lo hemos venido haciendo, el primer ejercicio de esta práctica debe realizarlo solo, con el fin de que pueda ganar más experiencia en la programación en C++. En algunos ejercicios se dará el código, lo que no significa que sólo tenga que escribirlo en el ordenador, debe tratar de realizarlos por su cuenta. Recuerde borrar los ficheros que estén en los subdirectorios \debug y \release del proyecto, para que libere espacio en su disco G\. 1.1 Ejercicio 1: Reserva dinámica de memoria para vectores. En este ejercicio vamos a hacer uso de la reserva dinámica de memoria para almacenar un número determinado de valores (obtenidos de forma aleatoria, entre 0 y 100) y ordenarlos de mayor a menor. El código para obtener los números y para la reserva dinámica de memoria se lo doy, el resto debe tratar de implementarlo solo. Debe crear el proyecto Ejer1 y el fichero ordena.cpp para introducir el código. // fichero ordena.cpp // ordena usando memoria dinamica #include <iostream.h> #include <stdlib.h> //para rand() void main(void) { int Num; //Numero de datos int *datos; //puntero a int cout << "Cuantos numeros desea generar:"; cin >> Num; //asignacion dinamica de memoria datos = new int[num]; if (datos == NULL) cout << "Error"; //Llenar el vector for (int i=0;i<num;i++){ datos[i] = rand() * 100 / RAND_MAX; //ordena los datos -> Hacer aquí el algoritmo de ordenacion //imprime los datos ordenados for (i=0;i<num;i++) cout << i << ":" << datos[i] <<endl; //liberar memoria delete [] datos;

Practica Nº 2 Programación en C++ Pág. 2 1.2 Ejercicio 2: Introducción a la estadística. En este ejercicio va a tener una pequeña introducción a la estadística (realmente ya la ha tenido y quizá no lo ha notado). El ejercicio consiste en pedir una serie de números al usuario y hallar el máximo, el mínimo y la media aritmética de ellos. Debe crear una variable puntero tipo float y pedir al usuario que introduzca el número de datos, luego debe introducir todos los datos a calcular. Recuerde que debe reservar memoria de forma dinámica para almacenar el vector de datos. Debe crear el proyecto Ejer2 y el fichero estadistica.cpp para escribir el código en él. La salida del programa debe ser algo así (es un ejemplo, no tienen que coincidir): Numero de datos: 10 Máximo: 25 Minimo: 4 Media Aritmética: 14.6 Los datos Introducidos son:..//mostrar los datos en la consola 1.3 Ejercicio 3: Matrices dinámicas. Ha llegado el momento de empezar a trabajar con la reserva de memoria dinámica para matrices. Los pasos para hacer la reserva dinámica de memoria para matrices son: a. Crear el array de punteros del tipo de datos: float **datos; b. Reservar memoria para el array de punteros: datos = new float*[fil]; c. Hacer un bucle para reservar memoria para col columnas de cada fila: for (int i=0;i<fil;i++) datos[i] = new float[col]; d. Ya tenemos creada la matriz, podemos trabajar con ella con los índices, por medio de los corchetes [], de la forma datos[i][j]. e. Finalmente, debemos hacer otro bucle para liberar la memoria de cada fila y luego debemos liberar la memoria asignada al array de punteros, en ese estricto orden En el siguiente ejemplo verá cómo asignar memoria para una matriz de fil x col: // fichero matriz.cpp // crear matrices usando memoria dinamica #include <iostream.h> #include <string.h> //para strlen #include <stdlib.h> //para atoi() void main(void) { int fil; //numero de filas int col; //numero de columnas float **datos; cout << Num. Filas: ; cin >> fil; cout << Num. Columnas: ; cin >> col; datos = new float*[fil]; //vector filas //reserva memoria para las columnas de cada fila for (int i=0;i<fil;i++) datos[i] = new float[col]; //ya puede usar la matriz for (int f=0;f<fil;f++)

Practica Nº 2 Programación en C++ Pág. 3 for (int c=0;c<col;c++) datos[f][c] = (float)rand()/rand_max; //imprime los valores for ( f=0;f<fil;f++){ for (int c=0;c<col;c++) { cout << f << "," << c << ":"<<datos[f][c]<< " "; cout <<endl; //liberar memoria for (f=0;f<fil;f++) delete [] datos[f]; //libera filas delete [] datos; //libera vector Debe crear un proyecto Ejer3 y el fichero matriz.cpp para escribir el código. 1.4 Ejercicio 4: Producto de matriz por matriz. Basándose en el ejercicio anterior, vamos a realizar un programa que permita hacer el producto de matrices con asignación dinámica de memoria. Debe crear un proyecto llamado Ejer4 que contenga un programa que multiplique dos matrices MatA y MatB de cualquier tamaño; llámalo matxmat2.cpp. Pasos a seguir: 1- Debe crear tres punteros a punteros: float **ma, **mb, **mc. 2- Pedir por teclado las dimensiones de la matriz MatA (filas y columnas). 3- Pedir por teclado sólo las columnas de la matriz MatB, ya que las filas tienen que ser igual a las columnas de MatA para la multiplicación. 4- Realizar la reserva dinámica de memoria de todas las matrices, usando para ello el operador new. 5- Pedir los datos de las dos matrices MatA y MatB. 6- Realizar la multiplicación, como en el ejercicio de la práctica anterior, en sendos bucles for anidados, y almacenar el resultado en la matriz C. 7- Finalmente debe sacar por consola los datos de la matriz resultante: 8- Liberar la memoria asignada de todas las matrices, utilizando el operador delete. Recuerde la fórmula para multiplicar dos matrices: c ij = n k = 1 a ik b kj i = 1... n, j = 1,..., n 1.5 Ejercicio 5: Ordenando Nombres Este quinto ejercicio consiste en crear un programa capaz de leer desde el teclado un número determinado de nombres, almacenarlos en un "vector de punteros a caracteres" (en otras palabras, una matriz de caracteres) y ordenarlos, por medio de la función strcmp. Se recuerda que cada letra (char) es "tratada como si fuera un número" (una casilla) y por lo tanto almacenar un nombre se asemeja a almacenar una fila de una matriz. Se necesita por lo tanto un doble puntero (char **nombres) para poder almacenar un conjunto de palabras. En esta "matriz de letras" el número de columnas puede variar para cada fila (es strlen(nombre)+1). Utilizando una única llamada a la función strcpy() es posible rellenar una fila completa de dicha matriz de caracteres. Para utilizar dicha función es necesario incluir el fichero string.h.

Practica Nº 2 Programación en C++ Pág. 4 Crea un proyecto llamado Ejer5 y el fichero nombres.cpp, donde va a escribir el siguiente código y debe completar lo que falta: // fichero nombres.cpp #include <iostream.h> #include <string.h> #include <stdio.h> void main(void) { char tmp[120]; char** pnombres; int Num; //para gets() cout << "Cuantos Nombres desea ordenar:"; cin >> Num; cin.ignore(); pnombres = new char*[num]; //Espacio para Num nombres //pedir datos for (int i=0;i<num;i++) { cout << "Escriba el nombre " << i+1 << ":" << flush; cin.getline(tmp,120); // +1 porque hay que guardar '\0' pnombres[i] = new char[strlen(tmp)+1]; // debe copiar las letras de tmp a la matriz pnombres //algoritmo de ordenación //sacar datos por consola //liberar memoria de la matriz de caracteres 1.6 Ejercicio 6: Ordenando Nombres v1.1 Este sexto y último ejercicio consiste en hacer una modificación al programa anterior para que pida cómo desea ordenar los nombres, si de forma ascendente o descendente, y luego que pida los nombres a ordenar.