Está en la página 1de 3

Busca los dos mayores de un arreglo de N datos.

// Busca los dos mayores de una lista de N datos

Proceso Mayores

// primero se declara un arreglo de 200 elementos


Dimension datos[200]

// luego se pide al usuario ingresar la cantidad de datos,


// que no debera ser mayor a 200
Escribir "Ingrese la cantidad de datos (de 2 a 200):"
Leer n

// se leen uno por uno los 200 datos y se los guarda en el arreglo
Para i<-1 Hasta n Hacer
Escribir "Ingrese el dato ",i,":"
Leer datos[i]
FinPara

// se comparan los dos primeros y se toman como may1 (el mayor de los
// dos) y may2 (el segundo mayor).
Si datos[1]>datos[2] Entonces
may1<-datos[1]
may2<-datos[2]
Sino
may1<-datos[2]
may2<-datos[1]
FinSi
// se recorren los demas elementos buscan si hay alguno mayor que may1 o
may2
Para i<-3 Hasta n Hacer
Si datos[i]>may1 Entonces // si hay un valor mayor que may1
may2<-may1 // como may1 era el más grande, pasa a estar en
segundo lugar
may1<-datos[i] // y el nuevo dato toma el primer puesto (mayor
de todos)
Sino // si no era mas grande que may1, todavia puede ser mas grande
que may2
Si datos[i]>may2 Entonces // si supera al segundo mayor que
teniamos
may2<-datos[i] // se lo guarda como segundo mayor
FinSi
FinSi
FinPara

// se muestran los resultados


Escribir "El mayor es: ",may1
Escribir "El segundo mayor es: ",may2

FinProceso
Ordena Lista
// Se ingresa una lista de nombres (la lista termina
// cuando se ingresa un nombre en blanco) no permitiendo
// ingresar repetidos y luego se ordena y muestra

Proceso OrdenaLista

Dimension lista[200]

Escribir "Ingrese los nombres (enter en blanco para terminar):"

// leer la lista
cant<-0
Leer nombre
Mientras nombre<>"" Hacer
cant<-cant+1
lista[cant]<-nombre
Repetir // leer un nombre y ver que no este ya en la lista
Leer nombre
se_repite<-Falso
Para i<-1 Hasta cant Hacer
Si nombre=lista[i] Entonces
se_repite<-Verdadero
FinSi
FinPara
Hasta Que NO se_repite
FinMientras

// ordenar
Para i<-1 Hasta cant-1 Hacer
// busca el menor entre i y cant
pos_menor<-i
Para j<-i+1 Hasta cant Hacer
Si lista[j]<lista[pos_menor] Entonces
pos_menor<-j
FinSi
FinPara
// intercambia el que estaba en i con el menor que encontro
aux<-lista[i]
lista[i]<-lista[pos_menor]
lista[pos_menor]<-aux
FinPara

// mostrar como queda la lista


Escribir "La lista ordenada es:"
Para i<-1 Hasta cant Hacer
Escribir " ",lista[i]
FinPara

FinProceso
Dígitos
// Separa un numero entero en sus digitos

Proceso Digitos

Escribir "Ingrese un numero entero postivo:"


Leer n

// primero, contar cuantos digitos


cont <- 0
aux <- n
Mientras aux>0 hacer // mientras no sea cero
cont <- cont + 1 // contar cuantos digitos
aux <- trunc(aux/10) // dividir por 10 y despreciar los de
FinMientras
Escribir "El numero tiene ",cont," digitos"

// luego, mostrarlos uno por uno


aux<-n
Para i<-1 hasta cont Hacer
pot <- 10^(cont-i) // por cuanto hay que dividir para obtener el primer digito
digito <- trunc (aux / pot) // obtener el digito
aux <- aux - digito*pot // quitar ese digito al numero
Escribir "El digito ",i," es ",digito
FinPara

FinProceso

También podría gustarte