Examen "teórico" mayo Duración: 1 hora 30 minutos.

Documentos relacionados
Listas. Rafael Palacios May/2005

EJEMPLOS DE ESTRUCTURAS EN C

GUÍA DE LABORATORIO #11 DECLARACIÓN DE TIPOS PROPIOS EN C

Fundamentos de Informática 1ºIIND Examen Junio 2006

1000+(4/100)*1000 =1000 * (1+4/100) =1000 * 1.04 = Al finalizar el segundo año, el 4% se aplica sobre los 1040, y obtenemos:

Objetivos. El alumno conocerá y aplicará el concepto de apuntador para la realización de programas de manejo eficiente de memoria.

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

Apuntadores y Memoria dinámica. Apuntadores. M.C. Yolanda Moyao Martínez

GUIA DE LABORATORIO # 13 Arreglos unidimensionales y bidimensionales

Primera Parte: Preguntas Cortas. Fundamentos de Informática 1ºIIND Examen Teoría Septiembre Grupo: A B C D E. Advertencias:

PROYECTO INTEGRADOR DE MATEMATICAS DISCRETAS REPORTE DE PROYECTO (CALENDARIO)

#include<stdio.h> #include<conio.h> #include<stdlib.h> #include<iostream> using namespace std; main() int num, intentos, i; string password;

ANEXO I. Implementación en C++ del algoritmo del árbol de búsqueda de estados

ARREGLOS, PUNTEROS Y ASIGNACIÓN DINÁMICA DE MEMORIA

Bucles anidados. M.Sc. Ana María Salgado G. UNAN - LEON 24/04/2012

Titulo: Calculo de PI

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México

Documento didáctico del Examen Final 30 Jul 2009

Programación I Teoría III.

Fundamentos de Informática 1º IIND

Cálculo del histograma de una imagen

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.

En el siguiente ejemplo se declara un registro y luego variables de ese tipo de registro:

Punteros. Programación en C 1

Tema 6: Memoria dinámica

Ejercicios sobre Descomposición Funcional, Parte II. tcomplejo SumarComplejos(tcomplejo, tcomplejo); que sume dos números complejos.

BUCLES ANIDADOS EN LENGUAJE C

Funciones y paso de parámetros

PROGRAMA. /**************************************************************************

Informática. Prueba de conjunto (0.25 puntos) Considerar el siguiente fragmento de código:

LISTAS ENLAZADAS FUNDAMENTOS TEORICOS

NUMERO 1 Y 2. printf("********************************************************\n"); printf("* Dr.Manuel Gamio *\n");

Formatos para prácticas de laboratorio

EXAMEN OPOSICIONES SECUNDARIA INFORMÁTICA-VALENCIA JUNIO 2005

Introducción general al Lenguaje C (2010/2011)

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

UNIDAD 4 ESTRUCTURAS Y UNIONES

Lenguaje C Funciones. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Unidad IV Arreglos y estructuras. M.C. Juan Carlos Olivares Rojas

Auxiliar 1 - CC31A Programación de software sistema

Tipos de Datos Abstractos

Laboratorio 5 Tema 7. Tipos de Datos Estructurados: Arreglos, Registros y Archivos

Examen Programación para Sistemas. Grado en Ingeniería Informática (2009)

Elementos de un programa en C

1. Cuestiones. Ejercicios resueltos de C. Diego Rodríguez-Losada 1. //a) #include <stdio.h> main( ) { int x = 0, y = 0; //b) #include <stdio.

PROGRAMACIÓN PRÁCTICA AUTOR: JUAN LUIS ARELLANO ESCAMILLA

EXAMEN PROGRAMACION I FEBRERO 2007

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

UNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS

domingo, 24 de agosto de :28 a.m.

FUNDAMENTOS DE PROGRAMACIÓN Profesor Alejandro Cortés Pérez Turno matutino

Examen de Programación I

Escuela Politécnica Superior de Elche

Unidad 3. Estructuras simples de datos. Tema 1. Cadenas de caracteres

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

FUNDAMENTOS DE PROGRAMACIÓN Curso: 2012/13

INTRODUCCIÓN AL LENGUAJE C

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas.

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

Fundamentos de Informática 1º IIND

Listas. Programación en C LISTAS. Prof. Álvaro Sánchez Miralles. Programación en C. Listas. Objetivos

Estructura de Datos Tema 2. Colas. Contenido

Lenguaje de Programación: C++ ARCHIVOS I/O

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

Fundamentos de Informática

GWBASIC Ventana Principal

Estructuras en C. ESTRUCTURAS EN C: Veamos primero un ejemplo de un programa que declara y usa estructura para representar a un cliente.

Fundamentos de Informática. Primer Curso de Ingenieros Industriales

[SENTENCIAS DE CONTROL FOR Y WHILE

FUNDAMENTOS DE PROGRAMACIÓN

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

Estructuras de Datos Dinámicas

EXAMEN DEPARTAMENTAL DE PROGRAMACIÓN MUESTRA FIN TECATE UABC

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

ARREGLOS INTRODUCCIÓN

Programación. Test Autoevaluación Tema 3

Una clave Definición informal La clave debe contener una secuencia de una o más letras seguidas por uno o más dígitos

FUNDAMENTOS PARA LA CONSTRUCCIÓN DEL CÓDIGO A PARTIR DEL ALGORITMO

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

UNIVERSIDAD BANCARIA DE MEXICO CONSTANCIA UNIDAD Y TRABAJO Guadalupe Godínez Maldonado Prof. Juan Carlos Martínez

Bloque 5. Tipos de datos compuestos estáticos: arrays, strings y structs

1. Que rellene un array con los 100 primeros números enteros y los muestre en pantalla en orden ascendente.

ESTRUCTURAS DINÁMICAS DE DATOS (COLAS) EN C

8 de Junio 2005 UNIVERSITAT DE VALÈNCIA

Clase 19/02/2013. Bibliografía recomendada. #include <stdio.h> void main() { printf("hola mundo\n"); } ENLAZADOR

PRÁCTICA. Examen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Junio de er Curso de I.T. Informática de Sistemas.

Clases 04 y 05: Repaso de programación de sistemas basados en UNIX

PROGRAMACIÓN ESTRUCTURADA

/**********************Prototipos de ciones************************/ TOKEN scanner(); int columna(int c);

Práctico 2: Funciones y Punteros en C La teoría general para este práctico puede consultarse en los Capítulos 4 y 5 Notas de Clase

-. A lo que le sigue es poner la función Loop, su función es llamar todas las funciones fundamentales y hacer una refresh de pantalla

Lenguaje de programación

Introducción a la Programación en C Funciones

TEMA 8. Ficheros. 1. Introducción

ESTRUCTURAS DINÁMICAS DE DATOS (PILAS)

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

Una lista de operadores que pueden o no sobrecargarse es la siguiente: Operadores que pueden sobrecargarse

Transcripción:

Examen "teórico" mayo 2013. Duración: 1 hora 30 minutos. 1

2

3

4

5

Solución problema 1 (con la función ContarCorrectos): #include<stdio.h> #include<stdlib.h> typedef struct int d1; int d2; int d3; int d4; int decimal; T_MAYA; int ContarCorrectos(); void RellenarVector( T_MAYA vrelleno[], T_MAYA *pequenyo); int main(void) int correctos; T_MAYA *v_maya_correctos; T_MAYA pequenyo; correctos=contarcorrectos(); printf("hay %d cuartetos correctos ",correctos); v_maya_correctos=(t_maya*)calloc(correctos, sizeof(t_maya)); if(v_maya_correctos==null) printf("error al asignar memoria dinamica"); else RellenarVector(v_maya_correctos,&pequenyo); printf("el menor numero maya encontrado es %d y se corresponde con %d %d %d %d ", pequenyo.decimal, pequenyo.d1, pequenyo.d2, pequenyo.d3, pequenyo.d4); free(v_maya_correctos); int ContarCorrectos() FILE *pfichero; T_MAYA auxiliar; int leidos; int contador=0; pfichero=fopen("mayas.txt","r"); if(pfichero==null) printf("error al abrir el archivo"); else leidos=fscanf(pfichero,"%d%d%d%d",&auxiliar.d1,&auxiliar.d2,&auxiliar.d3,&auxiliar.d4); while(leidos==4) if((auxiliar.d1<20&&auxiliar.d1>=0)&&(auxiliar.d2<20&&auxil iar.d2>=0)&&(auxiliar.d3<20&&auxiliar.d3>=0)&&(auxiliar.d4<20&&a uxiliar.d4>=0)) 6

contador+=1; leidos=fscanf(pfichero,"%d%d%d%d",&auxiliar.d1,&auxiliar.d2,&auxiliar.d3,&auxiliar.d4); fclose(pfichero); return contador; void RellenarVector( T_MAYA vrelleno[], T_MAYA *pequenyo) FILE *pfichero; T_MAYA auxiliar; int pequenyo_auxiliar=200000; //valor muy grande int leidos; int contador=0; pfichero=fopen("mayas.txt","r"); if(pfichero==null) printf("error al abrir el archivo"); else leidos=fscanf(pfichero,"%d%d%d%d",&auxiliar.d1,&auxiliar.d2,&auxiliar.d3,&auxiliar.d4); while(leidos==4) if((auxiliar.d1<20&&auxiliar.d1>=0)&&(auxiliar.d2<20&&auxil iar.d2>=0)&&(auxiliar.d3<20&&auxiliar.d3>=0)&&(auxiliar.d4<20&&a uxiliar.d4>=0)) vrelleno[contador].d1=auxiliar.d1; vrelleno[contador].d2=auxiliar.d2; vrelleno[contador].d3=auxiliar.d3; vrelleno[contador].d4=auxiliar.d4; vrelleno[contador].decimal=auxiliar.d1+auxiliar.d2*20+auxil iar.d3*20*20+auxiliar.d4*20*20*20; if(vrelleno[contador].decimal<pequenyo_auxiliar) (*pequenyo).d1=vrelleno[contador].d1; (*pequenyo).d2=vrelleno[contador].d2; (*pequenyo).d3=vrelleno[contador].d3; (*pequenyo).d4=vrelleno[contador].d4; (*pequenyo).decimal=vrelleno[contador].decimal; 7

pequenyo_auxiliar=(*pequenyo).decimal; contador+=1; leidos=fscanf(pfichero,"%d%d%d%d",&auxiliar.d1,&auxiliar.d2,&auxiliar.d3,&auxiliar.d4); fclose(pfichero); 8

Solución problema 2 (el main está vacío): #include<stdio.h> #define PI 3.1415926535 int SuprimirFila(float vt[][2], int n, int fila); int Recalibrar(float vt[][2], int n, float r_nom, float s, float porc, float *pr, int *pnuevo_n); int main(void) int SuprimirFila(float vt[][2], int n, int fila) float vaux[n-1][2]; //para copiar el resto de filas int i,j; for(i=0;i<fila;i++) for(j=0;j<2;j++) vaux[i][j]=vt[i][j];//copiamos las filas anteriores for(i=fila+1;i<n;i++) for(j=0;j<2;j++) vaux[i-1][j]=vt[i][j];//copiamos las filas siguientes for(i=0;i<n-1;i++) for(j=0;j<2;j++) vt[i][j]=vaux[i][j];//reescribimos la matriz original //la ultima fila de la matriz original se queda como //estaba return n-1; int Recalibrar(float vt[][2], int n, float r_nom, float s, float porc, float *pr, int *pnuevo_n) int i,j; int filas_suprimidas=0; int nuevas_filas; float s_med=0; float nv; float r; float porcentaje_error; int error; for(i=n-1;i>=0;i--) 9

//el for va de la ultima fila a la primera //si se hace desde la primera a la ultima el codigo //no funcionaria bien con la funcion SuprimirFila() //que hemos definido antes if(vt[i][1]*vt[i][2]<s) nuevas_filas=suprimirfila(vt,nfilas_suprimidas,i); filas_suprimidas+=1; for(i=0;i<nuevas_filas;i++) s_med+=vt[i][1]*vt[i][2]; s_med=s_med/nuevas_filas; nv=s_med/(2*pi*r_nom); r=s/(nv*2*pi); porcentaje_error=100*(r_nom-r)/r_nom; if(porcentaje_error>porc) error=1; else error=0; *pr=r; *pnuevo_n=nuevas_filas; return error; 10

Solución problema 3 (habría que llamar a las funciones en el main): #include<stdio.h> #include<string.h> typedef struct char nombre_mes[12]; int dias_mes[5][7]; int n_dias; T_MES; void Dia_Semana(int indice_dia, char nombre_dia_semana[]); void Buscar_Dia_Semana(T_MES meses[], char mes[], int dia, char dia_sem[], char dia_mes_sig[]); int main(void) char nombre[30]; int dia; printf("introduzca el nombre del mes "); fgets(nombre,30,stdin); printf("introduzca el dia del mes "); scanf("%d",&dia); fflush(stdin); void Dia_Semana(int indice_dia, char nombre_dia_semana[]) if(indice_dia==0) strcpy(nombre_dia_semana,"lunes"); if(indice_dia==1) strcpy(nombre_dia_semana,"martes"); if(indice_dia==2) strcpy(nombre_dia_semana,"miercoles"); if(indice_dia==3) strcpy(nombre_dia_semana,"jueves"); if(indice_dia==4) strcpy(nombre_dia_semana,"viernes"); if(indice_dia==5) strcpy(nombre_dia_semana,"sabado"); if(indice_dia==6) strcpy(nombre_dia_semana,"domingo"); void Buscar_Dia_Semana(T_MES meses[], char mes[], int dia, char dia_sem[], char dia_mes_sig[]) int i,j; int numero_mes; int posicion_dia_mes; int posicion_dia_mes_siguiente; for(i=0;i<12;i++) if(strcmp(mes,meses[i].nombre_mes)==0) numero_mes=i; 11

for(i=0;i<5;i++) for(j=0;j<7;j++) if(meses[numero_mes].dias_mes[i][j]==dia) posicion_dia_mes=j; //el indice j nos dice que dia es Dia_Semana(posicion_dia_mes, dia_sem); for(i=3;i<5;i++)//bastaria con recorrer la ultima semana for(j=0;j<7;j++) if(meses[numero_mes].dias_mes[i][j]==0) posicion_dia_mes_siguiente=j; i=5; j=8; Dia_Semana(posicion_dia_mes_siguiente, dia_mes_sig); 12