soy novata en C, ayuda porfa :)

tati_chica
27 de Mayo del 2006
hola, estoy llevando curso de principios de informática para mi carrera, pero todavía no soy muy ágil en esto de crear programas!!

tengo un problema existencial : P ... necesito crear un programa que calcule el desglose total de salarios en billetes de 100, 50, 20, 10, 5, 1 y monedas de 25, 10, 5 y 1 (para la parte decimal).

Necesito separar los enteros de los decimales, y calcular el número óptimo de billetes y monedas para la cantidad de un cierto valor de salario, imprimiedo en pantalla los valores calculados y acumulando el monto y número de cada denominación total, luego solicitar un nuevo monto y que el programa termine al digitar cero.

...En resumen es algo así como lo que hace un cajero automático :) si, me pueden ayudar en cómo hacerlo, estaría muy agradecida!! saludos!!

Tati

Noel Solw
27 de Mayo del 2006
Estimada Tati, te envio un programa que hace aproximadamente lo que tu quieres. Creo que podras adaptarlo a tus necesidades sin mayor incoveniente.

Exito ! ! !

// program k2a35a.CPP - page 25
// costumer pay organizicer without limitations
// 22/6/2001
// written in Borland CPP ver 3.1

#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <stdio.h>

struct Values
{
char *msg;
unsigned int value;
};

Values val[10] = {{"200 pesos",20000},
{"100 pesos",10000},
{" 50 pesos", 5000},
{" 20 pesos", 2000},
{" 10 pesos", 1000},
{" 5 pesos", 500},
{" 1 pesos", 100},
{" 50 cents", 50},
{" 10 cents", 10},
{" 5 cents", 5}};


unsigned long GetAmount()
{
clrscr();
cout << "costumer pay organizicer : " << endl << endl;
for(double n = -1; n < 0;)
{
cout << "get pay amount ---> ";
cin >> n;
};
cout << endl;
unsigned long num = (n+0.005)*100;
switch(num % 5)
{
case 1 : num -= 1;
break;
case 2 : num -= 2;
break;
case 3 : num += 2;
break;
case 4 : num += 1;
break;
}
return num;
} // GET AMOUNT

void ProcessOne(unsigned long amount)
{
cout << "given amount in pesos (rounded to 5 cents) : " << amount/100
<< "." << amount % 100 << endl << endl;
for(int i = 0; (i < 10) && amount; i++)
{
for(int n = 0; amount >= val[i].value; n++)
amount -= val[i].value;
if(n)
printf("%18s . . . . . %2d . . . . . %12.2f \n",
val[i].msg,n,val[i].value/100.0*n);
}
} // PROCESS ONE

void main()
{
unsigned long amount = GetAmount();
for(;amount != 0;)
{
ProcessOne(amount);
getch();
amount = GetAmount();
}
cout << "end of program - good bye ! ! ! " << endl;
getch();
} // MAIN

/*
costumer pay organizicer :

get pay amount ---> 12354.47
given amount in pesos (rounded to 5 cents) : 12354.45
200 pesos . . . . . 61 . . . . . 12200.00
100 pesos . . . . . 1 . . . . . 100.00
50 pesos . . . . . 1 . . . . . 50.00
1 pesos . . . . . 4 . . . . . 4.00
10 cents . . . . . 4 . . . . . 0.40
5 cents . . . . . 1 . . . . . 0.05
*/