soy novata en C, ayuda porfa :)
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
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
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
*/
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
*/
