100 UNIVERSIDAD DE COSTA RICA FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA ELÉCTRICA PROGRAMACIÓN BAJO PLATAFORMAS ABIERTAS IE-0117 I CICLO 2012 LABORATORIO 13 INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C CHRISTIAN CHAVES BEJARANO A81740 1. Escriba un programa que solicite al usuario las coordenadas x y y de dos puntos y calcule, a partir de esta información, la pendiente y el punto de intersección con el eje y de la recta que pasa por estos puntos. Mediante el siguiente código desarrollado en lenguaje C se soluciona el problema propuesto, el código utiliza los elementos básicos del lenguaje de programación antes mencionado, como la declaración de variables, aritmética básica, operadores y expresiones introductorias, sin embargo debido a la transición de Python a C se complica un poco la presentación del presente reporte, en este espacio se presenta unicamente el código sin embargo mas adelante se muestra una ilustración que muestra la funcionabilidad de este código y del siguiente. El código se compiló en la terminal mediante GCC digitando gcc nombredelarchivo -o nombredelprograma: # include < stdio .h > // Incluye informacion de la biblioteca estandar # include < string .h > // Permite el manejo de strings // Define una funcion llamada main que devuelve un entero int main () { // Se declaran problema float float float float float float las variables iniciales todas ellas como float debido al manejo del x1 ; x2 ; y1 ; y2 ; m; b; // Printf imprime lo que se encuentra dentro del parentesis printf ( " Ingrese el primer punto x1 : " ) ; scanf ( " %f " , & x1 ) ; // Permite el ingreso de valores por parte del usuario printf ( " Ingrese el primer punto y1 : " ) ; scanf ( " %f " , & y1 ) ; // En el caso de las cadenas , no debe usarse & printf ( " Ingrese el primer punto x2 : " ) ; scanf ( " %f " , & x2 ) ; // En el caso de las cadenas , no debe usarse & printf ( " Ingrese el primer punto y2 : " ) ; scanf ( " %f " , & y2 ) ; // En el caso de las cadenas , no debe usarse & // Aritmetica de las variables necesarias para solucionar el problema m =(( y2 - y1 ) /( x2 - x1 ) ) ; // pendiente b =( y1 -( m * x1 ) ) ; // interseccion con y // Imprime el resultado printf ( " La interseccion seria %f \ n La pendiente seria %f \ n " , m , b ) ; 1 } 2. Modifique el programa anterior, de forma que el cálculo de la pendiente y la intersección sea realizada por dos funciones independientes. El código nuevamente se basa en el uso de elementos básicos del lenguaje de programación antes mencionado, como la declaración de variables, aritmética básica, operadores y expresiones introductorias, sin embargo en este caso se introduce el uso de funciones resolviendo la misma situación anterior pero con funciones: # include < stdio .h > // Incluye informacion de la biblioteca estandar # include < string .h > // Permite el manejo de strings // Define las funciones a utilizar las cuales seran llamadas mas adelante float pendiente ( float x1 , float x2 , float y1 , float y2 ) { // calcula la pendiente float m =(( y2 - y1 ) /( x2 - x1 ) ) ; return m ; } float interseccion ( float x1 , float y1 , float m ) { float b =( y1 -( m * x1 ) ) ; // calcula la interseccion return b ; } // Define una funcion llamada main que devuelve un entero int main () { float float float float float float x1 ; x2 ; y1 ; y2 ; m; b; // Printf imprime lo que se encuentra dentro del parentesis printf ( " Ingrese el primer punto x1 : " ) ; scanf ( " %f " , & x1 ) ; // Permite el ingreso de valores por parte del usuario printf ( " Ingrese el primer punto y1 : " ) ; scanf ( " %f " , & y1 ) ; // Permite el ingreso de valores por parte del usuario printf ( " Ingrese el primer punto x2 : " ) ; scanf ( " %f " , & x2 ) ; // Permite el ingreso de valores por parte del usuario printf ( " Ingrese el primer punto y2 : " ) ; scanf ( " %f " , & y2 ) ; // Permite el ingreso de valores por parte del usuario m = pendiente ( x1 , x2 , y1 , y2 ) ; b = interseccion (m , x1 , y1 ) ; printf ( " La interseccion seria %f \ n La pendiente seria %f \ n " , m , b ) ; 2 } La siguiente ilustración muestra la funcionabilidad del código presentado en el problema 1 y 2: Figura 1: Calculo de pendiente y la interseccion mediante funciones y sin ellas 3. Escriba un programa que solicite al usuario un número e imprima todos los divisores de este número e imprima todos los divisores de este número. El programa debe continuar realizando esta operación hasta que el usuario introduzca un cero. Mediante el siguiente código desarrollado en lenguaje C y el uso de operadores básicos como módulo de un número, además del uso de if and else se logra solucionar el problema indicado: # include < stdio .h > int main () { // Declara variable ’ salir ’ y le asigna un valor inicial int numero ; int i ; printf ( " Este programa calcula los divisores de un numero entero \ nIngrese un numero \ n " ) ; scanf ( " %d " , & numero ) ; // Itera mientras el valor de ’ salir ’ sea distinto de cero while ( numero != 0) { for ( i =1; i <= numero ; i ++) { if ( numero %i ==0) { printf ( " Un divisor de %d es %d \ n " , numero , i ) ; } } 3 printf ( " Si desea salir del programa escriba el digito ’0 ’ \ n de otra manera ingrese otro valor para calcular sus divisores \ n " ) ; // Lee un entero y lo guarda en ’ salir ’ scanf ( " %d " , & numero ) ; } return 0; } La siguiente figura muestra el uso del programa: Figura 2: Cálculo de los divisores de un número 4. Escriba un programa que calcule el máximo común divisor (MCD) de dos números x y y. Puede utilizar la siguiente fórmula para realizar el cálculo: ( M CD(x, y) = x si y = 0 M CD(y, xmody) si x >= yyy > 0. El presente problema se solucionó de manera recursiva basandose en el problema solucionado anteriormente, con el uso de controles de flujo como while y for se pudo hacer frente: # include < stdio .h > int main () { // Declara variable ’ salir ’ y le asigna un valor inicial int numero ; int i ; 4 printf ( " Este programa calcula los divisores de un numero entero \ nIngrese un numero \ n " ) ; scanf ( " %d " , & numero ) ; // Itera mientras el valor de ’ salir ’ sea distinto de cero while ( numero != 0) { for ( i =1; i <= numero ; i ++) { if ( numero %i ==0) { printf ( " Un divisor de %d es %d \ n " , numero , i ) ; } } printf ( " Si desea salir del programa escriba el digito ’0 ’ \ n de otra manera ingrese otro valor para calcular sus divisores \ n " ) ; // Lee un entero y lo guarda en ’ salir ’ scanf ( " %d " , & numero ) ; } return 0; } La ejecución del mismo se puede observar en la terminal mediante el comando gcc parte3.c -o prueba3, luego ejecutando mediante ./prueba3 : Figura 3: Cálculo del MCD 5