Este es el codigo que tengo desarrollado sobre el tema:
Código:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <graphics.h>
#include <stdlib.h>
struct TArticulo
{
int codigo;
char nombre [20];
char rubro [20];
float precio;
};
void CargarVector (TArticulo V[100], int n)
{
for (int i=0; i<n;i++)
{
clrscr();
cprintf("ingrese codigo de producto : "); cin>>V[i].codigo;
cprintf("ingrese nombre del producto : "); gets (V[i].nombre);
cprintf("ingrese rubro del producto : ") ; gets (V[i].rubro);
cprintf("ingrese precio de producto : ") ; cin>>V[i].precio;
}
}
void Listado (TArticulo V[100], int n)
{
clrscr();
//Mostrar los datos del comercio
gotoxy (25,1); cprintf ("Listado completo");
gotoxy (25,2); cprintf ("----------------");
gotoxy (5,3); cprintf ("Codigo");
gotoxy (5,4); cprintf (" ");
gotoxy (10,3); cprintf ("Nombre");
gotoxy (10,4); cprintf (" ");
gotoxy (15,3); cprintf ("Rubro");
gotoxy (15,4); cprintf (" ");
gotoxy (20,3); cprintf ("Precio");
gotoxy (20,4); cprintf (" ");
//Imprimir los datos del comercio
int L=5;
for (int i=0; i<n;i++)
{
gotoxy (5,L); cprintf ("%i", V[i].codigo);
gotoxy (10,L); cprintf ("%s", V[i].nombre);
gotoxy (15,L); cprintf ("%i", V[i].rubro);
gotoxy (20,L); cprintf ("%0.2f", V[i].precio);
L++;
}
getch();
}
void ConsultaPorNombre (TArticulo V[100], int n)
{
int b;
char Nx[20];
char op;
do
{
b=0;
clrscr();
gotoxy(20,2); cprintf("Funcion para la consulta por nombre de articulo");
gotoxy(20,3); cprintf("_______________________________________________");
gotoxy(10,5); cprintf("Ingrese nombre para consulta"); gets(Nx);
for (int i=0; i<n; i++)
{ if (strcmpi(Nx, V[i].nombre)==0)
{
gotoxy(10,7); cprintf("Codigo: %i", V[i].codigo);
gotoxy(10,9); cprintf("Nombre:%s", V[i].nombre);
gotoxy(10,11); cprintf("Rubro:%s", V[i].rubro);
gotoxy(10,13); cprintf("Precio:%0.2f", V[i].precio);
b=1;
}
}
if(b==0)
{
gotoxy (10,5); cprintf("Nombre inexistente");
}
gotoxy(10,25); cprintf("¿Otra consulta para ingresar? (S/N)");
cin>>op;
}
while(op=="s" ||op=="S");
}
void MenorPrecio (TArticulo V[100], int n)
{
float Menor =V[i].precio;
int posicion=0;
for (int i=1, i<n; i++)
{
if (V[i].precio < Menor)
{
Menor = V[i].precio;
posicion =i;
}
}
cprintf("\n\nr");
cprintf("El producto mas economico es: %0.2f" V[posicion].precio);
getchar();
}
void DibujarTarta (float v[50]; int n)
{
int i, Color;
float AngIni, AngFinal, Radio;
float suma =0;
Radio =150;
randomize();
for (i=0; i<n; i++) suma = suma + v[i];
setcolor (8);
AngIni=0;
for (i=0; i<n; i++)
{
AngFinal = v[i]/suma * 360 + AngIni;
if (i==n-1) AngFinal= 360;
Color=Random (14)+1;
setfillstyle (1,Color);
pieslice (320, 240, AngIni, AngFinal, Radio);
AngIni=AngFinal;
}
getchar();
}
void Diagrama (TArticulo V[100], int n)
{
//indicamos las variables de los rubros, que pueden ser: bebidas, hogar y electronica y contamos.
int beb, hog, elec;
beb=hog=elec =0;
for (int i=0; i<n; i++)
{
if (strcmpi (V[i].rubro, "B")==0) beb++;
if (strcmpi (V[i].rubro, "H")==0) hog++;
if (strcmpi (V[i].rubro, "E")==0) elec++;
float z[3];
z[0]=beb;
z[1]=hog;
z[2]=elec;
}
//Llamamos a la funcion DibujarTarta
int Gd, Gm;
Gd=DETECT;
initgraph(&Gd, &Gm, "C:\Borland\Bgi");
DibujarTarta(z,3);
closegraph();
}
void main()
{
TArticulo V[100];
int n= 5;
int op, estado;
estado =0;
do
{
clrscr();
gotoxy(25,2);cprintf("Menu Principal");
gotoxy(25,3);cprintf("---- ---------");
gotoxy(10,5);cprintf("1-Carga de articulos");
gotoxy(10,6);cprintf("2-Listado Completo");
gotoxy(10,7);cprintf("3-Consultas por Nombre");
gotoxy(10,8); cprintf("4-Datos del articulo de menor valor");
gotoxy(10,9); cprintf("5-Ver Diagrama estadistico");
gotoxy(10,11);cprintf("6-Salir");
gotoxy(10,15);cprintf("Seleccione una opcion: ");
cin>>op;
if (estado==0 && op!=1 && op!=6)
{
clrscr();
gotoxy(10,10); cprintf("Faltan cargar datos");
gotoxy(10,20); cprintf("Presione Enter para ir al Menu");
getchar();
}
else
switch(op)
{
case 1: CargarVector(V,n); estado=1; break;
case 2: Listado(V,n); break;
case 3: ConsultaPorNombre(V,n); break;
case 4: MenorPrecio(V,n); break;
case 5: Diagrama(V,n); break;
}
}
while (op !=6);
}