Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
INGENIERA
Facultad de Ingeniera Elctrica y Electrnica
Cdigo: 20162024G
2017
Primera Tarea Programacin Digital MA-713 -Q
Alumno: Vicente Horna Antonio Francisco | Cdigo:20162024G | Especialidad: L1
a) Ana lisis
Para este problema se usara el comando if (if simple), donde en el if se colocara las condiciones
para que un an o sea bisiesto, usando && y || para la unio n o interseccio n de condiciones.
Algoritmo: Tarea01
Entero: n
INICIO
Leer (n)
Sino
Fin si
Pa gina 2
c) Co digo Fuente (El co digo fue trasladado al notepad++)
#include <stdio.h>
int n;
printf("Digite el ao a analizar: ");
scanf("%d",&n);
return 0;
}
Pa gina 3
e) Comentarios
Este programa me ha servido para darme cuenta de la importancia del && y || para reducir las
lneas de co digo y evitar usar los if anidados innecesariamente.
a) Ana lisis
En este programa se tendra en cuenta los meses que tienen 31 das, los meses que tienen 30 das,
y febrero, que en este an o 2017 tuvo 28 das.
Adema s, tambie n se tendra en cuenta el ultimo da del an o, es decir el 31 de diciembre.
Algoritmo Tarea02
Enteros: d, m, a, o
INICIO
Leer (d<-da)
Leer (m<-mes)
Si (d<32 && d>0 && m<=12 && m>0) hacer
Si (m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12)
Escribir (da siguiente, mes)
Sino (m==4 || m==6 || m==9 || m==11) hacer
Escribir (da siguiente, mes)
Sino (m==2)
Escribir (da siguiente, mes) para febrero
Sino
Escribir (Los datos no son lgicos)
Fin si
#include <stdio.h>
int d,m;
int a,o;
Pa gina 4
printf("Ingrese el dia a analizar: ");
scanf("%d",&d);
printf("Ingrese el mes en el que se encuentra el dia digitado
anteriormente: ");
scanf("%d",&m);
a=d+1;
o=m+1;
if (m==1||m==3||m==5||m==7||m==8||m==10||m==12)
{
if (m<12)
{
if (d<31 && m<12)
{
printf("\nEl dia es: %d y el mes es: %d",a,m);
}
else if (d==31 && m<12)
{
printf("\nEL dia es: 1 y el mes es: %d",o);
}
}
else if (d<31 && m==12)
{
printf("\nEl dia es: %d y el mes es: %d",a,m);
}
else
{
printf("\nEs 1 de enero del 2018\nFeliz ao nuevo :D");
}
else if (m==4||m==6||m==9||m==11)
{
if (d!=31)
{
if (d<30)
{
printf("\nEl dia es: %d y el mes es: %d",a,m);
}
else
{
printf("\nEl dia es: 1 y el mes es: %d",o);
}
}
else
{
Pa gina 5
printf("\nEl dia ingresado no existe");
}
else if (m==2)
{
else
{
printf("\nLos datos ingresados no son logicos");
}
return 0;
}
Pa gina 6
e) Comentarios
En este programa se ha hecho uso del if, else if y else, para el caso de los meses que tienen 30 dias,
31 dias y febrero (de 28 dias). Tambie n se ha refinado el programa para que, por ejemplo, si
ingresamos 31 12, el programa devuelva 1 13.
Se ha puesto e nfasis a la condicio n del problema, la cual dice que solo debera n ser digitados los
dias pertenecientes al 2017.
Se ha usado con cuidado los comandos if, else if y else para cooperar con la legibilidad del co digo.
a) Ana lisis
Para este problema se usara el comando do-while, donde do le pedira al usuario que ingrese el
nu mero en el rango determinado; y while generara los bucles necesarios para encontrar las
centenas, decenas y unidades; para luego ser transformadas a notacio n romana. El switch que se
encuentra dentro del while permite generar casos para los cuales se puede escribir la notacio n
romana.
Algoritmo Tarea03
Entero: n, c=0
Pa gina 7
INICIO
Repetir
Leer (n)
Mientras (n>=1000 && n>2000)
Si (n==2000) hacer
Escribir (MM)
Sino
Escribir (M)
//Buscamos centenas
n=n-1000
Si (n>99) hacer
Repetir
n=n-100
c=c+1
Mientras (n>=100)
Segn valor (n) hacer
Valor 1
Escribir (C)
Valor 2
Escribir (CC)
Valor 3
Escribir (CCC)
..
Valor 9
Escribir (CM)
FinSegn _valor
//Buscando las decenas
c=0
Si (n>10) hacer
Repetir
n=n-10
c=c+1
Mientras (n>=10)
Segn valor (n) hacer
Valor 1
Escribir (X)
Valor 2
Escribir (XX)
Valor 3
Escribir (XXX)
..
Valor 9
Escribir (XC)
FinSegn _valor
Pa gina 8
Valor 3
Escribir (III)
..
Valor 9
Escribir (IX)
FinSegn _valor
FIN
#include <stdio.h>
else
{
// Buscando las centenas
printf("El numero digitado en numeracion romana es:M");
num=num-1000;
if (num> 99)
do
{
num = num - 100;
cont ++;
}
switch (cont)
{
case 1: printf ("C"); break;
case 2: printf ("CC"); break;
case 3: printf ("CCC"); break;
case 4: printf ("CD"); break;
case 5: printf ("D"); break;
case 6: printf ("DC"); break;
case 7: printf ("DCC"); break;
case 8: printf ("DCCC"); break;
Pa gina 9
case 9: printf ("CM"); break;
default: break;
}
// Buscando las decenas
cont = 0;
if (num > 10)
do
{
num = num - 10;
cont ++;
}
while (num >= 10);
switch (cont)
{
case 1: printf ("X"); break;
case 2: printf ("XX"); break;
case 3: printf ("XXX"); break;
case 4: printf ("XL"); break;
case 5: printf ("L"); break;
case 6: printf ("LX"); break;
case 7: printf ("LXX"); break;
case 8: printf ("LXXX"); break;
case 9: printf ("XC"); break;
default: break;
}
// Buscando las unidades
cont=0;
if (num != 0)
switch (num)
{
case 1: printf ("I"); break;
case 2: printf ("II"); break;
case 3: printf ("III"); break;
case 4: printf ("IV"); break;
case 5: printf ("V"); break;
case 6: printf ("VI"); break;
case 7: printf ("VII"); break;
case 8: printf ("VIII"); break;
case 9: printf ("IX"); break;
default: break;
}
}
printf ("\n");
return 0;
}
Pa gina 10
d) Verificacio n de la correcta compilacio n y ejecucio n del programa
e) Comentarios
Este programa me ha servido para ver que el comando do while junto con el comando switch
permiten crear condiciones para mu ltiples casos que se pueden generar en un problema.
Se creo condiciones para que el programa no tenga errores cuando el usuario digite los valores
extremos de la condicio n, es decir, 1000 y 2000.
Tambie n se puso una condicio n para que el usuario se limite solo a colocar el an o entre 1000 y
2000, es decir, el usuario no puede desobedecer la condicio n.
Pa gina 11
4) Escriba un programa que encuentre la interseccin de una lnea y un
circulo. Dada la lnea y=ax+b, y el circulo x 2+y2=r2 , las soluciones pueden ser
igual a 0, 1 o 2; dependiendo de que la lnea y el circulo no se intersecten,
sean tangentes o se intersecten en dos puntos.
a) Ana lisis
En este problema se usara un dato implcito que se usa para hallar la interseccio n de dos lugares
geome tricos, el cual es el discriminante de la ecuacio n resultante luego de reemplazar la variable
de una ecuacio n en la otra.
Si el discriminante es mayor que cero, existira dos soluciones reales y distintas, es decir, dos
intersecciones.
Si el discriminante es igual a cero, existira una solucio n real, es decir, tan solo una interseccio n, por
lo tanto, se trata de dos lugares geome tricos tangentes.
Si el discriminante es menor que cero, entonces no existe ninguna solucio n real, es decir, no existe
interseccio n entre los dos lugares geome tricos.
Algoritmo Tarea04
Reales <-a
Reales <-b
Reales <-r
Reales <-D
Reales <-d
Reales <-x1
Reales <-x2
Reales <-y1
Reales <-y2
Escribir(a)
Escribir(b)
Escribir(r)
Si D>0 Entonces
x1=(-2*a*b + d)/(2*(a*a + 1));
y1=a*x1 + b;
x2=(-2*a*b - d)/(2*(a*a + 1));
y2=a*x2 + b;
Escribir La circunferencia con la recta se cortan en 2 puntos
Escribir Los puntos son x1,y1,x2,y2
sino D=0
Pa gina 12
x1=(-2*a*b + d)/(2*(a*a + 1));
y1=a*x1 + b;
Escribir La circunferencia con la recta se cortan en 1 puntos
Escribir Los puntos son x1,y1
Sino
Escribir La circunferencia y la recta no se cortan en ningun
punto
Fin Si
#include <stdio.h>
#include <math.h>
int main(void){
float a,b;
float r,D,d;
float x1,x2,y1,y2;
printf ("Sea la recta y=ax+b");
printf ("\nDigite el valor de a: ");
scanf ("%f",&a);
printf ("Digite el valor de b: ");
scanf ("%f",&b);
printf ("Dada la ecuacion de la circunferencia: x^2 + y^2 = r^2");
printf("\nDigite el valor del radio: ");
scanf ("%f",&r);
Pa gina 13
return 0;
}
i) Comentarios
En este programa se ha vuelto a utilizar los comandos if, else if, y else; ya que el problema a mi
parecer se ha destinado a usar estos comandos.
El programa discierne de acuerdo a los valores que toma el discriminante del sistema de
ecuaciones para la interseccio n de la circunferencia y la recta.
Pa gina 14