universidad de costa rica facultad de ingeniería escuela de

Anuncio
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
Descargar