Mostrando entradas con la etiqueta Ordenar. Mostrar todas las entradas
Mostrando entradas con la etiqueta Ordenar. Mostrar todas las entradas

domingo, 31 de marzo de 2013

Pseudocódigo Vectores y Matrices I


Ejercicios de pseudocódigo con vectores:



Mejorar el algoritmo de búsqueda en un vector.




1 Proceso BuscarEnArray1Dim
2      //Buscar de forma secuencial.
3      //si encuentra para la bisqueda
4      Definir N como entero;
5      Dimension N[10];
6      Definir I, Buscado, Encontrado como entero;
7      Buscado <- 23;
8      Encontrado <- 0;
9      Para I <- 1 hasta 10 hacer
10           N[I] <- Azar(50) ;
11           Escribir N[I], " " Sin Saltar;
12     FinPara
13     Escribir "";
14     I<-1;
15     Mientras Encontrado = 0 & I<=10
16           Si N[I] = Buscado Entonces
17                  Encontrado <- I;
18           FinSi
19           I<-I+1;
20     FinMientras
21     Si Encontrado = 0 entonces
22           Escribir "No Encontrado";
23     Sino
24           Escribir "Encontrado en pos " , Encontrado , " Con " , I-1 , " Pasos";
25     FinSi
26
27 FinProceso



Diseñar un algoritmo de búsqueda que busque en un vector ordenado. 




1 Proceso BuscarEnArrayOrdenado
2      Definir N como entero;
3      Dimension N[10];
4      Definir I,K,Tmp, Buscado, Encontrado como entero;
5      Buscado <- 50;Azar(25);
6      Escribir "Buscarmos el " , Buscado;
7      Encontrado <- 0;
8      Para I <- 1 hasta 10 hacer
9            N[I] <- Azar(25) ;
10     FinPara
11     //n[1]<-50;
12     Para I<-1 hasta 10 - 1 hacer
13           Para K<-1 Hasta 10 - I hacer
14                  Si N[K] > N[K+1] entonces
15                         tmp <- N[K];
16                         N[K]<-N[K+1];
17                         N[K+1]<-tmp;
18                  FinSi
19           FinPara
20     FinPara
21
22     Para I <- 1 hasta 10 hacer
23           Escribir N[I];
24     FinPara
25
26
27 Definir Min, Max, Med como entero;
28     Med<-0;
29     Min<-1;
30     Max<-10;
31     Mientras Min <= Max & Encontrado = 0
32           Med <- (( Max - Min ) / 2) + Min;
33           Escribir "Min:" , Min , " Max:", Max, " Med:" , Med, " Enc", Encontrado;
34           Si N[Med] > Buscado entonces //el central es mayor que buscado
35                  Max <- Med - 1;
36           Sino
37                  si N[med] < Buscado Entonces //el central es menor que buscado
38                         Min <- med + 1;
39                  sino // el central es el buscado
40                         encontrado <- Med;
41                  FinSi
42           FinSi
43           //Esperar Tecla;
44     FinMientras
45
46     Si Encontrado = 0 Entonces
47           Escribir "No esta";
48     Sino
49           Escribir "Esta en pos", Encontrado;
50     FinSi
51 FinProceso



Escriba un programa simule varios lanzamientos de un dado y muestre la frecuencia de cada una de las caras así como la proporción del número de veces que haya salido cada cara con respecto al total.Para ello simule 6000 lanzamientos de un dado.




1 Proceso LanzarDado6000Veces
2      //lanzar el dado y indicar las vecez que
3      //sale cada cara en total y en %
4      Definir Max Como Entero;
5      Max<-500; //Cambiar por 6000
6      Definir Dado, tanto Como Real;
7      Definir Datos Como Real;
8      Dimension Datos[6]; //1 2 3 4 5 6
9      Definir indice Como Entero;
10     //poner a 0
11     para indice <-1 hasta 6
12           Datos[Indice]<-0;
13     FinPara
14     para Indice <-1 hasta Max
15           Dato<-Azar(6) + 1;
16           Datos[Dato] <- Datos[Dato] + 1;
17           segun Dato hacer //Commentar para mas rapido
18                  1: Escribir " ";
19                         Escribir " * ";
20                         Escribir " ";
21                  2: Escribir " *";
22                         Escribir " ";
23                         Escribir "* ";
24                  3: Escribir " *";
25                         Escribir " * ";
26                         Escribir "* ";
27                  4: Escribir "* *";
28                         Escribir " ";
29                         Escribir "* *";
30                  5: Escribir "* *";
31                         Escribir " * ";
32                         Escribir "* *";
33                  6: Escribir "* *";
34                         Escribir "* *";
35                         Escribir "* *";
36           FinSegun
37           Esperar 0.05 Segundos;
38           Borrar Pantalla;
39     FinPara
40     para indice <-1 hasta 6
41           Escribir "Cara " , Indice Sin Saltar;
42           Escribir " Veces " , Datos[Indice] Sin Saltar;
43           Tanto <- ( Datos[Indice] / Max ) * 100;
44           Escribir " % " , Tanto;
45     FinPara
46 FinProceso



Leer Números hasta introducir 0, calcular la media y mostrar los valores que están por encima de la media.


1 Proceso LeerNumerosMediaYmayoredelamedia
2      //Leer Numero hasta intoducir el 0
3      //Calcular Media y mostrar los que estan
4      //por encima de la media
5      //Como maximo se leen 1000 Numeros.
6      Definir Num, Nums, Cuantos, Suma, Media, i Como Entero;
7      Dimension Nums[1000];
8      Cuantos<-0;
9      Suma <-0;
10     Repetir
11           Escribir "Dime el numero " , Cuantos +1;
12           Leer Num;
13           si Num <> 0 entonces
14                  Cuantos <- Cuantos + 1;
15                  Nums[Cuantos]<-Num;
16                  Suma <- Suma + Num;
17           FinSi
18     Hasta Que Num = 0 | Cuantos > 1000
19     Si Cuantos > 0 entonces
20           Media <- Suma / (Cuantos );
21           Escribir "La media es ", Media;
22           Para i<-1 hasta cuantos
23                  Si Nums[i]> Media entonces
24                         Escribir Nums[i], " es mayor que la media";
25                  FinSi
26           FinPara
27     Sino
28           Media <- 0;
29     fin si
30
31
32 FinProceso


jueves, 28 de marzo de 2013

Pseudocódigo Vectores y Matrices

Pseudocódigo Vectores y Matrices.

Vectores.


Un array unidimensional, o vector, es un conjunto finito y ordenado de elementos homogéneos.

  • Es finito porque tiene un número determinado de elementos.
  • Homogéneo porque todos los elementos almacenados van a ser del mismo tipo. 
  • Ordenado porque vamos a poder acceder a cada elemento del array de manera independiente porque va a haber una forma de referenciar cada elemento.


Para referenciar cada elemento de un array vamos a usar índices.
  • Los índices tienen que ser números enteros.
  • Para referenciar un elemento de un array usaremos el nombre del array y entre corchetes [ ] el índice que determina la posición de ese elemento en el array.
  • Por defecto en PSeInt los vectores empiezan en la posición 1.

Los arrays se almacenan siempre en posiciones consecutivas de memoria y podemos acceder a cada elemento del array de manera independiente a través de los índices.
Un índice no tiene porque ser un valor constante, sino que puede ser también una variable o una expresión que al ser evaluada devuelva ese índice.

A la hora de definir un array siempre habrá que dar el nombre del array, el rango de sus índices y el tipo de los datos que contiene

Definir Nombres Como Caracter;
Dimension Nombres[5];
//array de 5 elementos de tipo cadena
Definir Numeros Como Entero;
Dimension Numeros[10];
//array de 10 elemntos de tipo entero

Operaciones con arrays.



  • Asignación de un dato a una posición concreta del array:
    • Nombres[1] <- "Juan";
    • Numeros[10]<-34;
  • Lectura y escritura de datos:
    • Leer Nombres[4];
    • Escribir "Tu nombre es", Nombres[3];
  • Recorrido o acceso secuencial de un array:
    • Para Indice <- 1 hasta 10 Hacer
    • Numeros[Indice]<-Indice;
    • FinPara
  • Ordenación de un vector.
    • El algoritmo de ordenación de burbuja (“bubble sort”) se basa en comparar los elementos adyacentes del vector e intercambiar los mismos si están desordenados.
    • Se comienza comparando el primer elemento con el segundo, si están desordenados se intercambian. Luego se compara el segundo con el tercero, intercambiándolos si están desordenados. Este proceso que se realiza sobre todos los elementos constituye una pasada sobre el vector.
    • Al terminar esta pasada el mayor elemento se encuentra al final del vector y algunos de los elementos más pequeños se han movido hacia las primeras posiciones.
    • El procedimiento se vuelve a repetir hasta obtener el vector ordenado, lo que ocurrirá cuando se hayan realizado N − 1 pasadas.
1 Proceso OrdenarArray1Dimension
2      Definir N como entero;
3      Dimension N[10];
4      Definir I, K, X, tmp como entero;
56      Para I <- 1 hasta 10 hacer
7            N[I] <- Azar(100);
8      FinPara
9      Escribir "Sin Ordenar";
10     Para I <- 1 hasta 10 Hacer
11           Escribir N[I], " " Sin Saltar;
12     FinPara
1314     Para I<-1 hasta 10 - 1 hacer
15           Para K<-1 Hasta 10 - I hacer
16                  Si N[K] > N[K+1] entonces
17                         tmp <- N[K];
18                         N[K]<-N[K+1];
19                  N[K+1]<-tmp;
20                  FinSi
21           FinPara
22            Escribir ""; //ver cambios
23            Escribir "paso " , I;
24            Para X <- 1 hasta 10 Hacer
25                  Escribir N[X], " " Sin Saltar;
26            FinPara
27     FinPara
2829     Escribir "";
30     Escribir "Ordenado";
31     Para I <- 1 hasta 10 Hacer
32           Escribir N[I], " " Sin Saltar;
33     FinPara
34 FinProceso
  • Búsqueda en un vector.
    • Para buscar un elemento en un vector tenemos que pasar por cada uno de sus elementos.
1 Proceso BuscarEnArray1DimNoOrdenado
2      Definir N como entero;
3      Dimension N[10];
4      Definir I, Buscado, Encontrado como entero;
5      Buscado <- 23;
6      Encontrado <- 0;
7      Para I <- 1 hasta 10 hacer
8            N[I] <- Azar(50) ;
9            Escribir N[I], " " Sin Saltar;
10     FinPara
11     Escribir "";
12     I<-1;
13     Mientras Encontrado = 0 & I<=10
14           Si N[I] = Buscado Entonces
15                  Encontrado <- I;
16           FinSi
17           I<-I+1;
18     FinMientras
19     Si Encontrado = 0 entonces
20           Escribir "No Encontrado";
21     Sino
22           Escribir "Encontrado en pos " , Encontrado , " Con " , I-1 , " Pasos";
23     FinSi
2425 FinProceso