En el siguiente enlace podrá encontrar el día de semana al que pertenece una fecha en particular, es deciar, si ingresa 16 de noviembre del 2012 devuelve: Viernes
//Basado en Wikipedia
Proceso DeterminaDiaSemana
Definir anio como entero;
Definir mes como entero;
Definir dia Como Entero;
Definir dias como cadena;
Definir w como entero;
Definir c como entero;
Definir dmc como entero;
Definir a como entero;
Definir b como entero;
Definir d como entero;
Definir a1 como entero;
Definir dm como entero;
Definir dml como entero;
Dimension dml[13];
Dimension dm[13];
Dimension dias[7];
Escribir "Ingrese el dia (1-31): ";
Leer dia;
Escribir "Ingrese mes (1-12): ";
Leer mes;
Escribir "Ingrese año: ";
Leer anio;
dm[1] <- 0;
dm[2] <- 3;
dm[3] <- 3;
dm[4] <- 6;
dm[5] <- 1;
dm[6] <- 4;
dm[7] <- 6;
dm[8] <- 2;
dm[9] <- 5;
dm[10] <- 0;
dm[11] <- 3;
dm[12] <- 5;
dml[1] <- 0;
dml[2] <- 3;
dml[3] <- 4;
dml[4] <- 0;
dml[5] <- 2;
dml[6] <- 5;
dml[7] <- 0;
dml[8] <- 3;
dml[9] <- 6;
dml[10] <- 1;
dml[11] <- 4;
dml[12] <- 6;
Si ((anio % 400 = 0)) | ((anio % 4 = 0) & (anio % 100 > 0)) Entonces
dmc <- dml[mes];
Sino
dmc <- dm[mes];
FinSi
mes <- mes -1;
a1 <- anio - 1;
a <- trunc((a1)/100);
b <- trunc(3*(a+1)/4);
c <- trunc ((a1)/4);
d <-(c-b)%7;
dias[0] <- "Domingo";
dias[1] <- "Lunes";
dias[2] <- "Martes";
dias[3] <- "Miercoles";
dias[4] <- "Jueves";
dias[5] <- "Viernes";
dias[6] <- "Sabado";
w <- (a1%7 + d%7 + dia%7 + dmc%7 )%7;
Escribir "La fecha indicada es del dia ",dias[w];
FinProceso
ADVERTENCIA: LOS SIGUIENTES ALGORITMO SE ENTREGA "COMO SON" ("AS IS") SiN GARANTIA DE NINGUN TIPO. DEBE REALIZAR LAS VERIFICACIONES CORRESPONDIENTES ANTES DE EMPLEARLOS PARA CUALQUIER FIN. SOLO TIENEN UNA FINALIDAD EDUCATIVA.
Mostrando entradas con la etiqueta ejemplo de algoritmo. Mostrar todas las entradas
Mostrando entradas con la etiqueta ejemplo de algoritmo. Mostrar todas las entradas
viernes, 16 de noviembre de 2012
miércoles, 14 de noviembre de 2012
Ejemplo de Algoritmo en PseInt que realiza la conversión del sistema de numeración decimal al sistema de numeración Maya
Los Mayas fueron una civilización avanzada de Latinoamérica que desarrollaron la ciencia en grandes dimensiones, fueron realmente avanzados, siendo muy conocidos por su calendario. Pero además de la astronomía también desarrollaron la matemática y parte de ella es su sistema de numeración.
Proceso NumeracionMaya
Definir n como entero;
Definir nm como entero;
Definir i como entero;
Definir len como entero;
Definir tmp como entero;
Dimension nm[1000];
Escribir "Ingrese el numero en decimal";
Leer n;
i <- 0;
Mientras n > 0 Hacer
nm[i] <- n % 20;
n <- n - nm[i];
n <- n / 20;
i <- i+1;
FinMientras
len <- i;
Para i<- len -1 Hasta 0 Con Paso -1 Hacer
Si nm [i] = 0 Entonces
Escribir "caracol";
Sino
Mientras nm[i] > 0 Hacer
tmp <- nm[i]%5;
nm[i] <- nm[i] - tmp;
Si tmp = 0 Entonces
nm[i] <- nm[i] - 5;
FinSi
Segun tmp Hacer
0:
Escribir "-----";
1:
Escribir " . ";
2:
Escribir " . . ";
3:
Escribir ". . .";
4:
Escribir "....";
FinSegun
FinMientras
FinSi
Escribir " ";
FinPara
FinProceso
Este es un sistema posicional de base 20, es decir, emplea 20 símbolos, siendo una característica llamativa que estos símbolos tienen a su vez una regla de composición de base cinco y aún más interesante el empleo del cero, lo cual demuestra su gran inteligencia.
Estos eran
0
se representaba con un caracol
1 .
2 ..
3 ...
4 ....
5 ----
6
.
----
Además se escribían de arriba a abajo y no como sotros que lo hacemos de izquierda a derecha.
Proceso NumeracionMaya
Definir n como entero;
Definir nm como entero;
Definir i como entero;
Definir len como entero;
Definir tmp como entero;
Dimension nm[1000];
Escribir "Ingrese el numero en decimal";
Leer n;
i <- 0;
Mientras n > 0 Hacer
nm[i] <- n % 20;
n <- n - nm[i];
n <- n / 20;
i <- i+1;
FinMientras
len <- i;
Para i<- len -1 Hasta 0 Con Paso -1 Hacer
Si nm [i] = 0 Entonces
Escribir "caracol";
Sino
Mientras nm[i] > 0 Hacer
tmp <- nm[i]%5;
nm[i] <- nm[i] - tmp;
Si tmp = 0 Entonces
nm[i] <- nm[i] - 5;
FinSi
Segun tmp Hacer
0:
Escribir "-----";
1:
Escribir " . ";
2:
Escribir " . . ";
3:
Escribir ". . .";
4:
Escribir "....";
FinSegun
FinMientras
FinSi
Escribir " ";
FinPara
FinProceso
Ejempo del Algoritmo Extendido de Euclides
Si tenemos una ecuación diofántica de primer grado tal que su expresión es de la forma a*x + b*y = MCD (a,b) el Algoritmo Extendido nos permite calcular los valores de las incognitas x e y. A coantinuación se presenta dicho algoritmo en PseInt:
Proceso AlgoritmoExtendidoEuclides
Definir a como entero;
Definir b como entero;
Definir x como entero;
Definir y como entero;
Definir ux Como Entero;;
Definir uy como entero;
Definir cociente como entero;
Definir tmp como entero;
Definir tmpa como entero;
Definir tmpb como entero;
Definir continuar como Logico;
Definir expresion como cadena;
Escribir "De la expresion a*x + b*c = MCD (a,b)";
Escribir "Ingrese a:";
Leer a;
Escribir "Ingrese b:";
Leer b;
tmpa <-a;
tmpb <-b;
x <- 0;
ux <- 1;
y <- 1;
uy <- 0;
continuar <- verdadero;
Mientras continuar Hacer
cociente <- TRUNC (a/b);
tmp <- a;
a <- b;
b <- tmp % b;
tmp <- x;
x <- ux - cociente*x;
ux <- tmp;
tmp <- y;
y <- uy - cociente*y;
uy <- tmp;
Si b = 0 Entonces
continuar <- falso;
FinSi
FinMientras
Escribir ux,"x",tmpa,"+",uy,"x",tmpb,"=",a;
FinProceso
Basado en Wikipedia
Ejemplo de Algoritmo alternativo al de Euclides que calcula el MCD con operaciones binarias
El algoritmo de Euclides permite el calculo del Máximo Común Divisor. Sin embargo, este requiere de que la realización de divisiones, por eso existe el siguiente algoritmo que permite tal calculo sin que se tenga que efectuar tal operación.
Proceso AlgoritmoEuclidesBinario
Definir u como entero;
Definir v como entero;
Definir desplazamiento Como Entero;
Definir continuar como logico;
Definir temporal como entero;
Definir MCD como entero;
Escribir "Ingrese uno de los numeros de los que calculara el MCD: ";
Leer u;
Escribir "Ingrese uno de los numeros de los que calculara el MCD: ";
Leer v;
desplazamiento <- 1;
Mientras ((u %2 = 0) & (v % 2 = 0)) Hacer
u <- u /2;
v <- v /2;
desplazamiento <- desplazamiento*2;
FinMientras
continuar <- verdadero;
Mientras u % 2 = 0 Hacer
u <- u / 2;
FinMientras
Mientras continuar Hacer
Mientras v % 2 = 0 Hacer
v <- v / 2;
FinMientras
Si u > v Entonces
temporal <- u;
u <- v;
v <- temporal;
FinSi
v <- v - u;
Si v = 0 Entonces
continuar <- falso;
FinSi
FinMientras
MCD <- desplazamiento*u;
Escribir "El MCD es :",MCD;
FinProceso
Basado en la Wikipeda
martes, 13 de noviembre de 2012
Ejemplo de algoritmo que determina si un numero es primo y lo demuestra
Proceso EsPrimo
Definir n como entero;
Definir suma como entero;
Definir numero_actual como entero;
Definir primo como entero;
Definir rt como real;
Definir div como entero;
Definir cantidad_primos como entero;
Definir divisor como entero;
Escribir "Ingrese el numero: ";
Leer numero_actual;
primo <- 1;
rt <- raiz (numero_actual);
//Si el numero_actual es primo debe tener un divisor menor que su raíz
Para div<- 2 Hasta rt Con Paso 1 Hacer
//Un numero primo solo es divible entre el y 1 por ello si div divide al numero_actual entonces no es primo
Si numero_actual % div = 0 Entonces
primo <- 0;
divisor <- div;
div <- numero_actual;
FinSi
FinPara
Si primo = 1 Entonces
Escribir "El número ",numero_actual," es primo";
Sino
Escribir "El número no es primo porque ",divisor," lo divide";
FinSi
FinProceso
Ejemplo de Algoritmo que calcula la suma de los n primero cuadrados
Proceso SumaNCuadrados
Definir n como entero;
Definir prod como entero;
Definir i como entero;
Escribir "Ingrese la cantidad de numeros: ";
Leer n;
prod <- 0;
Para i<-1 Hasta n Con Paso 1 Hacer
prod <- prod + i*i;
FinPara
Escribir "La suma del cuadrado de los ",n," primeros numeros positivos es: ",prod;
FinProceso
Ejemplo de algoritmo que efectua el Calculo del Promedio po rCategoria
Proceso CalculoPromedioPorCategoria
Definir categorias como entero;
Definir cantidad_elementos como entero;
Definir cantidad_categorias como entero;
Definir promedio como real;
Definir elemnto como real;
Definir nombre_categoria como cadena;
Definir i como entero;
Definir j como entero;
Escribir "Introduzca cantidad de elementos por categoria";
Leer cantidad_elementos;
Escribir "Ingrese la cantidad de categorias";
Leer cantidad_categorias;
Dimension promedio [cantidad_categorias];
Dimension nombre_categoria[cantidad_categorias];
Dimension categorias[cantidad_categorias,cantidad_elementos];
//El promedio de la categoria es la suma de sus elementos dividido enter su cantidad
//El Por ello hacemos un Para en el que recorremos a lo elemento de la categoria
//Adicionalmente realizamos un ciclo en ek que recorremos las categorias ya que el ciclo anteior es por ca categoria
Para i<- 1 Hasta cantidad_categorias Con Paso 1 Hacer //Hacemos un ciclo para recorrer las categorias
promedio[i-1] <- 0;
Escribir "Ingrese nombre categoria";
Leer nombre_categoria[i-1];
//En este ciclo vamos sumando en la variable promedio los elementos que vamos recibiendo de la categoria
Para j<- 1 Hasta cantidad_elementos Con Paso 1 Hacer
Escribir "Ingrese valor del elemento ",j," para la categoria ",nombre_categoria[i-1];
Leer elemnto;
promedio[i-1] <- promedio[i-1] + elemnto;
FinPara
//Calculamos el promedio de la categoria dividiendo su suma almacenada temporalmente en prompedio entre la cantidad de elementos
promedio[i-1] <- promedio[i-1]/cantidad_elementos;
FinPara
//Mostramso los promedios
Para i<- 1 Hasta cantidad_categorias Con Paso 1 Hacer
Escribir "El promedio de la categoria ",nombre_categoria[i-1]," es: ",promedio[i-1];
FinPara
//Fin
FinProceso
Definir categorias como entero;
Definir cantidad_elementos como entero;
Definir cantidad_categorias como entero;
Definir promedio como real;
Definir elemnto como real;
Definir nombre_categoria como cadena;
Definir i como entero;
Definir j como entero;
Escribir "Introduzca cantidad de elementos por categoria";
Leer cantidad_elementos;
Escribir "Ingrese la cantidad de categorias";
Leer cantidad_categorias;
Dimension promedio [cantidad_categorias];
Dimension nombre_categoria[cantidad_categorias];
Dimension categorias[cantidad_categorias,cantidad_elementos];
//El promedio de la categoria es la suma de sus elementos dividido enter su cantidad
//El Por ello hacemos un Para en el que recorremos a lo elemento de la categoria
//Adicionalmente realizamos un ciclo en ek que recorremos las categorias ya que el ciclo anteior es por ca categoria
Para i<- 1 Hasta cantidad_categorias Con Paso 1 Hacer //Hacemos un ciclo para recorrer las categorias
promedio[i-1] <- 0;
Escribir "Ingrese nombre categoria";
Leer nombre_categoria[i-1];
//En este ciclo vamos sumando en la variable promedio los elementos que vamos recibiendo de la categoria
Para j<- 1 Hasta cantidad_elementos Con Paso 1 Hacer
Escribir "Ingrese valor del elemento ",j," para la categoria ",nombre_categoria[i-1];
Leer elemnto;
promedio[i-1] <- promedio[i-1] + elemnto;
FinPara
//Calculamos el promedio de la categoria dividiendo su suma almacenada temporalmente en prompedio entre la cantidad de elementos
promedio[i-1] <- promedio[i-1]/cantidad_elementos;
FinPara
//Mostramso los promedios
Para i<- 1 Hasta cantidad_categorias Con Paso 1 Hacer
Escribir "El promedio de la categoria ",nombre_categoria[i-1]," es: ",promedio[i-1];
FinPara
//Fin
FinProceso
viernes, 9 de noviembre de 2012
Ejemplo de algoritmo en PseInt para la revisión de la validez del ISBN-13
Proceso checkISBN
Definir ISBN como cadena;
Definir multiplicando como entero;
Definir no_es_numero como Logico;
Definir continuar como logico;
Definir suma como entero;
Definir dig como caracter;
Definir check como entero;
Definir check_i como entero;
Definir i como entero;
continuar <- verdadero;
Mientras continuar Hacer
Escribir "Ingrese ISBN de 13 digitos (solo primeros 12 digitos):";
Leer ISBN;
Escribir "Ingrese el ultimo digito";
Leer check_i;
Dimension array [12];
Dimension array_n[12];
Para i<-0 Hasta 11 Con Paso 1 Hacer
dig <- Subcadena(ISBN,i,i);
no_es_numero <- ~(dig = "1" | dig = "2" | dig = "3" | dig = "4" | dig = "5" | dig = "6" | dig = "7" | dig = "8" | dig = "9" | dig = "0");
dig <- Subcadena(ISBN,i,i);
Si no_es_numero Entonces
Escribir "Error: ",dig," no es numero";
i <- i + 16;
FinSi
FinPara
Si no_es_numero Entonces
continuar <- verdadero;
Sino
continuar <- falso;
FinSi
FinMientras
multiplicando <- 1;
suma <- 0;
Para i<-0 Hasta 12 Con Paso 1 Hacer
dig <- Subcadena(ISBN,i,i);
Si dig = "1" Entonces
suma <- suma + multiplicando;
FinSi
Si dig = "2" Entonces
suma <- suma + 2*multiplicando;
FinSi
Si dig = "3" Entonces
suma <- suma + 3*multiplicando;
FinSi
Si dig = "4" Entonces
suma <- suma + 4*multiplicando;
FinSi
Si dig = "5" Entonces
suma <- suma + 5*multiplicando;
FinSi
Si dig = "6" Entonces
suma <- suma + 6*multiplicando;
FinSi
Si dig = "7" Entonces
suma <- suma + 7*multiplicando;
FinSi
Si dig = "8" Entonces
suma <- suma + 8*multiplicando;
FinSi
Si dig = "9" Entonces
suma <- suma + 9*multiplicando;
FinSi
Si multiplicando = 3 Entonces
multiplicando <- 1;
Sino
multiplicando <- 3;
FinSi
FinPara
check <- suma % 10;
Si 10 - check_i = check Entonces
Escribir "El ISBN es Valido";
Sino
Escribir "El ISBN es invalido \n El utimo digito deberia ser: ", (10 - check_i);
FinSi
FinProceso
viernes, 26 de octubre de 2012
Ejemplo de Algoritmo para determinar la cantidad de cuadrados que hay adentro de un cuadrado
Proceso CuentaCuadradosDentroCuadrado
Definir divisiones como entero;
Definir i como entero;
Definir suma como entero;
Escribir "Ingrese la cantidad de segmentos en los que se divide un cuadrado";
Leer divisiones;
suma <- 0;
Para i<-1 Hasta divisiones Con Paso 1 Hacer
suma <- suma + i*i;
FinPara
Escribir "La cantidad de cuadrados adentro del cuadrado es: ",suma;
FinProceso
Suscribirse a:
Entradas (Atom)