LABORATORIO NRO 2 – ARREGLOS UNIDIMENSIONALES ALGORITMOS AVANZADOS ING. GLADYS GARCIA V. PROBLEMA NRO 1. Objetivos : Crear y mostrar un arreglo unidimensional Usar variables contador, acumulador. Calcular máximos y mínimos Enunciado: En la biblioteca de la universidad, se hacen prestamos de libros que están clasificados en 8 grandes áreas. Se desea : a) Inicializar el arreglo Áreas, b) Leer el arreglo denominado CantLibros. c) Ingresado por teclado un índice, mostrar la cantidad de libros solicitados en el mes. d) Calcular la cantidad total de libros solicitados durante el mes. e) Mostrar un reporte Área y cantidad de libros de cada área solicitados durante el mes. y la cantidad total de libros solicitados durante el mes. Area CantLibros .... .... .... .... -----------...... f) Mostrar los índices de las áreas de menor demanda y la cantidad mínima de libros solicitados. g) Mostrar los nombres de las áreas de mayor demanda y la cantidad máxima de libros solicitados. Hacer el programa C++. Durante la corrida, Ingrese por teclado la siguiente información: Literatura Matemática Arte Historia Geografía Computación Filosofía Sistemas 250 237 310 411 520 160 239 501 0 1 2 3 4 5 6 7 // PROGRAMA C++ #include<iostream.h> #include<iomanip.h> #include<conio.h> void main() { int i,STotLib, CantLibros[8],Min,Max; // a) Inicializar Area char Area[8][20]= {"Literatura","Matematica","Arte","Historia","Geografia","Computacion","Filosofia","Sistemas"}; // b) Leer CantLibros cout<<"Ing. cantidad de libros solicitados:"<<endl; for( i= 0; i< 8; i = i+1) { cin>>CantLibros[i]; } // c) Ingresado i mostrar el area y la cantidad de libros cout<<"Ingrese indice : ";cin>>i; cout<<Area[i]<<" "<<CantLibros[i]<<endl; getch(); // pausa // d) Calcular el total de libros STotLib = 0; for(i=0;i<8;i=i+1) { STotLib = STotLib + CantLibros[i]; } // d) Mostrar Reporte cout<<setw(20)<<"Area"<<setw(20)<<"Cantidad Libros:"<<endl; cout<<"========================================= "<<endl; for(i=0;i<8;i=i+1) { cout<<setw(20)<<Area[i]<<" "<<setw(10)<<CantLibros[i]<<endl; } cout<<" Total de libros prestados: "<<STotLib<<endl; // e) Calcular el minimo y los indices del minimo Min = CantLibros[0]; for(i=1;i<8;i=i+1) { if ( CantLibros[i] <Min ) { Min = CantLibros[i]; } } for(i=0;i<8;i=i+1) { if ( CantLibros[i] == Min ) { cout<<i<<" "; } } cout<<endl<<"Minimo = "<<Min<<endl; // f) Encontrar el maximo y en que area se da Max = CantLibros[0]; for ( i = 1; i<8; i = i+1) { if ( CantLibros[i] > Max ) Max = CantLibros[i]; } for(i=0;i<8;i=i+1) { if ( CantLibros[i] == Max ) { cout<<Area[i]<<" "; } } cout<<endl<<"Maximo = "<<Max<<endl; getch(); } b) Leer el arreglo CantLibros c) Leer índice, i Mostrar CantLibros[i] d) Calcular la cantidad total de libros solicitados durante el mes. e) Mostrar un reporte Área y cantidad de libros de cada área solicitados durante el mes. y la cantidad total de libros solicitados durante el mes. f) Mostrar los índices de las áreas de menor demanda y la cantidad mínima de libros solicitados. g) Mostrar los nombres de las áreas de mayor demanda y la cantidad máxima de libros solicitados. PROBLEMA NRO 2. Objetivos: Inicializar, crear y mostrar un arreglo unidimensional Usar acumulador de elementos de un arreglo unidimensional Multiplicar un arreglo unidimensional por un escalar Multiplicar dos arreglos unidimensionales Enunciado: En una empresa que comercializa 10 variedades de productos derivados del petróleo, al encargado de la programación, se le ha solicitado inicializar en un arreglo unidimensional los precios por galones de cada uno de sus productos. Hacer un algoritmo que permita: a) Modificar dichos precios debido a la economía inestable, aplicando una tasa que debe ser declarada constante. Los precios se incrementan.. b) Hacer un reporte con los nuevos precios/ galón. c) Leer el arreglo paralelo con la cantidad de galones vendidos en el día, de cada uno de sus productos. y calcular la venta respectiva en soles de cada producto. d) Mostrar un reporte con los nuevos precios , las ventas en galones y las ventas en soles. PrecioGal 5.6 7.8 8.5 8.9 2.6 1.7 2.3 6.7 1.9 2.4 0 1 2 3 4 5 6 7 8 9 120 200 300 270 453 400 540 235 321 GalVend 100 VenSoles 588 Programa C++ #include<iostream.h> #include<iomanip.h> #include<conio.h> #include<stdlib.h> // system("cls") void main() { double precioGal[10]= {5.6, 7.8, 8.5, 8.9 , 2.6, 1.7, 2.3, 6.7, 1.9, 2.4}; double GalVend[10], VenSoles[10]; int i; const double tasa = 0.05; // a) Calcular los nuevos precios del dia for(i=0;i<=9;i=i+1) { precioGal[i] = precioGal[i]*1.05; } // b) Reporte con los nuevos precios for(i=0;i<=9;i=i+1) { cout<<precioGal[i]<<" "; } // c) Leer GalVend cout<<endl<<"Ingrese el arreglo de ventas en galones : "<<endl; for(i=0;i<=9;i=i+1) { cin>>GalVend[i]; } for(i=0;i<=9;i=i+1) // Calcular VenSoles { VenSoles[i] = precioGal[i]*GalVend[i]; } system("cls"); // clrscr() // d) Mostrar reporte for(i=0;i<=9;i=i+1) { cout<<setw(10)<<precioGal[i]<<setw(10)<<GalVend[i]<<setw(10)<<VenSoles[i]<< endl;} getch(); } a) Modificar dichos precios debido a la economía inestable, aplicando una tasa que debe ser declarada constante. Los precios se incrementan.. b) Hacer un reporte con los nuevos precios/ galón. c) Leer el arreglo paralelo con la venta diaria, en galones de cada uno de sus productos. y calcular la venta respectiva en soles de cada producto. d) Mostrar un reporte con los nuevos precios, las ventas en galones y las ventas en soles. PrecioGal GalVend VenSoles .... ..... ...... .... ..... ...... PROBLEMA NRO 3: Objetivos: Crear y mostrar arreglos unidimensionales. Restar arreglos unidimensionales. Multiplicar un arreglo unidimensional por un escalar. Sumar los elementos de un arreglo unidimensional. Enunciado: El gerente de una empresa desea saber el capital disponible en cada mes del año, así como el total disponible durante todo el año. También calcular y mostrar el capital por mes que se invertirá en el próximo año, si se invierte solo un porcentaje (declarado constante) del disponible,. Para ello se almacena en dos arreglos paralelos los ingresos y los egresos en cada uno de los meses del año. Ingresos 13.5 14.6 16.7 11.4 10.1 17.3 13.6 11.7 12.6 13.2 15.6 11.2 12.6 9.1 7.2 15.2 10.1 8.3 9.3 11.1 12.3 8.6 Egresos 10.1 11.3 CapDispo 3.4 CapInvertir CTD 2.6 ... CTI ..... CTD = Capital Total Disponible CTI = Capital Total a Invertir // Programa C++ #include<iostream.h> #include<iomanip.h> #include<conio.h> #include<stdlib.h> // system("cls") const int N = 12; // Para la corrida colocar solo 3 void main() { double Ingres[N], Egres[N], CapDispo[N], CapInver[N]; double CTD, CTI; int i; const double ti = 0.85; // a) Leer los Ingresos -->Arreglo Ingres for(i=0;i<N;i=i+1) { cin>>Ingres[i]; } // b) Leer los Egresos -->Arreglo Egres for(i=0;i<N;i=i+1) { cin>>Egres[i]; } // c) Calcular Capital disponible por mes y acumular el Capital total disponible CTD = 0; for(i=0;i<N;i=i+1) { CapDispo[i] = Ingres[i]-Egres[i]; CTD = CTD + CapDispo[i]; } // d) Calcular el capital a invertir por mes y acumular el capital total a Invertir CTI = 0; for(i=0;i<N;i=i+1) { CapInver[i] = ti*CapDispo[i]; CTI = CTI + CapInver[i]; } // e) Mostrar el reporte Ingresos Egresos Capital_Disponible Capital_a_Invertir // Capital_Total_Disponible Capital_Total_Invertir for(i=0;i<N;i=i+1) { cout<<setw(10)<<Ingres[i]<<setw(10)<<Egres[i]<<setw(10)<<CapDispo[i]<<setw(1 0)<<CapInver[i]<<endl; } cout<<setw(30)<<CTD<<setw(10)<<CTD<<endl; getch(); } PROBLEMA NRO 4 Objetivos: Inicializar arreglos paralelos y accesar a elementos i de dichos arreglos Usar acumuladores. Enunciado: Hacer un algoritmo en pseudocodigo que inicialice el código, descripción y precio de 5 artículos, almacenados en arreglos paralelos que una empresa comercializa. Se pide: a) Hacer un reporte con esta información. b) Ingresado por teclado un índice mostrar su código, descripción y precio unitario. c) Permitir atender pedidos de mas de un tipo de producto mostrando la descripción, precio unitario, cantidad comprada y monto parcial de cada tipo de producto. Además calcular y mostrar el monto total (suma de los montos parciales), descuento y monto a pagar teniendo en cuenta que si el monto total es superior a 1000 dólares, o la cantidad total comprada es superior o igual a 12, se hace un descuento de 5% sobre el monto total #include<iostream.h> #include<iomanip.h> #include<conio.h> void main() { char cod[5][5]= {"P01","P02","P03","P04","P05"}; char Desc[5][15] = {"TV 14", "TV 19", "TV 21", "TV 24","VHS" }; double PreUni[5] = {250, 350, 480, 870, 260}; double MontoParc , Descuento, MonTotal, MontoPagar; int i, Cantidad, CantTotal; char cont; const double td = 0.05; // a) Reporte con la informacion almacenada en los arreglos for(i=0;i<5;i=i+1) {cout<<setw(10)<<cod[i]<<setw(20)<<Desc[i]<<setw(10)<<PreUni[i]<<endl;} // b) prueba ingrese un indice y muestre la información almacenada en los arreglos paralelos cout<<"Ingrese indice : ";cin>>i; cout<<cod[i]<<" "<<Desc[i]<<" "<<PreUni[i]<<endl; // c) atención de pedido por varios productos MonTotal = 0; CantTotal = 0; cout<<"desea continuar : ";cin>>cont; while (cont == 'S' || cont =='s') { cout<<"Ingrese indice : ";cin>>i; cout<<"Ingrese unidades a comprar : "; cin>>Cantidad; MontoParc = Cantidad * PreUni[i]; cout<<Desc[i]<<" "<<PreUni[i]<<" "<<Cantidad<<" "<<MontoParc<<endl; MonTotal = MonTotal + MontoParc; CantTotal = CantTotal + Cantidad; cout<<"desea continuar : ";cin>>cont; } if ( (MonTotal > 1000) || (CantTotal >=12) ) { Descuento = td* MonTotal; } else { Descuento = 0;} MontoPagar = MonTotal - Descuento; cout<<"Monto total = " <<MonTotal<<endl; cout<<"Descuento = " <<Descuento<<endl; cout<<"Monto a pagar = "<<MontoPagar<<endl; getch(); } // ¿cómo generaría una factura ?