Práctica 7c: Uso de estructuras en C.

Documentos relacionados
Práctica 7e: Uso de estructuras en C.

Práctica 8b: Estructuras y listas enlazadas.

Fundamentos de Informática. Primer Curso de Ingenieros Industriales

Práctica 3: Vectores y matrices en C.

GUIA DE LABORATORIO # 13 Arreglos unidimensionales y bidimensionales

ESTRUCTURAS. Struct Identificador_ tipo_estructura { Tipo miembro_1; /*Declaración de los miembros*/

Escuela Politécnica Superior de Elche

Punteros. Índice. 1. Qué es un puntero y por que son importantes.

Programación. Test Autoevaluación Tema 3

Examen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16

for(i = 0; i <= 45; i+=5) { x = (i*3.1416)/180; printf( seno(%d) = %f\n,i,seno(x));

Punteros. Programación en C 1

UTN FRBA Algoritmos y Estructura de Datos Examen Final 18/07/2014. Apellido y nombre: Legajo: Cursó con Prof:

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

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

Práctica 2 - Manejo de estructuras de datos y punteros

Tema 18: Memoria dinámica y su uso en C

TIPOS DE DATOS BASICOS EN LENGUAJE C

Práctica Guiada: Vectores y Matrices

Objetivo El alumno conocerá y aplicará los conceptos de arreglo y estructura en la realización de programas que resuelvan problemas de tipo numérico.

Prof. Dr. Paul Bustamante

Escuela Politécnica Superior de Elche

Codificación en C. Como pasar de Pseudocódigo a C (con pequeños trucos de C++)

PROBLEMAS DEL TEMA 8: Estructuras de Datos Complejas

PUNTEROS (Apuntadores)

Estructuras de datos: vectores en C. Clase 7 y 8 Introducción a la Computación Patricia Borensztejn

Prof. Dr. Paul Bustamante

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

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

Tipos de Arreglos. Notación Algoritmica de los Arreglos multidimensionales tipo_dato nombre[dim 1. , dim 2. ,..., dim n

Algoritmos y Programación I

Práctica 3: Realce de imágenes

Lenguaje C, tercer bloque: Funciones

Funciones y paso de parámetros

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

Informática II Vectores y Matrices

Informática I (2014-2) Taller Lenguaje C Prof. Sebastián Isaza Departamento de Ingeniería Electrónica Facultad de Ingeniería Universidad de Antioquia

Funciones Definición de función

identificador: Es el nombre que le damos a la variable matriz y por el cual la referenciaremos en nuestro programa.

Tema 6: Memoria dinámica

Introducción a la Programación en C Funciones

PROGRAMACIÓN ESTRUCTURADA

OPERADORES Y EXPRESIONES

LENGUAJE. Tema 5 Estructuras de datos

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

Objetivos. El alumno conocerá y aplicará el concepto de archivo para el almacenamiento y recuperación de datos persistentes.

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

Manipulación de archivos estructurados

Paso de Parámetros a una Función

LENGUAJE. Tema 3 Elementos de un programa II

Estructuras. //identificador del cliente

Introducción al lenguaje C

Dobles: Es el caso de la instrucción if-else (punto 1.2).

Estructuración del programa en partes más pequeñas y sencillas

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria.

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

TADs en C. Matías Bordese Algoritmos y Estructuras de Datos II - Laboratorio 2013

E s c u e l a P o l i t é c n i c a S u p e r i o r d e E l c h e

Tema 5. Entrada y Salida

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

Práctica 4: Funciones en lenguaje C/C++.

Tema 2. Tipos y Estructuras Básicas

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

Programación I Funciones

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

Tema 10: Tipos de datos definidos por el usuario

EXAMEN PROGRAMACION I FEBRERO 2007

Se guardan en archivos con extencion c y los cabezales con extension h

WHILE Y DO WHILE BREAK EN LENGUAJE C. BUCLES MIENTRAS. FORZAR SALIDA O TERMINACIÓN. EJEMPLO (CU00534F)

Programación. Ejercicios Tema 6 Tipos de Datos Estructurados: Vectores y Matrices

Tipos de datos y Operadores Básicos

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

Programación I Teoría II.

Práctica 0: Repaso de C básico

SESIÓN DE EJERCICIOS E1

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

Prácticas de Programación Resueltas: Máquinas de Turing

Tipos de Datos Estructurados

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

Ejercicios de la sesión 4 de C resueltos

ALGORITMOS Y PROGRAMACIÓN I Unidad 3

GUIÓN DE PRÁCTICAS 3: ESTRUCTURAS CONDICIONALES

INTRODUCCIÓN A LA POO EN C++

Cátedra I Informática Autor I Carlos Bartó

Arrays y Cadenas en C

TEMA 4. ESTRUCTURAS DE CONTROL

Tema 13: Apuntadores en C

EJEMPLOS DE ESTRUCTURAS EN C

Tema 16: Tipos de datos estructurados en lenguaje C

Principal material bibliográfico utilizado

Tipos de variables. Lenguaje C. Departamento de Electrónica. Tipos de datos, variables y constantes. Fundación San Valero

UNIVERSIDAD NACIONAL DE SALTA Sede Regional Orán AÑO: 2013 Carreras: TIG - TUP

EJEMPLOS DE PROGRAMACIÓN DE FUNCIONES EN C: Página 1 de 5

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

PROBLEMAS DEL TEMA 7 SUBPROGRAMAS Y MODULARIDAD

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

REPRESENTACIÓN DE DATOS

GUÍA DE LABORATORIO #3 ESTRUCTURAS ALGORÍTMICAS CONDICIONALES SIMPLES, DOBLES Y MÚLTIPLES

Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE

Transcripción:

Práctica 7c: Uso de estructuras en C. Objetivos En esta práctica el objetivo principal es el de poner en práctica los principios básicos del uso de estructuras y librerías de funciones en C. Evaluación La práctica consta de tres cuestiones, de los cuales habrá que realizar correctamente al menos una para aprobar la práctica. Procedimiento En cada cuestión se pide la definición de una función de la cual se proporciona el prototipo y una descripción de lo que debe realizar. Adicionalmente en algunas cuestiones se proporciona un programa de ejemplo con llamadas a esa función para poder comprobar el correcto funcionamiento de la misma. Entrega de la práctica a través del servidor Los resultados de todas la práctica se entregará usando el Servidor de Docencia. Para el correcto funcionamiento de las siguientes páginas su navegador debe permitir cookies y la ejecución de javascript. El servidor de docencia se encuentra situado en la siguiente dirección: http://bono.us.es/sdocencia/ La entrega de la práctica consiste en copiar el código desarrollador en cada cuestión en el cuadro de respuestas correspondiente del Servidor de Docencia. Hay que copiar el código una vez se haya comprobado el correcto funcionamiento del programa. IMPORTANTE: Cada ejercicio se debe resolver utilizando el prototipo de la función pedida. No está permitido el uso de lápices de memoria ni acceder a páginas web, en particular al correo electrónico. Está permitido crear y utilizar funciones auxiliares para resolver un ejercicio. Para poder entregar correctamente una cuestión que use funciones adicionales, hay que definir el prototipo de la función de forma local en la función que la utiliza y proporcionar su definición en la respuesta. 1

Cuestión 711 Se desea diseñar un programa que calcule la traspuesta de una matriz, cuyo número de filas y columnas tendrán un valor menor o igual que 100. Se definen los siguientes tipos de datos para realizar este programa: struct matriz float A[100][100]; int fil; int col; ; Diseñar una función que dada una estructura tipo struct matriz que contiene la matriz a la cual se quiere calcular su traspuesta, devuelva en otra estructura tipo struct matriz, la matriz resultante. Prototipo: struct matriz traspu_mat(struct matriz); #include <stdio.h> struct matriz float A[100][100]; int fil; int col; ; struct matriz traspu_mat(struct matriz); void escribe_matriz(struct matriz); main(void) struct matriz A=1,2,3,4,5,6,2,3; struct matriz R; R=traspu_mat(A); escribe_matriz(r); void escribe_matriz (struct matriz a) int i,j; for(i=0;i<a.fil;i++) printf("\n"); for(j=0;j<a.col;j++) printf("%f \t", a.a[i][j]); struct matriz traspu_mat(struct matriz a) /*************INICIO CÓDIGO DE ALUMNO*****************/ /***************FIN CÓDIGO DE ALUMNO******************/ 2

Cuestión 705 Programe una función que permita calcular la diferencia entre dos instantes de tiempo correspondientes a un mismo día. Cada instante de tiempo está expresado en horas, minutos y segundos, y se almacenan en estructuras tiempo. La diferencia se calculará entre el primer parámetro y el segundo con su signo correspondiente. struct tiempo ; Ejemplo: Si la función recibe como primer parámetro la estructura que codifica el instante 14 h 25 min 16 seg y como segundo parámetro la estructura que codifica la hora 6 h 20 min 46 seg, la función devolverá una estructura conteniendo 8 h 4 min 30 seg. Si por el contrario la función recibe como primer parámetro la estructura que codifica el instante 14 h 25 min 16 seg y como segundo parámetro la estructura que codifica la hora 14 h 30 min 46 seg, la función devolverá una estructura conteniendo 0 h - 5 min -30 seg. Prototipo struct tiempo dif(struct tiempo A, struct tiempo B); void main(void) struct tiempo A1=14,25,16, B1=6,20,46; struct tiempo A2=14,25,16, B2=14,30,46; struct tiempo A3=1,13,45, B3=8,37,03; struct tiempo A4=23,54,59, B4=6,25,8; struct tiempo R1,R2,R3,R4; R1=dif(A1,B1); R2=dif(A2,B2); R3=dif(A3,B3); R4=dif(A4,B4); seg\n",a1.hor,a1.min,a1.seg,b1.hor,b1.min,b1.seg,r1.hor,r1.min,r1.seg); seg\n",a2.hor,a2.min,a2.seg,b2.hor,b2.min,b2.seg,r2.hor,r2.min,r2.seg); seg\n",a3.hor,a3.min,a3.seg,b3.hor,b3.min,b3.seg,r3.hor,r3.min,r3.seg); seg\n",a4.hor,a4.min,a4.seg,b4.hor,b4.min,b4.seg,r4.hor,r4.min,r4.seg); 3

Cuestión 701 Se desea diseñar un programa para hacer una lista con todas las películas en DVD de un videoclub. Para almacenar toda la información de las películas (título, género, año y duración), se ha pensado en utilizar un vector de estructuras, en el que cada elemento tiene la información de una película. El número de películas del videoclub puede cambiar, pero nunca será mayor de 1000, por lo que se utilizará un vector de dimensión 1000. Se definen los siguientes tipos de datos para realizar este programa: struct dvd char titulo[100]; char genero[100]; struct tiempo duracion; ; struct tiempo ; El número de DVDs del videoclub se almacena en la variable entera numdvd. Ejemplo de lista ordenada (las más modernas al inicio): Braveheart, Drama histórico, 1995, 2h37 00 Forest Gump, Drama, 1994, 2h2 00 La lista de Schindler, Drama y suspense, 1993, 2h55 00 Diseñar una función que dada la información de una película la almacene en la lista de forma ordenada (las más modernas al inicio) según el año. La función recibe la dirección de inicio del vector de estructuras, el número de DVDs del videoclub y el título, género, año y duración de la película (en horas, minutos y segundos). Debe devolver el nuevo número de DVDs del videoclub. Si el videoclub ya tenía 1000 películas, la función debe devolver -1 para indicar que no se ha podido almacenar. La lista original se supone que está ordenada. Prototipo int nuevodvdorden(struct dvd* lista, int numdvd, char* titulo, char* genero, int anio, int hor, int min, int seg); #include <stdio.h> #include <stdlib.h> #include <string.h> struct tiempo ; struct dvd char titulo[100]; char genero[100]; struct tiempo duracion; ; int nuevodvdorden(struct dvd* lista, int numdvd, char* titulo, char* genero, int anio, int hor, int min, int seg); 4

void main(void) struct dvd lista[1000]; int numdvd = 0; char tit[100]; char gen[100]; int continua; int i; printf("nuevo dvd? 1 SI, 0 NO\n"); scanf("%d",&continua); while(continua) printf("introduzca titulo: "); scanf("%s",tit); printf("introduzca genero: "); scanf("%s",gen); printf("introduzca anio: "); scanf("%d",&anio); printf("introduzca horas: "); scanf("%d",&hor); printf("introduzca min: "); scanf("%d",&min); printf("introduzca seg: "); scanf("%d",&seg); numdvd = nuevodvdorden(lista,numdvd,tit,gen,anio,hor,min,seg); printf(" Nuevo dvd? 1 SI, 0 NO\n"); scanf("%d",&continua); printf("lista de DVDs del videoclub:\n"); for(i=0;i<numdvd;i++) printf("%-20s %-20s %-5d %dh%d'%d''\n",lista[i].titulo,lista[i].genero,lista[i].anio,lista[i].duraci on.hor,lista[i].duracion.min,lista[i].duracion.seg); Nota: Al usar scanf con el argumento %s para leer el título y el género, sólo se podran leer títulos y género que no contengan espacios. 5