ALGORITMOS y PROGRAMAS LAB Nro 1.pdf
-
Upload
juan-pablo-ossa-yepes -
Category
Documents
-
view
111 -
download
2
Transcript of ALGORITMOS y PROGRAMAS LAB Nro 1.pdf
ALGORITMOS y PROGRAMAS LAB Nro 1
ISI 21 - 22 - 23 - 25
1. Hacer un ALGORITMO que permita el ingreso de dos números reales por teclado y calcule la división, si el denominador es diferente de cero. El algoritmo debe mostrar los números ingresados y el resultado. ALGORITMO operaciones INICIO
// Declarar las variables real A, B, DR
// Ingresar los dos números por teclado
LEER A, B Si ( B 0 ) { DR = A / B // Dividir solo si el denominador es diferente de 0
MOSTRAR A, B // Muestra las entradas MOSTRAR D R // Muestra las salidas }
FIN
Haga el programa en C++
#include<iostream.h> #include<conio.h> #include<math.h> #include<stdlib.h> #include<stdio.h>
void main() { // Declarar las variables
double A, B, Q ; // Ingresar los dos números por teclado cout<<"Ingrese dos numeros reales "; cin>>A>>B; if ( B != 0 ) { Q = A / B; // Q = cociente real
cout<<"Dividendo A = "<<A<<endl; cout<<"Divisor B = "<<B<<endl; // Muestra las entradas
cout<<"cociente Q = "<<Q<<endl; // Muestra el cociente
} getch(); } 2. Haga el algoritmo, que divida dos numeros de tipo entero y calcule el resto, es decir debe usar los operadores DIV y MOD de algoritmos. Haga el programa en C++
ALGORITMO operaciones INICIO // Declarar las variables entero A, B, Q , R
// Ingresar los dos números por teclado
LEER A, B Si ( B 0 ) { Q = A DIV B // Q = cociente entero ----- DIVISION ENTERA
R = A MOD B // R = resto de dividir A y B
MOSTRAR A, B // Muestra las entradas MOSTRAR Q, R // Muestra las salidas } FIN
Haga el programa en C++
#include<iostream.h> #include<conio.h> #include<math.h> #include<stdlib.h> #include<stdio.h>
void main() { // Declarar las variables int A, B, Q , R ; // Ingresar los dos números por teclado cout<<"Ingrese dos numeros separados por enter "; cin>>A>>B; if ( B != 0 ) { Q = A / B; // Q = cociente entero ----- DIVISION ENTERA R = A % B; // R = resto de dividir A y B cout<<"Dividendo A = "<<A<<endl; cout<<"Divisor B = "<<B<<endl; // Muestra las entradas cout<<"cociente Q = "<<Q<<endl; cout<<"resto R = "<<R<<endl; } getch(); } 3. Hacer un ALGORITMO que permita calcular el pago por examen de admision en una institución universitaria, teniendo en cuenta que el valor de dicho pago depende de el colegio de procedencia.
Colegio de Procedencia Pago por Examen ADmision
Nacional 'N' 100+ 1% de Sueldo Minimo
Parroquial 'P' 200 + 3% de Sueldo Minimo
Particular 'T' 300 + 7% de Sueldo Minimo
ALGORITMO Admisión INICIO
// Declarar las variables caracter ColProc
real PagoAdm // Declarar las constantes
const real tN = 0.01, tP= 0.03 , tR = 0.07 const real SueldoMin = 500
LEER ColProc SELECCIONE ( ColProc ) { caso „N‟ : PagoAdm = 100 + tN*SueldoMin
salto
caso „P‟ : PagoAdm = 200 + tP*SueldoMin salto caso „T‟ : PagoAdm = 300 + tR*SueldoMin salto
} MOSTRAR PagoAdm
FIN
En lenguaje C++ # include <iostream.h> # include <conio.h> # include <stdlib.h>
// nota tolower() convierte a minuscula // nota toupper() convierte a mayuscula void main()
{ // Declarar las variables char ColProc; double PagoAdm; // Declarar las constantes const double tN = 0.01, tP= 0.03 , tR = 0.07; const double SueldoMin = 500; cout <<"Ingrese el colegio de procedencia : "; cin >> ColProc; switch ( ColProc ) { case 'N' : PagoAdm = 100 + tN*SueldoMin; break; case 'P' : PagoAdm = 200 + tP*SueldoMin; break; case 'T' : PagoAdm = 300 + tR*SueldoMin; break; } cout <<"Pago por admision : "<< PagoAdm<<endl; getch(); }
Nota : Para que no diferencie entre valores de ColProc mayusculas y minusculas puede usarse la función toupper(), teniendo los case en mayusculas , es decir 'N',
'P', y 'T', de manera que todo caracter ingresado se convertira en mayuscula. Así seria toupper ( ColProc )
4. Hacer un algoritmo para calcular la tabla de multiplicar de un numero ingresado por teclado.
ALGORITMO Tabla INICIO // Declarar variables real valor, Resultado entero i
Para ( i = 1 Hasta 12 , i=i+1) { Resultado = valor * i MOSTRAR valor , “ * ” , i , “= “ , Resultado
} FIN En Lenguaje C++
# include <iostream.h> # include <conio.h>
void main() { // Declarar las variables double valor, Resultado; int i; // Ingresar el valor de la tabla de multiplicar cout<<"Ïngrese un numero : "; cin>> valor; // Muestra la tabla del valor ingresado cout<<"La Tabla del "<< valor <<":"<<endl; for ( i =1 ; i<=12 ; i=i+1 ) { Resultado = valor * i; cout<<valor <<" * " << i <<" = " <<Resultado <<endl; } getch(); }
5. Hacer un algoritmo que permita calcular el volumen de 5 cilindros, teniendo en cuenta que deben ingresarse el radio y la altura de cada uno de los cilindros. ALGORITMO cilindro
INICIO
real radio, altura, volumen
Pi = 3.1416
PARA ( i =1, hasta 5, i=i+1) { LEER radio, altura
volumen = Pi*radio*radio*h
MOSTRAR volumen; } FIN
PROBLEMAS PROPUESTOS:
Hacer el algoritmo en seudocodigo y el programa en C++
1. Hacer un algoritmo que permita ingresar un numero real y muestre el numero truncado (su parte entera) y su parte decimal (parte fraccionaria). Ejm si el numero es 3.45, su parte entera sera 3 y su parte fraccionaria seria 0.45.
Sugerencia :si el numero real es num use: ParteEntera = int(num) y ParteFracc = num - ParteEntera
2. Hacer un algoritmo para calcular la nota final de un alumno, si se ingresa por teclado: nombre, nota de examen parcial, promedio de practicas, nota de examen final. Tenga en cuenta que examen parcial y final tienen peso 2 :
Nota final = ( ExParcial * 2 + Practicas + ExFinal * 2 ) / 5 El algoritmo debe mostrar el nombre, las notas parciales y la nota final. Hacer tambien el codigo en C++ 3. Hacer un algoritmo para calcular el area de la base el area lateral y el volumen de un cilindro recto. Se requiere ingresar por teclado el radio y la altura. El area de un circulo es pi * radio2 El volumen del cilindro recto es = AreaBase*Altura. AreaLateral = 2*3.1416* radio*Altura + AreaBase*2 4. Una comercializadora de electrodomesticos ofrece una promocion por aniversario, ofreciendo los siguientes descuentos de acuerdo al codigo.
4.
Codigo Nombre Precio $
TasaDescuento
<1> Lavadoras 800 10%
<2> Licuadoras 90 5%
<3> Lustradoras 350 11%
<4> Aspiradoras 300 11%
<5> Cocinas 550 8%
<6> Congeladoras 700 12%
Ingresado por teclado el codigo del producto. El algoritmo debe Mostrar el precio, descuento y el monto a pagar deducido los descuentos. Hacer tambien el programa en C++. Sugerencia use Seleccione (pseudocodigo y switch en C++.
5. Hacer el algoritmo y el respectivo programa en C++ para calcular la suma de :
S = 11 + 22 + 33 + ..... + nn
para los n primeros numeros naturales ingresados por teclado. SUGERENCIA : Use funcion estandar potencia y estructura de control para
6. Hacer un algoritmo y su respectivo programa en C++ que permita generar y mostrar los primeros n numeros de fibonnacci. Considere que los 2 primeros numeros son 0 y 1.
Ejm 0 1 1 2 3 5 8 13 21 34 .............
7. Hacer un algoritmo y su respectivo programa en C++ que permita generar y mostrar los numeros de fibonnacci menores a 20.
Sugerencia: Ver pseudocodigo en problemas resueltos de la pagina web. Considerando los tipos de datos usados en clase para los enteros considere los 20 primeros numeros de fibonacci y los numeros de fibonacci menores a 20
8. Resolver una ecuación de segundo grado de la forma : ax2 + bx + c = 0.
Sugerencia: Use discriminante: Disc = b2 - 4*a*c
Nota Si Disc >=0 x1 = ( - b + sqrt (Disc) ) / 2 Solución real
x2 = ( - b sqrt (Disc) ) / 2 Solución real Si Disc < 0 la solución es imaginaria.
9. Se ha efectuado un examen medico a los alumnos de la universidad Alas Peruanas y se han tomado tres medidas: el peso (kg), la talla (m) y presion (mm). Se pide calcular el promedio de cada medida. Considere que se trata de una cantidad n de alumnos ingresado por teclado. Haga el pseudocódigo y su respectivo programa C++.
10. Hacer un algoritmo que permita ingresar por teclado una cantidad de dinero (valor real) en soles y calcule la cantidad de billetes de 200, 100, 50, 20,10, monedas de 5,2,1,0.5, 0.2 y 0.10.
Sugerencia : Trabaje con parte entera y parte fracionaria de la cantidad de soles :
Si Cantidad de dinero es Soles : pEntSoles = int ( Soles) pFracSoles = int ( ( Soles - pEntSoles )*100)
LABORATORIO NRO 2
ISI 21 - 22 - 23 - 25
Ing. Gladys García V.
ESTRUCTURAS REPETITIVAS MIENTRAS:
1. Hacer un algoritmo que permita obtener la siguiente suma: S = 1 + 1/2 + 1/3 + 1/4 + ...... + 1/n , se debe seguir añadiendo el termino 1/n , mientras sea mayor de 0.1 (es decir termina cuando se añade un termino <=0.1)
ALGORITMO Suma
INICIO
real S, i, t S = 0
i = 1
t = 1
Mientras ( t > 0.1 ) { S = S + t i = i +1
t = 1/ t } MOSTRAR S
FIN
PROGRAMA c++ #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <math.h> #include <stdio.h>
void main() { double S,t,i; S = 0; t=1; i=1; while (t > 0.1) { S = S + t; i = i + 1; t = 1/i; } cout<<endl<<" S = "<<S<<endl; cout<<" # terminos = "<<i<<endl; getch(); }
2. Hacer un algoritmo que permita ingresar los datos : nombre, edad, peso, talla. La entrada de datos debe terminar cuando se ingresa la edad de 0 y debe mostrar el promedio de edad, promedio de peso y promedio de tallas de las personas.
ALGORITMO Personas
INICIO
caracter nombre[20]; real edad, peso, talla, speso, stalla, sedad, prompeso, promtalla, promedad; int nropers; sedad = 0; // inicializa acumuladores en cero speso = 0; stalla = 0; nropers = 0; // inicializa contadores en 0 LEER edad
MIENTRAS (edad 0) { nropers = nropers + 1; LEER nombre, peso , talla sedad = sedad + edad speso = speso + peso stalla = stalla + talla LEER edad } prompeso = speso/nropers; promedad = sedad /nropers; promtalla = stalla/nropers; MOSTRAR prompeso , promedad, promtalla
FIN
PROGRAMA EN C++ #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <math.h> #include <stdio.h>
void main() { char nombre[20]; double edad, peso, talla, speso, stalla, sedad, prompeso, promtalla,promedad; int nropers; sedad = 0; speso = 0; stalla = 0; nropers = 0; cout<<"edad = ";cin>>edad; while (edad != 0) { nropers = nropers + 1; cout<<"nombre = ";cin>>nombre;
cout<<"peso = ";cin>>peso; cout<<"talla = ";cin>>talla; sedad = sedad + edad; speso = speso + peso; stalla = stalla + talla; cout<<"edad = ";cin>>edad; } prompeso = speso/nropers; promedad = sedad /nropers; promtalla = stalla/nropers; cout<<"Nro de personas = "<<nropers<<endl; cout<<"promedio de pesos = "<<prompeso<<endl; cout<<"promedio de edad = "<<promedad<<endl; cout<<"promedio de talla = "<<promtalla<<endl; getch(); }
TIPOS DE DATOS BOOLEANOS
Observe el siguiente programa #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <math.h> #include <stdio.h>
void main() { bool EdadOK, SexoOK; double edad; char sexo; cout<<"Edad = ";cin>>edad; cout<<"Sexo = ";cin>>sexo; EdadOK = edad >=18; if (sexo == 'M') { SexoOK =true; } else { SexoOK = false; } if (EdadOK) { cout<<"Mayor de edad "<<endl; } else { cout<<"Menor de edad "<<endl; } if (EdadOK && SexoOK ) {cout<<"Hara SERVICIO MILITAR OBLIGATORIO"<<endl;} else {cout<<"Se queda en la RESERVA ..."<<endl;} getch(); }
ARRAYS UNIDIMENSIONALES
Hacer el algoritmo y su respectivo programa en C++
Problema 1 .- resuelto en seudocodigo en los problemas de arrays
PROGRAMA EN C++ #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <math.h> #include <stdio.h> #include <iomanip.h>
void main() { const int Long=15; int n,CanTotLib, CanLib[Long], i , MinLib, MaxLib; char Areas[Long][20]; cout<<endl<<"tamaño del array = ";cin>>n; // Lectura de los arrays paralelos for (i=0 ; i<n;i=i+1) { cout<<setw(10)<<"cantidad ";cin>>CanLib[i]; cout<<setw(10)<<"Area ";cin>>Areas[i]; } CanTotLib = 0; for (i = 0; i<n ;i=i+1) { CanTotLib = CanTotLib + CanLib[i]; } cout<<setw(15)<<CanTotLib<<endl; getch(); // Ingresado un indice muestra el area y la cantidad de libros de esa area cout<<"Ingrese el indice : "; cin>>i; cout<<"Cantidad de Libros = "<<CanLib[i]<<endl; cout<<"Area = "<<Areas[i]<<endl; // Calcular la minima cantidad de libros y a que area corresponde MinLib = CanLib [0]; for ( i= 1; i< n ; i=i+1 ) { if ( CanLib[i] < MinLib ) { MinLib = CanLib[i]; } } cout<<"Minima cantidad de Libros = "<<MinLib<<endl; for(i= 0 ;i<n ;i=i+1 ) { if ( CanLib[i] == MinLib ) { cout<<Areas[i]; } } cout<<endl<<endl; // Calculo de Maximo MaxLib = CanLib[0]; for (i = 1 ; i< n ; i=i+1 ) { if ( CanLib[i] > MaxLib ) { MaxLib = CanLib[i]; } } cout<<"Maxima cantidad de libros : "<<MaxLib<<endl; for ( i= 0 ; i< n ;i=i+1 ) { if ( CanLib[i] == MaxLib ) { cout<<Areas[i]; } } cout<<endl; getch(); }
PROBLEMAS PROPUESTOS
1. Hacer los programas en C++ de los problemas: 1,3,4,5, que estan resueltos en seudocódigo en la separata de ejercicios de arrays resueltos.
2. Elabore un algoritmo que proporcione el siguiente reporte:
Estadística de las Calificaciones.
Nombre Cal 1 Cal 2 Cal 3 Cal 4 Promedio
Xxxxx 12 14 17 11 99.9
Xxxxx 10 7 12 11 99.9
... 99.9
Xxxxx 11 5 17 10 99.9
Promedios 99 99 99 99
Hacerlo para: a) 20 alumnos b) Hasta que ya no desee continuar c)Hasta que ingrese como calificativo - 99
3. Una empresa necesita un reporte de comisiones de ventas en la cual aparezcan todos los vendedores que tengan ventas mayores que el nivel de comisión que se calcula:
Nivel de comisión = 2/3*(promedio de ventas) Comisión = 5% sobre el excedente de lo que vendió por arriba del nivel de comisión. Elabore un algoritmo que proporcione el siguiente reporte: COMISIONES DE VENDEDORES
NOMBRE DEL VENDEDOR
VENTAS COMISION
XXXXXXXXXXXX 999,999.9 999,999.9
XXXXXXXXXXXX 999,999.9 999,999.9
XXXXXXXXXXXX 999,999.9 999,999.9
TOTAL 999,999.9 999,999.9
4. Teniendo en cuenta que en un array unidimensional se almacena los resultados correctos de una prueba de 20 preguntas, con 5 opciones ('a', 'b','c','d','e' ). Hacer un algoritmo ( y un programa en C++) que determine la nota de un alumno cuyo array de respuestas es ingresado por teclado. Cada respuesta correcta es un punto.
ARRAYS BIDIMENSIONALES 5. Se tiene la producción de los siete días de la semana de 20 plantas; elaborar un algoritmo que lea estos datos los almacene en un arreglo de 20 renglones, para las plantas, y 7 columnas, para cada día de producción, además, que imprima el número de planta que tuvo la mayor producción semanal.
6. Se tiene 15 estaciones de trabajo, cada una de las cuales tiene un encargado, del cual se conocen el nombre y la producción que tuvo en cada uno de los meses del año. Elaborar un algoritmo que lea los 15 nombres y los guarde en un arreglo; que haga lo mismo con los 12 meses de producción de cada una de las estaciones y que los almacene en una matriz de 15 X 12.
Nombre Producción 2 3 11 12 PA
1 Julio C. 1 120 160 200 190 230
2 Ana R. 2 140 135 130 150 140
15 Rosa M 15 210 220 290 190 250
Se requiere que se imprima el siguiente reporte:
LABORATORIO NRO 4
PROBLEMA 1:
/***************************************************** Nombre : PuntAVarDouble.cpp Objetivo : Usar punteros a variables double Autor : Ing. Gladys Garcia V. Fecha : 08/03/98 ******************************************************/ // Librerias C++ #include<iostream.h> #include<conio.h> int main() { double x = 10.25; // a x se le asigna el valor 10 double* p;
p = &x; // a p se le asigna la dirección de x // p es variable puntero a reales
cout <<"El valor de x, usando : "<<endl; cout<<"---------------------"<<endl; cout <<"el nombre de la variable x = "<<x<<endl; cout <<"el nombre del puntero y operador* *p = "<<*p<<endl; cout <<"La direccion de x, usando : "<<endl; cout<<"---------------------------"<<endl; cout <<"el nombre del puntero p = "<<p<<endl; cout <<"el operador & &x = "<<&x<<endl; cout <<"La direccion del puntero p, usando : "<<endl; cout<<"------------------------------------"<<endl; cout <<"el operador & &p = "<<&p<<endl; *p = 12.76; // se cambia el contenido de x (variable apuntada) // alternativa : x = 12.76; cout <<"El valor de x, usando : "<<endl; cout<<"---------------------"<<endl; cout <<"el nombre de la variable x = "<<x<<endl; cout <<"el nombre del puntero y operador* *p = "<<*p<<endl; cout <<"La direccion de x, usando : "<<endl; cout<<"---------------------------"<<endl; cout <<"el nombre del puntero p = "<<p<<endl; cout <<"el operador & &x = "<<&x<<endl; cout <<"La direccion del puntero p, usando : "<<endl; cout<<"------------------------------------"<<endl; cout <<"el operador & &p = "<<&p<<endl; getch(); }
PROBLEMA 2:
/**************************************************************************** Archivo : PuntAEnt.cpp Objetivo: Usar punteros a enteros Autor : Gladys Garcia ******************************************************************************/ // Nota : El puntero a entero apunta a diferentes enteros // Varia la direccion de los enteros, pero del puntero no // Librerias C++ #include<iostream.h> #include<conio.h> void main() { // se declaran las variables enteras a y b y el puntero a enteros int a = 10, b = 20, *p; p = &a; //asigna a la variable puntero p la dirección de a cout << "a = " << a << endl; cout << "&a = " << &a << endl; cout << "p = " << p << endl; cout << "&p = " << &p << endl; cout <<endl; p = &b; //asigna a la variable puntero p la dirección de b cout << "b = " << b << endl; cout << "&b = " << &b << endl; cout << "p = " << p << endl; cout << "&p = " << &p << endl; getch(); }
PROBLEMA 3:
/************************************************ Archivo : PuntArray.cpp Tema : Punteros - Punteros y Arrays Objetivo: Usar aritmetica de punteros Autor : Ing. Gladys Garcia **************************************************/ // Un valor integral 1 añadido a un puntero no significa "añadir 1 a la dirección" // sino "ajustar el puntero al próximo objeto del array #include<iostream.h> #include<iomanip.h> #include<conio.h>
void main() { int ANotas[5],i; // Array de int int *pA; pA = ANotas; // puntero a Array ANotas // a pA se le asigna la direccion del primer elemento del array for( i = 0; i < 5; i=i+1 ) { cout<<"nota : ";cin>>*pA; // asigna a la variable apuntada // el valor ingresado por teclado pA = pA + 1; // el puntero pA apunta al siguiente elemento del array } pA = ANotas; for( i = 0; i < 5; i=i+1 ) { cout<<setw(5)<<*pA; // asigna a la variable apuntada // el valor ingresado por teclado pA = pA + 1; // el puntero pA apunta al siguiente elemento del array } cout << endl; getch(); }
PROBLEMA 4 vector dinámico: #include<iostream.h> #include<conio.h> #include<iomanip.h> void main() { int *pnum; // puntero que representa al vector dinamico int n; // numero de elementos del vector int i; // contador para recorrer el VECTOR cout<<"n = ";cin>>n; // tamaño del vector pnum = new(int[n]); // reserva memoria cout<<"Ingrese el array de "<<n<<" elementos: "<<endl; for (i=0; i<n;i++) { cin>>*(pnum+i); // ingresa los elementos del array }
cout<<endl<<"El array leido es : "<<endl; for (i=0; i<n;i++) { // muestra los elementos del vector cout<<setw(10)<<*(pnum+i); } cout<<endl; getch(); }
PROBLEMA 5:
#include<iostream.h> #include<conio.h> #include<stdio.h> struct persona { char nombre[30]; int edad; int dni; float peso; }; void main() {
persona per1; // Ingresa datos de la variable per1 cout<<"Nombre: "<<endl; gets(per1.nombre); cout<<"Edad: ";cin>>per1.edad; cout<<"dni = ";cin>>per1.dni; cout<<"peso = ";cin>>per1.peso; // muestra los datos de la variable per1 cout<<endl<<"Los datos son:"<<endl; cout<<per1.nombre<<endl; cout<<per1.edad<<endl; cout<<per1.dni<<endl; cout<<per1.peso<<endl; getch(); }
PROBLEMA 6:
#include<iostream.h> #include<conio.h> struct Punto { float x; float y; }; void main() { Punto Pto1 = {1.5,2.0}; // C++ permite declarar e inicializar int i; // una variable de estructura Punto APto[3]; // muestra los datos de Pto1: cout<<"la abscisa = "<<Pto1.x<<endl; cout<<"la ordenada = "<<Pto1.y<<endl; // Crea el array de puntos: for(i=0;i<3;i=i+1) { cout<<"x = ";cin>>APto[i].x; cout<<"y = ";cin>>APto[i].y; } for(i=0;i<3;i=i+1) { cout<<"(x,y) "<<APto[i].x<<" , "<<APto[i].y<<endl; } getch(); }
PROBLEMA 7
#include<iostream.h> #include<conio.h> #include<stdio.h> struct persona { char nombre[30]; int edad; int dni; float peso; }; void LeerStruct(persona& S) { cout<<"Nombre: "<<endl; gets(S.nombre); cout<<"Edad = ";cin>>S.edad; cout<<"dni = ";cin>>S.dni; cout<<"peso = ";cin>>S.peso; } void MostrarStruct(persona& S) { cout<<"Nombre: "<<S.nombre<<endl; cout<<"Edad : "<<S.edad<<endl; cout<<"dni : "<<S.dni<<endl; cout<<"peso : "<<S.peso<<endl; } void main() { persona per1; LeerStruct (per1); cout<<endl<<"Los datos son:"<<endl; MostrarStruct (per1); getch(); }
PRACTICA CALIFICADA NRO 2 DE ALGORITMOS AVANZADOS ISI 21
1. En una cadena de almacenes de bebidas gaseosas, el programador almacena en una matriz la cantidad de cajas adquiridas CANT en el mes de Agosto en las 5 tiendas, en 10 variedades de gaseosas. Se pide hacer los siguientes algoritmos: a) Para calcular la cantidad de cajas adquiridas por cada tienda CCPT b) La cantidad de cajas de cada variedad de producto en las 5 tiendas CCPP. C) Hacer este reporte para un numero de tienda indicando, el nombre de la tienda y la cantidad de cajas adquiridas de cada tipo de producto.
CANT
Productos CCPT Tiendas Num 1 2 3 .... 10 xxxxxxx 1
... ... ... ... ... ... ... xxxxxxx 5 ... ... ... ... ... CCPP
1. Para i 1 Hasta i 5 Para j 1 Hasta j 8 LEER CANT [i , j] Fin Para
Fin Para 2. Para i 1 Hasta i 5
LEER Tiendas [i] Fin Para
a) 3. Para i 1 Hasta i 5 CCPT[i] 0 Para j 1 Hasta j 8 CCPT [ I ] CCPT [ I ] + CANT [i , j] Fin Para
Fin Para 4. Para i 1 Hasta i 5
MOSTRAR CCPT [ I ] Fin Para
b) 5. Para j 1 Hasta j 8 CCPP[ j ] 0 Para i 1 Hasta i 8 CCPP[ j ] CCPP[ j ] + CANT [ i , j ] Fin Para
Fin Para 6. Para j 1 Hasta j 5
MOSTRAR CCPP[ j ] Fin Para
c) 7. LEER i
8. MOSTRAR Tiendas[ i ] 9. Para j 1 Hasta j 8
MOSTRAR CANT [i , j] Fin Para
2. Hacer un algoritmo que permita determinar:
a) La nota final de 35 alumnos del curso de métodos numéricos. Si cada alumno tiene 3 rubros: de practicas, 1 examen parcial y un examen final.
La nota se calcula mediante el promedio aritmético de:los tres rubros: R1 de prácticas; R2 de examen parcial y R3 del examen final (de peso 2)
. Usar matriz NOTAS
Considerando tres arrays paralelos:
1. Para i 1 Hasta i 35 LEER R1[ i ], R2[ i ], R3[ i ]
Fin Para 2. Para i 1 Hasta i 35
NF[i] ( R1[ i ] + R2[ i ] + 2 * R3[ i ] )/4 Mostrar NF[i]
3. Fin Para Otra MANERA de hacerlo. Considerando la matriz de 35X3
1. Para i 1 Hasta i 35 Para j 1 Hasta j 3
LEER Notas[ i , j ] Fin Para Fin Para
2. Para i 1 Hasta i 35 SNF[ i ] 0 Para j 1 Hasta j 3
SNF[ i ] SNF[ i ] + Notas[ i , j ] Fin Para SNF[ i ] SNF[ i ] + Notas[ i , 3 ] NF[ i ] SNF[i] / 4 Fin Para
3. Dada los arrays paralelos que guardan los datos de 200 alumnos de Alas
Peruanas Cod IngresoFam Categ
... .... ...
.... .... .... Hacer un algoritmo que permita : a) Ordenar en orden ascendente según la categoria (de menor a mayor ) y
mostrar dichos arrays ya ordenado b) Mostrar cuanto paga el alumno de mayor categoría y el de menor
categoría, teniendo en cuenta que solo existen las categorías A, B y C que paga respectivamente el 20% del Ingreso Familiar, 15% y 10%
1. Para i 1 Hasta i 200
LEER Cod[ i ] , IngresoFam[ i ], Categ[ i ] Fin Para
3. Para i 1 Hasta i 199 Para j 1 Hasta j 200 - k
SI ( Categ[ j ] > Categ[ j + 1] ) ENTONCES
AuxC Cod[ j ] AuxI IngresoFam[ j ] AuxCat Categ[j] Cod[ j ] Cod [j+1] IngresoFam[ j ] IngresoFam[ j +1] Categ[ j ] Categ[ j + 1] Cod[ j + 1] AuxC IngresoFam[ j + 1] AuxI Categ [j+1] AuxCat
Fin Para Fin Para
2. Para i 1 Hasta i 200 MOSTRAR Cod[i], IngresoFam[i], Categ[i]
Fin Para 4. Un amigo es gerente de personal de una cadena de almacenes, y nos pedido que le ayudemos a desarrollar un algoritmo que analice el archivo maestro de nominas, que tiene un registro por cada empleado con los siguientes datos: codigo del empleado, nombre, codigo del departamento(1,2,3,4); codigo de la sucursal (1,2), codigo de sección (Ropa, Abarrotes, Lacteos), sueldo mensual, tipo de empleado (1 activo, 2 retirado, y 3 licencia). En el analisis se pide un informe de lo siguiente: a) El total de empleados activos en cada uno de los siguientes rangos de sueldos: menos de 1500; entre 1500 y 2500, entre 2500 y 4000 ; y mas de 4000 . b) El numero de empleados activos, el numero de empleados con licencia. c) Los codigos y nombres de los empleados del departamento 1
Entero NroEmpAct, NumEmpLic, EmpR1, EmpR2, EmpR3, EmpR4 Entero CodEmp, CodDpto, CodSuc, CodSec Cadena nomb,
1. NroEmpAct 0, NumEmpLic 0, 2. EmpR1 0, EmpR2 0, EmpR3 0, EmpR4 0 3. LEER CodEmp
4. MIENTRAS ( CodEmp 999 ) a) LEER Nomb, CodDpto, CodSuc, CodSec, Sueldo, TipoEmp. b) Si (TipoEmp = 1)
ENTONCES NroEmpAct NroEmpAct + 1 SI (Sueldo < 1500) ENTONCES EmpR1 EmpR1 + 1 SINO
SI (Sueldo <= 2500) ENTONCES EmpR2 EmpR2 + 1 SINO
SI (Sueldo <= 4000) ENTONCES EmpR3 EmpR3 +1 SINO EmpR4 EmpR4 + 1
FIN SI SINO
SI (TipoEmp = 3) ENTONCES NumEmpLic NroEmpAct + 1 FIN SI
FIN SI c) SI (CodDpto = 1)
ENTONCES MOSTRAR CodEmp, nomb FIN SI
d) LEER CodEmp FIN MIENTRAS
5. MOSTRAR NroEmpAct, NumEmpLic, EmpR1, EmpR2, EmpR3, EmpR4 FIN
Ing. Gladys Garcia V. . PRACTICA CALIFICADA NRO 2 DE ALGORITMOS AVANZADOS ISI 22 1. Dada los arrays paralelos que guardan los datos de 200 alumnos de Alas Peruanas
Cod PromP Cat ... .... ... .... .... .... Hacer un algoritmo que permita : a) Ordenar en orden descendente según el promedio ponderado (de mayor a menor
) y mostrar dichos arrays ya ordenado b) Mostrar el codigo, categoría y Promedio ponderado del primer lugar y del ultimo
lugar ALGORITMO ORDEN 1. Para i 1 Hasta i 200
LEER Cod[i] , PromP[i] , Cat[i] Fin Para
2. Para k 1 Hasta k 199 a. Para j 1 Hasta j 200 – k
Si ( Si PromP [j] < PromP [j+1] ) Entonces AuxPP PromP [j] AuxCod Cod[j] AuxCat Cat [j] PromP[j] PromP [j+1]
Cod [j] Cod [j+1] Cat [j] Cat [j+1] PromP [j+1] AuxPP Cod [j] AuxCod Cat [j+1] AuxCat
Fin Si Fin Para Fin Para
3. Para i 1 Hasta i 200 MOSTRAR Cod[j] , PromP[j] , Cat[j] Fin Para
4. MOSTRAR “Mejor promedio ponderado “ , Cod[1] , PromP[1] , Cat[1] MOSTRAR “Ultimo en promedio ponderado “, Cod[200] , PromP[200] , Cat[200]
FIN 2. Sea el array SUELDO de tamaño 30 que almacena los sueldos de los empleados de
una empresa. Otro array paralelo NOMB almacena sus nombres. Hacer un algoritmo para calcular: a) El numero de empleados que gana mas de 2500 soles. b) La cantidad de dinero que la empresa invierte en dolares suponiendo que el cambio es de 3.48 soles (considerelo como constante) c) El nombre del empleado que gana mas en la empresa (pueden ser varios). d) Considere que los sueldos van a ser reajustados, aumentando en un 20% a todos los empleados que ganan menos de 1200 soles y del 5% a todos los que ganan 1200 o mas.
ALGORITMO EMPLEADOS INICIO Cadena nomb [30] Real Sueldo[30] , SSueldoDol Entero NumEmp25 1. NumEmp25 0 2. SsueldoDol 0 2. PARA I = 1 HASTA I = 30 LEER nomb[ i], sueldo[ i] FIN PARA 3. PARA I = 1 HASTA I = 30 SI ( Sueldo [ i ] > 2500 ) ENTONCES NumEmp25 NumEmp25 + 1 FIN SI FIN PARA 4. PARA I = 1 HASTA I = 30 SsueldoDol SsueldoDol + sueldo[i] / 3.48
FIN PARA 5. MaxSueldo sueldo[1] 6. PARA I = 2 HASTA I = 30 SI (sueldo [ i ] > MaxSueldo )
ENTONCES Maxueldo sueldo [ i ]
FIN SI FIN PARA 7. PARA I = 2 HASTA I = 30 SI (sueldo [ i ] = MaxSueldo )
ENTONCES MOSTRAR nomb[i]
FIN SI FIN PARA 8. PARA I = 1 HASTA I = 30 SI (sueldo [ i ] < 1200 )
ENTONCES sueldo[i] sueldo[i] * 0.20
SINO sueldo[i] sueldo[i] * 0.05
FIN SI FIN PARA FIN 3. En una farmacia se venden m=350 productos y se trabaja con n=10 laboratorios. En
una matriz INVINIC se guardan los datos de la cantidad de productos en cada laboratorio que existen al inicio de la semana. En una matriz PROVEE se guardan la cantidad de productos de cada laboratorio que se compran en el transcurso de la semana y en la matriz VENTA se guardan la cantidad de productos de cada laboratorio que se venden hasta el fin de semana. Hacer un algoritmo que me permita leer las matrices, mostrar las matrices y calcular la matriz INVFINAL que guarde la cantidad de productos de cada laboratorio al cierre de la semana
ALGORITMO FARMACIA INICIO
1. Para i 1 Hasta i 350 Para j 1 Hasta j 10 LEER INV_INC [i , j] Fin Para
Fin Para 2. Para i 1 Hasta i 350
Para j 1 Hasta j 10 LEER PROVEE [i , j] Fin Para
Fin Para 3. Para i 1 Hasta i 350
Para j 1 Hasta j 10 LEER VENTA [i , j] Fin Para
Fin Para 4. Para i 1 Hasta i 350
Para j 1 Hasta j 10 INVFIN [i , j] INV_INC [i , j] + VENTA [i , j] Fin Para
Fin Para 5. Para i 1 Hasta i 350
Para j 1 Hasta j 10 MOSTRAR INV_FIN [i , j] Fin Para
Fin Para FIN 4. Analizar un archivo del inventario semanal de una empresa, el mismo que contiene la siguiente información: código del producto, nombres, cantidad de unidades existentes, cantidad de unidades mínimas, costo unitario, precio unitario de venta, por cada registro. Hacer un algoritmo que permita hacer el siguiente informe: a) Los códigos, nombres , cantidad a pedir , costo parcial de cada producto cuya cantidad de unidades existentes es menor a la cantidad mínima, teniendo en cuenta que la cantidad a pedir = cantidad mínima - cantidad de unidades existentes costo parcial = costo unitario * cantidad a pedir. b) El capital invertido en cada producto, y la ganancia de vender cada producto que hay en existencias; asimismo calcular el capital total que la empresa tiene invertido en sus productos y la ganancia total de vender todos los productos que hay en existencias. codigo nombre capital invertido ganancia potencial 999 XXX 99999.99 9999.99 ... ... ... .... 999 XXX 99999.99 9999.99 ------------- ----------- 999999.99 99999.99 capital invertido = costo unitario * unidades en existencias ganancia potencial = (precio unitario - costo unitario)* unidades en existencia ALGORITMO INVENTARIOSEMANAL INICIO Entero codProd, nomPro, CantExis, CanMin, Real CosUni, PreUniVen
1. LEER CodProd 2. SCapInv 0 3. SGanPot 0
4. MIENTRAS (CodProd 999) A) LEER nomPro, CantExis, CanMin, CosUni, PreUniVen B) SI (CantExis < CanMin )
ENTONCES CanPedir CanMin – CanPedir CosParcial CanPedir * CosUni
FIN SI C) CapInv CantExis * CosUni D) GanPot CantExis * (PreUniVen - CosUni) E) MOSTRAR CosProd, NomPro, CapInv, GanPot F) SCapInv ScapInv + CapInv G) SGanPot SganPot + GanPot H) LEER CodProd
FIN MIENTRAS 5. MOSTRAR SCapInv , SGanPot
FIN Ing. Gladys Garcia Vilcapoma
SEGUNDA PRACTICA CALIFICADA DE ALGORITMOS AVANZADOS 23
UNIVERSIDAD ALAS PERUANAS 1. Hacer un algoritmo que permita a) crear un array bidimensional de goles anotados por
los 5 equipos que participan en un campeonato Relámpago, jugando de ida y vuelta. Es
decir el Array GOLES es de 5 x 8. b) Crear el array paralelo con los nombres de los
equipos que participan. C) Calcular el numero de goles anotados por cada equipo. D)
Teniendo en cuenta que cada equipo juega un partido por semana. Calcular el numero de
goles anotados en cada semana E) Ingresado por teclado el numero de un equipo Mostrar
su nombre , el numero de goles anotados en cada semana y el numero de goles totales en el
campeonato. F) Ingresado por teclado un numero de semana el algoritmo debe mostrar el
reporte :
Equipo Nro de goles .... .... .... ....
Total goles (6 puntos)
GOLES Partidos GolPEqui NomEqui NumEqui 1 2 3 .... 8 Alianza 1
2 ... ... Unioversitario 5 GolPP
a) 1. Para i 1 Hasta i 5 Para j 1 Hasta j 8 LEER GOLES [i , j] Fin Para
Fin Para b) 2. Para i 1 Hasta i 5
LEER NomEqui [i] Fin Para
c) 3. Para i 1 Hasta i 5 GolPEqui[i] 0 Para j 1 Hasta j 8 GolPEqui[i] GolPEqui[i] + GOLES [i , j] Fin Para
Fin Para
4. Para i 1 Hasta i 5 MOSTRAR GolPEqui[i]
Fin Para d) 5. Para j 1 Hasta j 8
GolPP[ j ] 0 Para i 1 Hasta i 8 GolPP[ j ] GolPP[ j ] + GOLES [ i , j ] Fin Para
Fin Para 6. Para j 1 Hasta j 5
MOSTRAR GolPP[ j ] Fin Para
e) 7. LEER i 8. MOSTRAR NomEqui[ i ] 9. Para j 1 Hasta j 8
MOSTRAR GOLES [i , j] Fin Para 10. LEER j 11. Para i 1 Hasta i 5
MOSTRAR NomEqui[ i ], GOLES [i , j] Fin Para 12. MOSTRAR GolPP[ j ]
2. Dados dos arrays paralelos en los que se almacenan los nombres y la
ventas en soles durante el mes de Abril 2001 de los 20 vendedores de una empresa. Hacer los siguientes algoritmos: a) Calcule las ventas totales en la empresa. B) Calcule y muestre el sueldo de cada vendedor, teniendo en cuenta lo siguiente:
Ventas Monto Fijo Comisión Menos de 4000 200 8% de ventas ( 5 puntos) 4000 a 10000 350 10% de ventas mas de 10000 450 14% de ventas Sueldo = Monto Fijo + Comisión C) Hacer el algoritmo que muestre el mínimo sueldo y a que vendedor(es) corresponde. d) Determinar cuantos y que vendedores tuvieron ventas menores de 5000.
NomVen: 1 2 ... 20 Ventas 1 2 ... 20
1. Para i 1 Hasta i 20 LEER NomVen[ i ], Ventas[ i ]
Fin Para a) 2. SumVen 0
3. Para i 1 Hasta i 20 SumVen SumVen + Ventas [ i ]
Fin Para b) 4. Para i 1 Hasta i 20
Si ( Ventas [ i ] < 4000 ) Entonces Sueldo [ i ] 200 + T1* Ventas[ i ] Sino Si ( Ventas [ i ] < 10000 )
Entonces Sueldo [ i ] 350 + T2 * Ventas[ i ]
Sino Sueldo [ i ] 450 + T3 * Ventas[ i ] Fin Si Fin Si
Fin Para c) 5. MinS Sueldo[ 1 ]
6. Para i 2 Hasta i 20 SI ( Sueldo [ i, j] < MinS ) Entonces MinS Sueldo [i,j] Fin Si Fin Para
7. Para i 1 Hasta i 20 SI ( Sueldo [ i, j] = MinS ) Entonces MOSTRAR NomVen[i] Fin Si Fin Para d) 8. NumVen 0
9. Para i 1 Hasta i 20 Si ( Ventas [i] < 5000 ) Entonces NumVen NumVen + 1 Fin Si
Fin Para FIN
3. Dados los arrays paralelos con los nombres y sueldos de los 30 empleados de una empresa. Hacer un algoritmo que ordene dichos arrays por sueldos en orden descendente. Finalmente el algoritmo también debe mostrar los nombres y sueldos de los empleados que ganan menos y mas en la empresa. ( 4 puntos)
1. Para i 1 Hasta i 30
LEER Nombre[i], Sueldo[i] Fin Para
2. Para k 1 Hasta k 29 a. Para j 1 Hasta j 30 – k
Si ( Si Sueldo [j] < Sueldo[j+1] ) Entonces AuxS Sueldo[j] AuxN Nombre[j] Sueldo[j] Sueldo [j+1]
Nombre[j] Nombre [j+1] Sueldo[j+1] AuxS Nombre[j] AuxN
Fin Si Fin Para Fin Para
3. Para i 1 Hasta i 30 MOSTRAR Nombre [i], Sueldo[i] Fin Para
b) 4. MOSTRAR “Gana Mas “ , Nombre[1] 4. MOSTRAR “Gana Menos “ , Nombre[30]
4. Producir un resumen de ventas que una empresa hizo durante cada mes del año. Se debe leer de una cinta que tiene en cada registro la siguiente información: codigo del vendedor, codigo del articulo, mes de la transacción, valor. Los registros no estan clasificados y toda la información ya fue validada en otro programa.
El reporte que se pide es el siguiente: Ventas mensuales: Mes Valor real de las ventas 99 9999.99
NOTA la lectura de registros termina con codigo de vendedor FIN Guarde en una array VENTAS [12] el valor real de las ventas de cada mes
99 9999.99 .... .... 99 9999.99
1. LEER CodV 2. Para i 1 Hasta i 12
Ventas[i] 0 Fin Para
3. MIENTRAS (CodV <> 9999) a. LEER CodA, Nromes, Valor b. En CASO (Nromes ) SEA
1 : Ventas [i] Ventas[i] + Valor 2 : Ventas [i] Ventas[i] + Valor
12 : Ventas [i] Ventas[i] + Valor
FIN CASO FIN MIENTRAS
4. Para i 1 Hasta i 12 a. MOSTRAR i , Ventas[i]
Fin Para FIN PRACTICA CALIFICADA NRO 2 DE ALGORITMOS DE ISI 24
1. Se tiene una tienda que vende polos, en una array bidimensional se almacena la
cantidad de polos por tallas y colores: Rojo Azul Verde Blanco Negro Amarillo PreUni CapInv
CANT Junior …. …. 99.99 999.99 Small …. …. … ... Médium …. …. .. ... Large …. …. …. ... XL …. …. ... ... Calcular: a) Cantidad de polos por tallas. b) Cantidad de polos por colores, c) Los polos Blanco y negro son de mayor demanda, hacer un pedido si las existencias son menores a un mínimo de 50 polos d) Los precios de los polos varian por tallas, determinar de acuerdo a las existencias, cual es el capital que la empresa tiene invertido en cada talla y el total en mercadería. e) en que talla se tiene invertido el mayor capital. SOLUCION
CANT Colores CPPT PreUni CapInv Tallas Num 1 2 3 .... 6 xxxxxxx 1
... ... ... ... ... ... ... xxxxxxx 5 ... ... ... ... ... CCPC
1. Para i 1 Hasta i 5 Para j 1 Hasta j 6 LEER CANT [i , j] Fin Para
Fin Para a) 2. Para i 1 Hasta i 5
CCPT[i] 0 Para j 1 Hasta j 6 CCPT [ i ] CCPT [ i ] + CANT [i , j] Fin Para
Fin Para 3. Para i 1 Hasta i 5
MOSTRAR CPPT [i] Fin Para
b) 4. Para j 1 Hasta j 6
CCPC[ j ] 0 Para i 1 Hasta i 5 CCPC[ j ] CCPC[ j ] + CANT [ i , j ] Fin Para
Fin Para 3. Para i 1 Hasta i 5
MOSTRAR CCPC [ i ] Fin Para
c) 4. Para i 1 Hasta i 5 Para j 5 Hasta j 5 Si ( CANT [ i] < 50 ) ENTONCES
Ped 50 - CANT [ i] MOSTRAR Ped
FIN SI Fin Para
Fin Para d) 6. Para i 1 Hasta i 5
LEER PreUni [ i ] Fin Para 7. ScapInv 0
8. Para i 1 Hasta i 5 CapInv [i] CPPT[i]* PreUni [ i ] ScapInv ScapInv + CapInv [i]
Fin Para 9. MOSTRAR ScapInv
e) 10 MayCap CapInv[1] 11. Para i 2 Hasta i 5
Si (CapInv[i] > MayCap ) ENTONCES MayCap CapInv[i] FIN SI
Fin Para 12. Para i 1 Hasta i 5
Si (CapInv[i] = MayCap ) ENTONCES MOSTRAR i FIN SI
Fin Para FIN 2. Dada los arrays paralelos que guardan los datos de 200 alumnos de Alas
Peruanas Cod PromP Cat ... .... ... .... .... .... Hacer un algoritmo que permita :
a) Ordenar en orden ascendente según el promedio ponderado (de menor a mayor ) y mostrar dichos arrays ya ordenado
b) Mostrar el codigo, categoría y Promedio ponderado del primer lugar y del ultimo lugar
ALGORITMO ALUMNOS INICIO
1. Para i 1 Hasta i 30 LEER Cod[i] , PromP[i] , Cat[i] Fin Para
2. Para k 1 Hasta k 199 a. Para j 1 Hasta j 200 – k
Si ( Si PromP [j] > PromP [j+1] ) Entonces AuxPP PromP [j] AuxCod Cod[j] AuxCat Cat [j] PromP[j] PromP [j+1]
Cod [j] Cod [j+1] Cat [j] Cat [j+1] PromP [j+1] AuxPP Cod [j] AuxCod Cat [j+1] AuxCat
Fin Si Fin Para Fin Para
3. Para i 1 Hasta i 200 MOSTRAR Cod[j] , PromP[j] , Cat[j] Fin Para
4. MOSTRAR “Menor promedio ponderado “ , Cod[1] , PromP[1] , Cat[1] MOSTRAR “Mejor promedio ponderado “, Cod[200] , PromP[200] , Cat[200]
FIN 3. Dados los arrays paralelos con los nombres de Curso, Creditos y Notas obtenidas en
cada uno de los 50 cursos, que un alumno de Alas Peruanas lleva para completar su
carrera. Se pide calcular el promedio ponderado del alumno, teniendo en cuenta que
este se halla asi : Creditos*Nota / ( creditos)
ALGORITMO CURSOS
INICIO
ENTERO creditos[50] , nota[50]
Real PromPon
1. Para i 1 Hasta i 50
LEER creditos[i], nota[i]
FIN PARA
2. Screnot 0
3. Scred 0
4. Para i 1 Hasta i 50
ScreNota ScreNot + creditos[i] * nota[i]
Scred Scred + creditos[i]
5. FIN PARA
6. PromPond ScreNota / Scred
7. MOSTRAR PormPond
FIN
4. Un amigo es gerente de personal de una cadena de almacenes, y nos pedido que le ayudemos a desarrollar un algoritmo que analice el archivo maestro de nominas, que tiene un registro por cada empleado con los siguientes datos: codigo del empleado, nombre, codigo del departamento(1,2,3,4); codigo de la sucursal (1,2), codigo de sección (Ropa, Abarrotes, Lacteos), sueldo mensual, tipo de empleado (1 activo, 2 retirado, y 3 licencia). En el analisis se pide un informe de lo siguiente: a) El total de empleados activos en cada uno de los siguientes rangos de sueldos: menos de 1500; entre 1500 y 2500, entre 2500 y 4000 ; y mas de 4000. b) El numero de empleados activos, el numero de empleados con licencia. c) Los codigos y nombres de los empleados del departamento 1
ALGORITMO
PRIMERA PRACTICA Semana 09-14 Abril
Solucionario ISI 21
1. Solucion al problema 1 ALGORITMO Encuesta
INICIO
Entero N, VotHabFem, VotHabMas, AñoAct , AñoNacNum, Edad
Cadena FechNac, AñoNacCad
Carácter Cond, Sexo
Real PorcVotHabMas, PorcVotHabFem
1. VotHabFem 0
2. VotHabMas 0
3. LEER AñoAct
4. LEER N
5. PARA i = 1 HASTA i = N
LEER FechNac, Cond, Sexo
AñoNacCad SUBCADENA ( FechNac, 7,4)
AñoNacNum CadNum (AñoNacCad)
Edad AñoAct – AñoNacNum
Si (Edad >= 18 )
ENTONCES
Si (Sexo = „M‟ )
ENTONCES
Si ( Cond = „C‟)
ENTONCES
VotHabMas VotHabMas + 1
FINSI
SINO
Si ( Cond = „C‟)
ENTONCES
VotHabFem VotHabFem + 1
FINSI
FIN SI
FIN SI
PorcVotHabMas (VotHabMas/ N) *100
PorcVotHabFem (VotHabFem/ N) *100
6. MOSTRAR VotHabMas, VotHabMas
7. MOSTRAR PorcVotHabMas, PorcVotHabFem
FIN
2. Solución al problema 2 ALGORITMO BODEGA
INICIO
Entero P100, P50, P20, P10, P5, Unid
Real MontoPag
LEER NKg
P100 NKg DIV 100
NKg NKg MOD 100
P50 NKg DIV 50
NKg NKg MOD 50
P20 NKg DIV 20
NKg NKg MOD 20
P10 NKg DIV 10
NKg NKg MOD 10
P5 NKg DIV 5
NKg NKg MOD 5
Unid NKg
MOSTRAR P100, P50, P20, P10, P5, Unid
MontoPag P100*200.00 + P50*190.00 + P20*38.00 + P10*19.00 + Unid*2.20
MOSTRAR MontoPag
FIN
3. Corrida
N i Nombre NroCr
ed
Categ PagoC
red
PagoC
iclo
NroA
LumC
atA
NroA
LumC
atB
NroA
LumC
atC
SumP
agoCi
clo
0 0 0 0
3 1 Juan Silva 25 A 100 2500 1 0 0 2500
2 Rosa
Cespedes
22 C 70 1540 1 0 1 4040
3 Elena Rosas 20 B 90 1800 1 1 1 5840
4
4. Solución al problema 4
ALGORITMO Seguros
INICIO
Carácter Categ
Real MonMaxAse, MonCub, MontoD, Dauto, Dter, Dpers
Cadena Nombre,
1. LEER Nombre, Categ, Dauto, Dter, Dpers
2. MontoD Dauto + Dter + Dpers
3. EN CASO Categ SEA
„A‟ : MonMaxAse 20000
MonCub 20000*0.9
„B‟ : MonMaxAse 10000
MonCub 10000*0.9
FIN CASO
4. SI (MontoD > MonCub)
ENTONCES
MOSTRAR “ No cubre el total de los daños“
MOSTRAR “Asegurado debe pagar “,MontoD – MonCub
SINO
MOSTRAR “Cubre el total del daño”
MOSTRAR Nombre, Dauto, Dter, Dpers. MontoD
FINSI
FIN
Solucionario isi 22
1. Solución al problema 1
ALGORITMO SUELDOS
INICIO
Real sueldo
Entero SueldoEnt
Const real t1=0.25, t2= 0.22, t3= 0.20 , t4=0.18
Ssueldos 0
Saum 0
Stotal 0
LEER N
PARA I = 1 HASTA I = N
LEER Codigo , Sueldo
SueldoEnt Truncar(Sueldo )
En CASO ( SueldoEnt ) SEA
< 1500 : Aum Sueldo * t1
1500.. 2500 : Aum Sueldo * t2
2501.. 4000 : Aum Sueldo * t3
>4000 : Aum Sueldo * t4
FIN CASO
Total Sueldo + Aum
SSueldos Sueldos + Sueldo
Saum Saum + Aum
Stotal Stotal + Total
MOSTRAR Codigo, Sueldo, Aum, total
FIN PARA
MOSTRAR Stotal
FIN
2. Solución al problema 2
ALGORITMO Numero
INICIO
Entero Num5Cif
1. LEER Num
2. u Num MOD 10
3. Num Num DIV 10
4. d Num MOD 10
5. Num Num DIV 10
6. c Num MOD 10
7. Num Num DIV 10
8. um Num MOD 10
9. Num Num DIV 10
10. dm Num
11. ninv u*10000 + d*1000 + c*100+ um+10+ dm
12. MOSTRAR ninv *2
FIN
3. Corrida ALGORITMO Prueba
INICIO
Entero Fac, i,n
Fac 1
LEER N
PARA i 2 HASTA i N
Fac Fac * i
FIN PARA
MOSTRAR Fac
FIN
N = 5 : Fac 120
N = 7 : Fac 720*7
ALGORITMO Prueba2
INICIO
Entero Fac, i,n , Sum
Sum 0
LEER N
PARA J 1 HASTA J 3
Fac 1
PARA i 2 HASTA i N
Fac Fac * i
FIN PARA
Sum Su + Fac
FIN PARA
MOSTRAR Sum
FIN
S = 1! + 2! + 3!
4. Solución al problema 4
ALGORITMO TRIANGULO
INICIO
Real a, b, c , alfa
Const real pi = 3.1416
1. LEER a, c
2. b sqrt ( a¨2 – c¨2 )
3. alfa arctan ( c/b)
4. alfaSex alfa *180/PI
5. seno c/a
6. coseno b/a
7. tangente c/b
8. secante 1/coseno
9. cosecante 1/seno
10. MOSTRAR b, alfa, seno, coseno, tangente, secante , cosecante
FIN
S olucionario isi 23
1. Solución al problema 1
ALGORITMO elecciones
INICIO
Entero NroVoTo, NroVoGa, NroVoBl, NroVoVi
Real PorcTo, PorcGar
1. NroVoTo 0 , NroVoGa 0 , NroVoBl 0 , NroVoVi 0
2. LEER n
3. PARA i = 1 HASTA i = n
LEER Voto
EN CASO Voto SEA
´T‟ : NroVoTo NroVoTo +1
„G‟ : NroVoGa NroVoGa +1
„B‟ : NroVoBl NroVoBl +1
„V‟ : NroVoVi NroVoVi +1
FIN CASO
FIN PARA
4. PorcTo ( NroVoTo/n ) *100
5. PorcGar ( NroVoGa/n )*100
6. SI ( NroVoTo > NroVoGa )
ENTONCES
MOSTRAR “Gano Toledo”
SINO
SI ( NroVotGa = NroVoTo)
ENTONCES
MOSTRAR “Empate”
SINO
MOSTRAR “Gano Garcia”
FIN SI
FIN SI
7. MOSTRAR NroVoTo, NroGa, NroVoVi, NroVoBl
FIN
2. Solución al problema 2 ALGORITMO FERRETERIA
INICIO
Entero P1000, P500, P200, P100
Real MontoPag
LEER N
P1000 N DIV 1000
N N MOD 1000
P500 N DIV 500
N N MOD 500
P200 N DIV 200
N N MOD 200
P100 N DIV 100
N N MOD 100
Unid N
MOSTRAR P1000, P500, P200, P100, Unid
MontoPag P1000*20.00 + P500*9.70 + P200*3.80 + P100*1.90 + Unid*0.02
MOSTRAR MontoPag
FIN
3. Corrida: Onservacion
Debe decir
SumSueldoBas 0
n i Nombre SuelBas Sbas Imp SumImp SumSuel
doBas
0 0 0
3 1 Julio Ramos 400.50 400 4.00 4.00 400.50
2 Ana Perez 750.70 750 37.50 41.50 1151.20
3 Rosa Carpio 1500.40 1500 225.00 266.50 2651.20
4
4. Solución al problema 4
.ALGORITMO Empleado
INICIO
Cadena Nombre, FechIng, AñoIngCad
Entero NroHijos, AñACt, AñoIngNum, AñosServ
Carácter EstCiv
Real Sbas, Bonif, SNeto
1. Bonif 0
2. LEER Nombre, FechIng, NroHijos, EstCiv, Sbas
3. LEER AñoAct
4. AñoIngCad SUBCADENA ( FechIng , 7,4)
5. AñIngNum CADNUM (AñoIngCad)
6. AñosServ AñoACt - AñoIngNum
7. En CASO EstCiv SEA
„S‟ : Bonif Bonif + Sbas* 0.01
„C‟ : Bonif Bonif + Sbas* 0.04
FIN CASO
8. EN CASO NroHijos SEA
0 : Bonif Bonif + 0
1 : Bonif Bonif + 40
2 .. 4 : Bonif Bonif + 30*NroHijos
SINO : Bonif Bonif + 150
. FIN CASO
9. EN CASO AñosServ SEA
0 : Bonif Bonif + 0
1.. 4 : Bonif Bonif + 20*AñosServ.
5.. 10 : Bonif Bonif + 30*AñosServ.
SINO : Bonif Bonif + 40*AñosServ.
FIN CASO
10. SNeto Sbas + Bonif
11. MOSTRAR Nombre, Sbas, SNeto
FIN
Solucionario isi 24 1. Solución al problema 1
ALGORITMO
INICIO
Cadena Codigo, Nombre
Carácter TipoEmp
Entero N
NempR1 0
NempR2 0
NempR3 0
NempR4 0
TempAct 0
1. LEER N
2. PARA i 1 HASTA i N
LEER codigo, Nombre, TipoEmp, Sueldo
Si (TipoEmp = 1)
ENTONCES
TempAct TempAct + 1
En CASO Truncar (Sueldo) SEA
< 1500 : NempR1 NempR1 + 1
1501..2500 : NempR2 NempR2 + 1
2501..5000 : NempR3 NempR3 + 1
> 5000 : NempR4 NempR4 + 1
FIN CASO
FIN SI
FIN PARA
3. MOSTRAR TempAct
4. MOSTRAR “< 1500 “ : NempR1
5. MOSTRAR “1501 .. 2500 “ : NempR2
6. MOSTRAR “2501 .. 5000 “ : NempR3
7. MOSTRAR “ >5000 “ : NempR4
FIN
2. Solución al problema 2 ALGORITMO
INICIO
Entero NroPas, P100, P50, P20, P10, P5
Real Monto ,
1. LEER NroPaS
2. P100 NroPas DIV 100
3. NroPas NroPas MOD 100
4. P50 NroPas DIV 50
5. NroPas NroPas MOD 50
6. P20 NroPas DIV 20
7. NroPas NroPas MOD 20
8. P10 NroPas DIV 10
9. NroPas NroPas MOD 10
10. P5 NroPas DIV 5
11. NroPas NroPas MOD 5
12. Unid NroPas
13. Monto P100 120 + P50*61 + P20*25 + P10*13+ P5*6.50 + Unid*1.4
14. MOSTRAR Monto
FIN
3. Simular la corrida de estos algoritmos: ALGORITMO FUNCIÓN
INICIO
PARA x 0 HASTA x 10
FX x¨3 + x¨2 - 5
FIN PARA
MOSTRAR X , FX
FIN
x FX
0 -5
1 -3
2 7
3 31
ALGORITMO
INICIO
Real C1, C2, C3 , CP
….
FIN
Nombre CP
Julio Preciado 9
Ada Lugo 15
Luis Cespedes 14
4. Solución al problema 4
ALGORITMO Cuentas
INICIO
Cadena Nombre, NroCta, FechaAper,
Real Saldo
Carácter TipoCta
1. LEER AñoAct
2. LEER Nombre, NroCta, FechaAper, Saldo, TipoCta
3. AñoAperNum CADNUM(SUBCADENA (FechaAper,7,4))
4. AñosServ AñoAct – AñoAperNum
5. EN CASO (AñosServ ) SEA
1.. 5 : Premio 50*AñosServ
6 .. 10 : Premio 100*AñosServ
> 10 : Premio 1400
FIN CASO
6. MOSTRAR Nombre, NroCta, Saldo, TipoCta, Premio
FIN