Академический Документы
Профессиональный Документы
Культура Документы
Sergio Liberati
Laboratorio de procesamiento digital de se
nales
Profesor: Carlos Mejias
8 de diciembre de 2015
Resumen
En esta practica se explicaran y demostraran las metodologas necesarias para realizar operaciones como descomposicion de n
umeros enteros para distintos procesos, uso
de operadores comparativos y modelacion de Series o Sucesiones mediante procesos
Computables.
1.
Introducci
on
2.
Metodologa Empleada
A continuacion se presentaran los Algoritmos ( y explicacion matematica) empleados para la realizacion de tres experimentos: N
umeros Primos, Numeros Romanos y
Secuencia de Fibonacci.
2.1.
2.1.1.
Algoritmo de N
umeros Primos
Muestra de c
odigos
#include<s t d i o . h>
void main ( void )
{
int num [ 1 0 0 ] ;
int i , j ;
for ( i =1; i <=100; i ++)// s e c a r g a e l v e c t o r num [ 1 0 0 ] con l o s
// numeros d e l 1 a l 100
{
num [ i 1]= i ;
}
for ( i =1; i <=99; i ++){
i f (num [ i ] ! = 0 ) {
for ( j=i +1; j <=99; j ++)
{
i f ( ( num [ j ] % num [ i ])==0){
num [ j ] = 0 ;
}
}
}
}
p r i n t f ( \n Primos d e l 1 a l 100\n ) ;
for ( i =1; i <=100; i ++){
i f (num [ i 1]!=0){
p r i n t f ( %d ,num [ i 1 ] ) ;
}
}
}
2.1.2.
C
alculos Matem
aticos
2.2.
2.2.1.
Algoritmo de Conversi
on N
umeros en Base Decimal a Nomenclatura
Romana
Muestra de c
odigos
#include<s t d i o . h>
void romano ( int n ) ; // s o l o puede c a l c u l a r l o s numeros
// romanos d e l 1 a l 3999
int main ( void ){
int num ;
s c a n f ( %d ,&num ) ;
p r i n t f ( e l v a l o r de %d en romano e s ,num ) ;
i f (num==1000)
p r i n t f ( M ) ;
else
romano (num ) ;
return 0 ;
}
void romano ( int n )
{
int a , b , c , d ;
d=n / 1 0 0 0 ;
c=(n %1000)/100;
b=(n %100)/10;
a=(n %100) %10;
switch ( d ){
case 3 :
p r i n t f ( MMM ) ;
break ;
case 2 :
p r i n t f ( MM ) ;
break ;
case 1 :
p r i n t f ( M ) ;
break ;
}
switch ( c ){
case 9 :
p r i n t f ( CM ) ;
break ;
case 8 :
p r i n t f ( DCCC ) ;
break ;
case 7 :
p r i n t f ( DCC ) ;
break ;
case 6 :
p r i n t f ( DC ) ;
break ;
case 5 :
p r i n t f ( D ) ;
break ;
case 4 :
p r i n t f ( CD ) ;
break ;
case 3 :
p r i n t f ( CCC ) ;
break ;
case 2 :
p r i n t f ( CC ) ;
break ;
case 1 :
p r i n t f ( C ) ;
break ;
}
switch ( b ){
case 9 :
p r i n t f ( XC ) ;
break ;
case 8 :
p r i n t f ( LXXX ) ;
break ;
case 7 :
p r i n t f ( LXX ) ;
break ;
case 6 :
p r i n t f ( LX ) ;
break ;
case 5 :
p r i n t f ( L ) ;
break ;
case 4 :
4
p r i n t f ( XL ) ;
break ;
case 3 :
p r i n t f ( XXX ) ;
break ;
case 2 :
p r i n t f ( XX ) ;
break ;
case 1 :
p r i n t f ( X ) ;
break ;
}
switch ( a ){
case 9 :
p r i n t f ( IX ) ;
break ;
case 8 :
p r i n t f ( VIII ) ;
break ;
case 7 :
p r i n t f ( VII ) ;
break ;
case 6 :
p r i n t f ( VI ) ;
break ;
case 5 :
p r i n t f ( V ) ;
break ;
case 4 :
p r i n t f ( IV ) ;
break ;
case 3 :
p r i n t f ( IIV ) ;
break ;
case 2 :
p r i n t f ( IV ) ;
break ;
case 1 :
printf (I );
break ;
}
}
2.2.2.
C
alculos Matem
aticos
para realizar distintas operaciones. En nuestro caso, haremos pasar estas variables por
operadores switch para imprimir el valor correspondiente en nomenclatura Romana de
todas y cada una de las componentes del numero (original en base decimal).
Para ejemplificar esto podemos computar:
...
int n=1347
int a , b , c , d ;
a=n / 1 0 0 0 ;
b=(n %1000)/100;
c=(n %100)/10;
d=(n %100) %10;
...
Y obtendremos que las variables a, b, cyd corresponderan al n
umero 1347 descompuesto
(a = 1, b = 3, c = 4yd = 7), por lo tanto podremos valernos de estos valores para procesarlos posteriormente con un operador switch correctamente estructurado y
obtendremos el n
umero 1347 en Nomenclatura Romana MCCCXLVII.
2.3.
2.3.1.
i n c l u d e <s t d i o . h>
int main ( void ){
int f i b o l d =0, f i b n e w =1, t r a n s ;
p r i n t f ( 25 t e r m i n o s de F i b o n a c c i : %d %d , f i b o l d , f i b n e w ) ;
for ( int i =3; i <=25; i ++)
{
t r a n s =f i b n e w ;
f i b n e w=f i b o l d+f i b n e w ;
f i b o l d=t r a n s ;
p r i n t f ( %d , f i b n e w ) ;
}
}
2.3.2.
C
alculos Matem
aticos
se sumen y una tercera de transicion para intercambiar los valores y poder realizar la
suma recursiva perpetuamente.
3.
En el caso de los n
umeros primos, se obtuvieron efectivamente los n
umeros primos
contenidos desde el 1 hasta el numero 100, es decir, los primos desde el 1 hasta el 97.
Sin embargo este algoritmo podra emplearse de manera mas eficaz y corta, ahorrando
de esta manera el uso de memoria.
Para los n
umeros Romanos, tal como se expuso en la seccion de este experimento,
solo se pueden obtener correctamente los n
umeros romanos del 1 al 3999. Cabe destacar
que la conversion es completamente correcta en este rango (1-3999).
La Secuencia de Fibonacci fue modelada y simulada completamente seg
un la finalidad de la practica (obtener los primeros 25 terminos). aunque el algoritmo dise
nado
y empleado puede obtener el enesimo termino de la secuencia (con limitaciones de
memoria dependiendo del tipo de variable usado).
4.
Conclusiones
Se demostro que efectivamente el lenguaje C tiene una potencialidad y una fiabilidad (que va de la mano con la correcta programacion) que lo hacen sin duda, una
herramienta fundamental para modelaciones matematicas, y operaciones aritmeticas
5.
Recomendaciones
El algoritmo de los N
umeros primos se puede realizar de manera mas eficiente empleando el siguiente codigo para conseguir todos los n
umeros primos desde el 1 hasta
el enesimo numero n(introducido por el usuario).
#include<s t d i o . h>
int primo ( int n ) ;
int main ( void ){
int n ;
s c a n f ( %d ,&n ) ;
p r i n t f ( 1 2 ) ;
for ( int i =3; i<=n ; i ++)
primo ( i ) ;
}
int primo ( int n ){
int s =0;
8
6.
Referencias
https://es.wikipedia.org/w/index.php?title=Alfabeto&oldid=87003116,