Examen de Repetición. Lenguajes de Programación

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

PROGRAMACION / Clave: 11214

Funciones y paso de parámetros

Prueba N o 1. Programación II

Apuntadores (Punteros)

funciones printf scanf

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

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

Programación. Test Autoevaluación Tema 3

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

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

Clases y Objetos. Informática II Ingeniería Electrónica

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

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

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

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

Algoritmos y Programación I

Introducción a los Computadores Arreglos en C

Escuela Politécnica Superior de Elche

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

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

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)

Lección 2 Introducción al lenguaje C

Laboratorio de Arquitectura de Redes. Asignación dinámica de memoria en lenguaje C

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

2^10 2^9 2^8 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 SUMA

FUNDAMENTOS DE PROGRAMACIÓN TALLER No. 1 Profesor: Alvaro Ospina Sanjuan

Introducción al lenguaje C

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el 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

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

Temario detallado. Conceptos generales de lenguajes y compiladores. Proceso de compilación de un programa en C++ bajo Code::Blocks

Lenguaje de programación C. Introducción

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

GUIA DE LABORATORIO # 13 Arreglos unidimensionales y bidimensionales

Tema: Arreglos de Objetos en C++.

Programación Estructurada

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

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

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

Funciones Definición de función

Tema 13: Apuntadores en C

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

ARREGLOS (ARRAYS)- MATRICES.

Tema: Funciones, Procedimientos y Recursividad en C#.

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

Tema 6: Memoria dinámica

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

Funciones Tipos de funciones y Recursividad

Escuela Politécnica Superior de Elche

<tipo> Tipo de dato de los elementos del vector

Ejercicios Tema 6. Funciones

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

Paso de Parámetros a una Función

Ejercicios sobre recursividad

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Apuntadores en C y C++

Metodología y Tecnología de la Programación

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

UNIDAD 1. Algoritmo se define como un conjunto de instrucciones que la computadora debe seguir para resolver un problema.

Resumen Lenguaje Java

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

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

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

void int int for void int int for void int int for for void int int for int int

Modulo 1 El lenguaje Java

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

GL-PCS2201-L05M FUNCIONES Y LA ESTRUCTURA DEL PROGRAMA EN LENGUAJE C

Introducción rápida a la programación (estructurada ) con C++

Lenguajes de programación LPSI EUI UPM CADENAS DE CARACTERES

Instituto Tecnológico de Celaya

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C

Tema 14: Arreglos estáticos en C

Tema: Sobrecarga de Operadores.

Taller de Listas Introducción a la Programación

OPERADORES Y EXPRESIONES

En un arreglo x de n elementos los elementos del arreglo son: El número de índices determina la dimensionalidad del arreglo.

Fundamentos y Estructuras de Programación Profesor: Gerardo M. Sarria M.

GUIA DE EJERCICIOS N 1 LENGUAJE C# Página 1 de 5. Instructor: Ing. Néstor Raúl Suarez Perpiñan

Programación En Lenguaje C

Programación Estructurada

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

Estructuras de Decisión Simples y Dobles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

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

Guía práctica de estudio 05: Diagramas de flujo

Examen Principios de Programación Febrero 2012

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

Uso avanzado de punteros

GENERACIÓN DE CÓDIGO

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

Recursión. Capítulo 4

SOLUCION EXAMEN junio 2006

ANEXO XVII DE LA RESOLUCION N

Transcripción:

Examen de Repetición. Lenguajes de Programación 23 de Julio del 2002-2 horas Pregunta 1 (20 puntos) Escriba una función que dada la medida de un ángulo expresada en radianes, permita obtener su equivalente en grados, minutos y segundos. Por ejemplo, si la entrada de su función fuera 1, ella debe imprimir en pantalla: 1 radian equivale a 57 grados, 17 minutos y 44 segundos. Nota: 2π radianes = 360 grados. 1 grado = 60 minutos. 1 minuto = 60 segundos. 5 puntos por definicion de funcion y tipos de datos 5 puntos por sintaxis e impresion CORRECTA del resultado 10 puntos por calculos correctos, dividido en: 2 puntos por los grados 3 puntos por los minutos 5 puntos por los segundos void funcion(float radianes) /* ojo con la entrada y la salida */ int grados, minutos, segundos; /* ENTEROS, NO FLOAT */ float A; A = (radianes * 360) / (2 * 3.141592654); grados = (int) A; /* Parte entera de A */ A = A - grados; minutos = (int) A*60; /* Parte entera */ segundos = (int) (A*60 - minutos)*60; /* Parte entera */ /* Cuidado con lo que se imprime */ printf ("%f radian equivale a %d grados, %d minutos y %d segundos.\n", radianes, grados, minutos, segundos); }

Pregunta 2 (30 puntos) Escriba la función char *concatena(char *s1, char *s2) que retorna una frase formada por s1 seguida de s2. Por ejemplo: char *retorno; retorno = concatena("me voy","pero volvere"); printf (retorno); Imprime en pantalla la frase me voypero volvere NO PUEDE UTILIZAR LA FUNCION strcat. DEBE utilizar asignación dinámica de memoria para retornar el arreglo concatenado y no debe ocupar más memoria que la necesaria. Recuerde que la función char *malloc(int n) reserva n bytes de memoria y se los asigna a un puntero. 10 puntos por determinar el tama~no del arreglo a retornar 5 puntos por pedir la memoria de ESE tama~no (+- 1) (0 puntos si es de otro) 5 puntos por copiar la primera frase sin el caracter nulo (3 con) donde corresponde. 10 puntos por copiar la segunda frase CON el caracter nulo (7 sin) donde corresponde. char *concatena(char *s1, char *s2) int n,m,i,j; char *r; j=0; n=strlen(s1); m=strlen(s2); /* Pido sólo la memoria necesaria */ r = malloc (n+m+1); /* +1 por la marca de fin de string */ /* Copio el primero */ for (i=0; i<n; i++) r[j++] = s1[i]; /* Copio el segundo */ for (i=0; i<m; i++) r[j++] = s2[i]; /* Marco el fin y retorno */ r[j] = 0; return r;

Pregunta 3 (30 puntos) La empresa MultiGameSoft4U quiere revolucionar el mercado con su versión del Gato para PC. El lanzamiento es a las 20 horas del 23 de Julio (hora de Chile continental). El alter ego de ella: EntertainmentCompu, ha hecho uso del espionaje informático y borró deliberadamente una parte importante del juego. Desesperados, la empresa recurrió a el cuerpo docente del curso Lenguajes de Programación, quienes confiando plenamente en sus alumnos aceptaron la propuesta de realizar el módulo faltante: Lo que falta es la función int gato(int M[][]) que recibe la matriz M de 3x3 en que cada casilla tiene un 1 si hay una X y un 0 si hay un 0. La función retorna 1 si ganó X, 0 si ganó 0 y -1 si hubo empate. Su misión es implementar la función gato. Nota: Hay un ganador en el gato si hay 3 X o 3 0 alineados horizontal, vertical o diagonalmente. 15 puntos por chequeo vertical y horizontal (5 y 10 o 10 y 5, dependiendo cual primero porque son análogos) 10 puntos por chequeo diagonal (5 puntos por cada una). 5 puntos por retornar al ganador o empate (sólo 3 si no da empate). Este problema puede resolverse de muchas formas, la siguiente aprovecha que los valores son 1 y 0, por lo tanto si la fila, la columna o la diagonal suma 0 o 3 hay un ganador. int gato(int M[][]) int suma,i; /* Chequeo horizontal */ for (i=0; i<3; i++) suma = M[i][0]+M[i][1]+M[i][2];

/* Chequeo vertical (es análogo, ven?) */ for (i=0; i<3; i++) suma = M[0][i]+M[1][i]+M[2][i]; /* Chequeo diagonal */ suma = M[0][0]+M[1][1]+M[2][2]; /* Chequeo la otra diagonal */ suma = M[0][2]+M[1][1]+M[2][0]; /* Si llego hasta acá, es porque no hubo ganador */ return -1; } Pregunta 4 (20 puntos) Implemente la función recursiva int ordenado(int V[],int n) que, dado un vector V R n retorne 1 si el vector está ordenado de menor a mayor y 0 en caso contrario. 5 puntos por caso base 15 puntos por recursion

Un vector está ordenado de menor a mayor sí y sólo sí todo subvector de él está ordenado de menor a mayor; en particular si tomamos pares de ellos. Para demostrar que está ordenado, trataremos de demostrar que: NO está ordenado. int ordenado(int V[], int n) /* Casos base */ if (n == 1) return 1; /* un número siempre esta ordenado */ /* Si no se cumple la condición no debemos seguir llamando a la recursión (5 puntos de 15) */ if (V[n-2] > V[n-1]) return 0; /* Si se cumple, debemos seguir llamandola (ojo como se llama) */ return ordenado(v,n-1); /* 5 puntos por el retorno 5 puntos por el correcto paso de parametros */