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>