examen1 solucion en pseudocodigo
Programa del examen nº 1
Pseudocódigo
<inicio>
tabla[10] // tabla de 10 elementos
opcion=1 // opcion elegida, le pongo distinto a uno para que no salga del menu
contador=0 // contador
// Pongo todos los numeros de la tabla a cero
mientras contador<10
tabla[contador]=0
contador++
fincontador
// presentación del menu
escribe_menu()
mientras opcion!=0
// lectura del teclado
opcion=LeerOpcionMenu()
//elegir caso
En caso opcion
caso 1
cargartabla10elementos(tabla[])
escribe_menu()
caso 2
cargartabla10elementosordenadosmenoramayor(tabla[])
escribe_menu()
caso 3
rotarlatablaunaposicionizquierda(tabla[])
escribe_menu()
caso 4
rotarlatablaunaposicionderecha(tabla[])
escribe_menu()
caso 5
ordenarlatabladescendentemente(tabla[])
escribe_menu()
caso6
ordenarlatablaascendente(tabla[])
escribe_menu()
caso 7
rellenarlatablaconnumerosaleatorios(tabla[])
escribe_menu()
fincaso
<finmientras>
<fin>
Defino procedimintos
<inicio escribe_menu()>
c=0
Escribe “Menu:”
Escribe “1-Cargar la tabla con 10 números”
Escribe “2-Cargar la tabla con 10 numeros ordenados de menor a mayor”
Escribe “3-Rotar la tabla una posicion a la izquierda”
Escribe “4-Rotar la tabla un posición a la derecha”
Escribe “5-Ordenar la tabla descendientemente”
Escribe “6-Ordenar la tabla ascendentemente”
Escribe “7- Rellenar la tabla con numeros aleatorios”
Escribe “0-Salir”
Escribe “La tabla actual es:”
mientras c<10
Escribe tabla[c]
finmientras
<fin escribe_menu()>
<inicio LeerOpcionMenu()>
variable=0
mientras variable>=0 O variable<=7
Escribe “Escribe la opcion:”
Lee variable
finmientras
Devuelve variable
<fin LeerOpcionMenu>
<inicio escribetabla(tabla[])>
contador=0
mientras contador<10
Escribe tabla[contador]
finmientras
<fin escribetabla>
<inicio cargartabla10elementos(tabla[])>
elementos=0
mientras elementos<10
Escribe “Elemento %d :”,elemento
tabla[elemento]=Lee elemento
elemento++
finmientras
<fin cargartabla10elementos>
<inicio cargartabla10elementosordenadosmenoramayor(tabla[])>
elementos=0
valor=0
pos=0
indice=0
//tengo que poner el valor de la tabla al maximo int, para que lo ordene bien
mientras elementos<10
tabla[elementos]=INT_MAX // asi introduzco el valor maximo
elementos++
finmientras
elementos=0
mientras elementos<10
// obtener el numero
Escribe “Elemento %d :”
Lee valor
// determino posicion
pos=0
mientras tabla[pos]<valor Y pos<9
pos++
finmientras
// insertar el numero en la posicion obtenida
indice=9
mientras indice>pos
tabla[indice]=tabla[indice-1]
indice--
finmientras
tabla[pos]=valor
elementos++
finmientras
<fin cargartabla10elementosordenadosmenoramayor>
<inicio rotarlatablaunaposicionizquierda(tabla[])
pos=9
valor=tabla[9]
mientras pos>0
tabla[pos]=tabla[pos-1]
pos--
fin mientras
tabla[0]=valor
<fin rotarlatablaunaposicionizquierda)
<inicio rotaarlatablaunaposicionderecha(tabla[])
pos=0
valor=tabla[0]
mientras pos<9
tabla[pos]=tabla[pos+1]
pos++
fin mientras
tabla[9]=valor
<fin rotaarlatablaunaposicionderecha>
<inicio ordenarlatabladescendentemente(tabla[])
num=0
aux=0
c=0
mientras num<10
c=num+1
mientras c<10
si tabla[num]>tabla[c] // de mayor a menor
//este caso no lo usamos
sino
aux=tabla[c]
tabla[c]=tabla[num]
tabla[num]=aux
finsi
c++
finmientras
num++
finmientras
<fin ordenarlatabladescendentemente>
<inicio ordenarlatablaascendente(tabla[])>
num=0
aux=0
c=0
mientras num<10
c=num+1
mientras c<10
si tabla[num]<tabla[c] // de menor a mayor
//este caso no lo usamos
sino
aux=tabla[c]
tabla[c]=tabla[num]
tabla[num]=aux
finsi
c++
finmientras
num++
finmientras
<fin ordenarlatablaascendente>
<inicio rellenarlatablaconnumerosaleatorios(tabla[])>
c=0
mientras c<10
tabla[c]=aleatorio(1,100)
c++
finmentras
<fin rellenarlatablaconnumerosaleatorios>