Algoritmica I 2012 II - REGISTROS (Problemas)

27
Facultad de Ingeniería de Sistemas e Informática - UNMSM Algorítmica I 9 de noviembre de 2012 Ing. John Ledgard Trujillo Trejo REGISTROS Y ARCHIVOS EJERCICIOS RESUELTOS Responsable : Ing. John Ledgard Trujillo Trejo

Transcript of Algoritmica I 2012 II - REGISTROS (Problemas)

Page 1: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

REGISTROS Y ARCHIVOS

EJERCICIOS RESUELTOS

Responsable : Ing. John Ledgard Trujillo Trejo

Page 2: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

Realizar un algoritmo que lea del terminal la información de varios clientes: Código del cliente, Nombre del cliente y el saldo y detecte los clientes que tienen un saldo superior a 1000.0 y escribe en la pantalla sus nombres.

Algoritmo saldo_clientesconst entero: n = 100tiporegistro: r_cliente entero: cod_cliente cadena: nom_cliente real: saldofin_registro

arreglo [1..n] de r_cliente: clientes

registro: clientes entero: num_clientes clientes: vclientes fin_registro

Page 3: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

Var clientes: lista_clientes r_cliente: rclien

inicio escribir ("Escribe el numero de clientes:") leer (lista_clientes.numclientes) si (lista_clientes.numclientes < n ) entonces para (i=1 hasta lista_clientes.numclientes) hacer escribir(" Codigo Cliente: ") leer (lista_clientes.vclientes[i]. cod_cliente) escribir(" Nombre Cliente: ") leer (lista_clientes.vclientes[i]. nom_cliente ) escribir(" Saldo Cliente: ") leer (lista_clientes.vclientes[i]. saldo) fin_para escribir ("Lista de clientes cuyo saldo es mayor que 1000.00" ) para (i=1 hasta lista_clientes.numclientes) hacer si (lista_clientes.vclientes[i]. saldo > 1000.00) entonces escribir (lista_clientes.vclientes[i]. nom_cliente) fin:_si fin_para sino escribir (" El numero de clientes es mayor que el tamaño del vector") fin_sifin

Page 4: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

El inventario de un almacén de artículos deportivos se desea guardar en un arreglo de registros. Artículos con los campos: nombre, número de código (seis dígitos), cantidad de artículos y precio. Escribir un procedimiento que lea y almacene el arreglo de registros adecuado. El algoritmo debe contemplar las siguientes opciones: impresión de todo el inventario, búsqueda de un artículo por número de código, actualización semanal (altas y bajas de artículos), ordenación alfabética por nombre y ordenación decreciente por cantidad de artículo.

Algoritmo inventarioconst entero: n = 100TipoRegistro: r_articulo entero: cod_art cadena: nom_art entero: can_art real: precio_artfin_registroarreglo [1..n] de r_articulo: articulo

Var articulo: Art // Variable de tipo arreglo de registros r_articulo: rart // Variable de tipo registro entero: opcion, num_art carácter: resp

Page 5: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

Inicio // Principal repetir escribir(“Inventario de Artículos de Almacén”) escribir(“1. Ingreso de registros”) escribir(“2. Reporte del inventario”) escribir(“3. Búsqueda de artículos”) escribir(“4. Altas de artículos”) escribir(“5. Bajas de artículos”) escribir(“6. ordenación alfabética por nombre”) escribir(“7. ordenación decreciente por número de artículo”) escribir(“Ingrese la opción correspondiente”) leer(opcion) según_sea (opción) hacer 1: ingreso_registros(art, num_art) 2: reporte(art, num_art) 3: busqueda(art, num_art) 4: alta_registro(art, num_art) 5: baja_registro(art, num_art) 6: ordenacion_alfabetica(art, num_art) 7: ordenacion_decreciente(art, num_art) fin_según_sea hasta_que ((opcion >=0) y (opcion <=7)fin

Page 6: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

procedimiento ingreso_registros(articulo: art, entero: num_art)inicio num_art 0 leer(rart.cod_art) leer(rart.nom_art) leer(rart.can_art) leer(rart.precio_art) Mientras (rart.cod_art<>0) hacer num_art num_art + 1 art[num_art].cod_art rart.cod_art art[num_art].nom_art rart.nom_art art[num_art].can_art rart.can_art art[num_art].precio_art rart.precio_art leer(rart.cod_art) leer(rart.nom_art) leer(rart.can_art) leer(rart.precio_art) fin_mientrasfin_ingreso_registros

Page 7: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

procedimiento reporte (articulo: art, entero: n)var entero: iinicio desde ( i = 1 hasta n) hacer rart.cod_art art[i].cod_art rart.nom_art art[i].nom_art rart.cant_art art[i].can_art rart.precio_art art[i].precio_art escribir (rart) Fin_desdeFin_reporte

Page 8: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

procedimiento busqueda (articulo: art, entero: n)var entero: codigo, i lógico: encontradoinicio escribir (“Ingrese código de artículo) leer (codigo) encontrado falso i 1 Mientras ((no encontrado) y (i <= n)) hacer si (codigo = art[i].cod_art) entonces encontrado verdad fin_si i i + 1 fin_mientras si (no encontrado) entonces escribir (“Artículo no existente”) sino escribir (art[i])fin_sifin_busqueda

Page 9: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

procedimiento alta_registro (articulo: art, entero: num_art)var entero: i lógico: encontradoinicio escribir (“Ingrese código de artículo a dar de alta”) leer (codigo) encontrado falso i 1 Mientras ((no encontrado) y (i <= num_art)) hacer si (codigo = art[i].cod_art) entonces encontrado verdad fin_si i i + 1 fin_mientras si (no encontrado) entonces escribir (“Artículo no existente”) art[num_art + 1] codigo leer(art[num_art + 1].nom_art) leer(art[num_art + 1].can_art) leer(art[num_art + 1].precio_art) num_art num_art + 1 sino escribir (“El articulo ya existe”) fin_sifin_alta_registro

Page 10: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

procedimiento baja_registro (articulo: art, entero: num_art)var entero: i, j lógico: encontradoinicio escribir (“Ingrese código de artículo a dar de baja”) leer (codigo) encontrado falso i 1 Mientras ((no encontrado) y (i <= num_art)) hacer si (codigo = art[i].cod_art) entonces encontrado verdad fin_si i i + 1 fin_mientras si (no encontrado) entonces escribir (“Artículo no existente”) sino desde (j = i hasta num_art) hacer art[j].cod_art art[j + 1].cod_art art[j].nom_art art[j + 1].nom_art art[j].can_art art[j + 1].can_art art[j].precio_art art[j + 1].precio_art num_art num_art - 1 fin_desde fin_sifin_baja_registro

Page 11: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

procedimiento ordenacion_alfabetica (articulo: art, entero: n)var entero: i, j r_articulo: rtempinicio desde (i = 1 hasta n – 1) hacer desde (j = I hasta n – i) hacer si (art[j].nom_art > art[j + 1].nom_art ) entonces rtemp art[j] art[j] art[j + 1] art[j + 1] rtemp fin_si fin_desde fin_desdefin_ordenamiento_alfabetico

Page 12: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

procedimiento ordenacion_decreciente (articulo: art, entero: n)var entero: i, j r_articulo: rtempinicio desde (i = 1 hasta n – 1) hacer desde (j = I hasta n – i) hacer si ( art[j].can_art < art[j + 1].can_art ) entonces rtemp art[j] art[j] art[j + 1] art[j + 1] rtemp fin_si fin_desde fin_desdefin_ordenamiento_decreciente

Page 13: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

Algoritmo almacéntipo registro: producto entero: código cadena: descripción entero: stock entero: stock_minfin_registro

Tenemos un arreglo con la información de nuestros productos, por cada producto almacenamos su código, descripción, stock actual y stock mínimo.Se trata de obtener otro arreglo que contenga los productos de los que halla que hacer pedidos porque su stock sea inferior al mínimo, tal que al proveedor le tenemos que dar como datos la identificación del producto y la cantidad que pedimos, que coincidirá con el stock mínimo. Normalmente trabajamos con 100 productos.

Page 14: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

registro: pedido entero: códigoentero: cantidadfin_registroarreglo [1..100] de producto: productosarreglo [1..100] de pedido: pedidos

var productos: aprod pedidos: aped entero: i, j inicio j 1 desde (i = 1 hasta 100) hacer si (aprod[i].stock < aprod[i].stock_min) entonces

aped[j].codigo aprod[i].codigo aped[j].cantidad aprod[i].stock_min j j+1

fin_si fin_desdefin

Page 15: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

Algoritmo notastipo registro: alumnoentero: expedientecadena: nombrereal: mediafin_registroarreglo [1..100] de alumno: alumnosvar alumnos: aalum entero: opción, i

Dado un arreglo que contiene la información de los alumnos de una clase de 100 alumnos, y teniendo en cuenta que de cada uno de ellos almacenamos su número de expediente, nombre y nota media. Hallar la media de todos los alumnos de esa clase y dar otra opción que pida el nombre de un alumno y me de su nota si este alumno existe.

Page 16: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

inicio escribir (“Menu de opciones”) escribir (“1. Media aritmética de las notas de la clase”) escribir (“2. Nota de alumno”) escribir (“ingrese la opción a escoger (1, 2)”) leer (opción) mientras ((opción = 1) o (opción = 2)) hacer según sea (opción) hacer 1: escribir (“La media de las notas de la clase es”, nota_media (aalum) 2: nota_alumno (aalum) fin_según_sea escribir (“Menu de opciones”) escribir (“1. Media aritmética de las notas de la clase”) escribir (“2. Nota de alumno”) escribir (“ingrese la opción a escoger (1, 2)”) leer (opción) fin_mientrasfin

Page 17: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

real función nota_media (alumnos: lalum)var real: prom, suma entero: i inicio media 0 desde (i = 1 hasta 100) hacer suma suma +aalum[i].media fin_para prom suma/100 devolver (prom)fin_nota_media

Page 18: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

procedimiento nota_alumno (alumnos: aalum)varcadena: nombrelógico: encontradoinicioescribir (“Ingrese el nombre del alumno:”)leer (nombre)encontrado falsoi 1repetir si (aalum[i].nombre = nombre) entonces encontrado verdadero sino i i+1 fin si hasta que ((i > 100) o (encontrado = verdadero)) si (encontrado = verdadero) entonces escribir (“La nota de”, nombre, ”es”, aalum[i].media) sino escribir (“El alumno no existe”) fin sifin_nota_alumno

Page 19: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

Page 20: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

Page 21: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

Page 22: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

Page 23: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

Page 24: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

Page 25: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

Page 26: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo

Page 27: Algoritmica I 2012 II - REGISTROS (Problemas)

Facultad de Ingeniería de Sistemas e Informática - UNMSM

Algorítmica I 9 de noviembre de 2012

Ing. John Ledgard Trujillo Trejo