En mis momentos de locura en ocaciones resuelvo los ejercicios de parciales pasados que antes no pude hacer y ahora los ago sin problemas este es uno recuerdo que cuando lo presente el ingeniero se me quedaba mirando fue de Progra 2 y el ing me miraba asiii como preguntandose no sabia que las letras parpadeaban XD! obio una libreria jajaja en fin espero les allude saludos!

Enunciado y Problema resuelto

Desarrolle un programa que permita resolver el problema de las compras
en el cual se da un objetivo x, y un conjunto de objetos con precios
(enteros positivos). Se pide determinar si existe una seleccion de objetos
que totalice exactamente x. Por ejemplo, si x=$10 y los precios de los
objetos son $7, $5, $4 y $1, se pueden elegir el segundo, el tercero
y el quinto, ya que 5+4+1 =10. Para simplificar el problema trabaje con 10
precios de objetos y suponga que cada objeto o precio tiene la misma
importancia para el comprador (30%)

#include ;
#include ;
#include ;
void recur(int x);
int obj[10],elec[10],total=0,k=0,j=0,j2=0;
void main()
{
textbackground(BLACK);
textcolor(WHITE);
int x=0,j1,ban=1,op,i,obje;/*El programa solo acepta enteros positivos*/
char res;
clrscr();
while (ban>0)
{
textcolor(YELLOW);
textbackground(RED);
gotoxy(15,3);cprintf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿");
gotoxy(15,4);cprintf("³ PROGRAMACION II ³");
gotoxy(15,5);cprintf("³ INGENIERIA DE SISTEMAS IMFORMATICOS ³");
gotoxy(15,6);cprintf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ");
gotoxy(23,9);printf("PROGRAMA DE COMPRAS DE OBJETOS");
gotoxy(18,11);printf("1-Inzertar los precios de los 10 objetos");
gotoxy(18,12);printf("2-Ingresar la Cantidad en dolares que desea gastar");
gotoxy(18,13);printf("3-Ver Objetos seleccionados para la compra");
gotoxy(18,14);printf("4-Resetear Programa y datos");
gotoxy(18,15);printf("5-Salir");
textbackground(RED);
textcolor(YELLOW);
gotoxy(15,18);cprintf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿");
gotoxy(15,19);cprintf("³ Efectivo $ ³");
gotoxy(15,20);cprintf("³ Numero de Objetos Seleccionados: ³");
gotoxy(15,21);cprintf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ");
gotoxy(44,19);printf("%d",x);
gotoxy(56,20);printf("%d",k);
gotoxy(25,17);printf("Elija una opcion: ");
gotoxy(48,17);printf(" ");
gotoxy(48,17);scanf("%d",&op);
switch (op)
{
case 1:
{
textbackground(BLACK);
textcolor(WHITE);
clrscr();
if (j>=10)
{
gotoxy(24,22);printf("YA SE HAN INGRESDADO LOS PRECIOS");
}
else
{
for(j=1;j<11;j++)
{
cprintf("n Digite el valor del objeto %d: ",j);
scanf("%d",&obje);
while (obje<=0)
{
cprintf("n Debe ser un numero mayor que cero");
cprintf("n Digite el valor del objeto %d: ",j);
scanf("%d",&obje);
}
obj[j]=obje;
}
clrscr();
}
}
break;
case 2:
{
textbackground(BLACK);
textcolor(WHITE);
clrscr();
if (x>0)
{
gotoxy(24,22);printf(" YA SE HA INGRESADO EL EFECTIVO");
}
else
{
gotoxy(25,10);cprintf(" Digite el efectivo $");
scanf("%d",&x);
while (x<=0)
{
gotoxy(25,14);cprintf("Debe ser un Entero Positivo");
gotoxy(25,10);cprintf(" Digite el efectivo $");
scanf("%d",&x);
}
total=x;
clrscr();
}
}break;
case 3:
{
textbackground(BLACK);
textcolor(WHITE);
if (x>0)
{
if (j>0)
{
recur(x);
clrscr();
printf("ntt Los objetos elejidos fueron %d",k);
printf("ntt Los precios son : n");
for (i=1;i<=k;i++)
{
printf("ntt Objeto %d $ %d",i,elec[i]);
}
getch();
clrscr();
}
else
{
gotoxy(18,22);printf("DEBE INGRESAR EL VALOR DE LOS OBJETOS ANTES");
}
}
else
{
gotoxy(20,22);printf("DEBE INGRESAR EL VALOR DEL EFECTIVO ANTES");
}
}break;
case 4 :{
clrscr();
textbackground(BLACK);
textcolor(WHITE);
gotoxy(25,8);cprintf("ESTA SEGURO DE CONTINUAR");
gotoxy(20,12);cprintf("PRESIONE 'Y' PARA CONTINUAR O CUALQUIER OTRA");
gotoxy(27,13);cprintf(" TECLA PARA CANCELAR");
textattr(RED);
gotoxy(15,3);cprintf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿");
gotoxy(15,4);cprintf("³ ATENCION: ³");
gotoxy(15,5);cprintf("³ Todos los datos seran borrados ³");
gotoxy(15,6);cprintf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ");
scanf("%s",&res);
if (res=='y')
{
printf("completando esperen");
while(j>0);
{
printf("");
obj[j]=NULL;
j--;
}
}

else

printf("OK CANCELADO");
}break;

case 5 :ban=-1;break;

default :{
gotoxy(24,22);;printf("OPCION NO VALIDA");
}
}
}
}

void recur(int x)/*FUNCION RECURSIVA*/
{
j2++;
while(j2<=10)
{
if (obj[j2]<=total)
{
k++;
total=total-obj[j2];
elec[k]=obj[j2];
}
recur(x);
}
}
Este artículo ha sido leido 154 veces

Comparte este post:

  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay
  • Add to favorites
  • BarraPunto
  • Bitacoras.com
  • BlinkList
  • blogmarks
  • HackerNews
  • Live
  • Meneame
  • MSN Reporter
  • MySpace
  • PDF
  • Ping.fm
  • Wikio
  • Yahoo! Bookmarks
  • Hyves
  • LinkaGoGo
  • LinkArena
  • Linkter
  • muti
  • MyShare
  • Netvibes
  • Netvouz
  • Ratimarks
  • SphereIt
  • Suggest to Techmeme via Twitter
  • Technorati
  • Tumblr
  • Webnews.de
  • Wikio IT
  • Wykop
  • Xerpi
  • Yahoo! Buzz
  • Yigg

Mas Post Relacionados