con solución

Anuncio
Práctica Semana 3. Computación I
Tema: Condicionales.
1) Diga cual será el resultado de los siguientes trozos de programa:
a.
#include <stdio.h>
#define TRUE 1
#define FALSE 0 void main ( )
{
int x = 2;
int y = 3;
int a = TRUE;
if ( x != y && a) { x = x ­ 1; y = x + y ;}
else x = x*y;
printf ( “ x = %d y = %d\n”, x,y);
...
} SOLUCION. Escribirá: x = 1 y = 5
b.
#include <stdio.h>
#define TRUE 1
#define FALSE 0 void main ( )
{ …
siono = FALSE;
x = 4;
y = 6;
switch (siono) {
case TRUE: z = x; break;
case FALSE : z = y; break;
}
if z = = x printf (“ z = x \n “);
printf (“ z = %d \n “, z);
...
}
SOLUCION. Escribirá: z = 6
2) Escriba un programa para que dados dos números enteros diferentes, determine si alguno de ellos divide al otro. En caso afirmativo, debe indicar cual de ellos es el dividendo y cual es el divisor.
SOLUCION:
#include <stdio.h>
#define TRUE 1
#define FALSE 0 void main ( )
{ int n1, n2; /* Entrada */
/* Precondición: n1, n2 >= 0 y n1 != n2 */
int divide, dividendo, divisor; /* Salida*/
/* Post­condicion: (divide = TRUE = => ((n1 %n2 = 0 y dividendo=n1 y divisor=n2) o (n2%n1 = 0 y dividendo=n2 y divisor=n1) ))
y (divide = FALSE = => ( n1 %n2 != 0 y n2%n1 !=0)) */
printf(“ Introduzca dos numeros enteros:\n”);
scanf(“%d %d”, &n1, &n2);
divide = TRUE;
if n1%n2 = = 0 {dividendo = n1; divisor = n2;}
else if n2%n1 = = 0 {dividendo = n2; divisor = n1;}
else divide = FALSE;
if divide printf(“%d divide a %d \n”, divisor, dividendo)
else printf (“ ninguno de los dos es divisor del otro \n”);
}
3) Escriba un programa para calcular las raíces reales de un polinomio de segundo grado Ax2 + Bx + C, dados los coeficientes A,B,C.
SOLUCION:
#include <stdio.h>
void main ( )
{ float A,B,C; /* Entrada*/
float x1, x2; /* Salida: A*x12 + B*x1+ C = 0 y A*x22 + B*x2+ C = 0 */
int n; /* Salida: n =0  el polinomio no tiene raíces reales n= 1  el polinomio tiene una sola raíz y esta es x1
n = 2  el polinomio tiene dos raices que son x1 y x2
n= 3  todo número real es solución del polinomio */
float discriminante;
if ( A= = 0 && B= = 0 && C != 0) n = 0;
else if (A = = 0 && B != 0 ) n = 1;
else if ( A ! = 0 ) n = 2 ;
else ( A = = 0 && B = = 0 && C = = 0 ) n = 3;
switch (n) {
case 0: printf(“ el polinomio no tiene raices\n”); break;
case 1: x1 = ­C/B; printf(“La solución es:%f\n”, x1); break;
case 2: discriminante = B*B – 4*A*C
if (discriminante = = 0) {
n = 1; x1 = ­B/(2*A); printf(“La solución es:%f\n”, x1); }
else if (discriminante >0) {
}
x1 = ( ­B + sqrt (discriminante) ) / 2*A ;
x2 = ( ­B ­ sqrt (discriminante) ) / 2*A ;
printf( “ Las raices son: x1 = %f x2 = %f \n”, x1, x2); }
else {
n=0; printf(“ el polinomio no tiene raices\n”); }
break;
}
4) Escriba un programa para determinar si un año es bisiesto. Recordar que un año es bisiesto si es divisible por 4, excepto aquellos divisibles por 100 pero no por 400.
SOLUCION:
#include <stdio.h>
void main ( )
{ int year; /* Entrada */
/* Precondición: year >= 0 */
int es_bisiesto; /* Salida */
/* Post­condicion: es_bisieto = TRUE si year es bisiesto, FALSE en caso contrario */
printf(“ Introduzca el año:\n”);
scanf(“%d”, &year);
if (year % 4 = = 0 ) { es_bisiesto = !(year %100 = = 0 && year % 400 != 0)
else es_bisiesto = 0;
if es_bisiesto printf(“El año %d si es bisiesto \n”, year)
else printf(“El año %d no es bisiesto \n”, year);
}
Descargar