Buen dia, soy nuevo y necesito ayuda tengo este programa y no se como ponerlo en switch, ya lo intente y me salio error no se que estoy haciendo mal, voy a poner el programa sin el switch, lo que busco es dividir los procesos captura y moneda en 2 case pero no se como, si alguie puede hacerlo o darme alguna idea le estare agradecido.
el ejercicio:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(void);
void moneda(void);
void captura(void);
void monedas(int);
int main(){
captura();
moneda();
}
void captura(){
float monto,pago;
float cambio;
printf("Programa que calcula el cambio con monedas");
printf("\nInserte el total a pagar >");
scanf("%f",&monto);
printf("Inserte el dinero recibido >");
scanf("%f",&pago);
cambio=(float)(pago*100)-(float)(monto*100);
printf("Su cambio es %f",cambio);
monedas(cambio);
}
void monedas(int x){
int c50=0,c25=0,c10=0,c5=0,c1=0;
while(x>=50){
x-=50;
c50++;
}
printf("\n\nRegresar %d monedas de 50 centavos",c50);
while(x>=25){
x-=25;
c25++;
}
printf("\nRegresar %d monedas de 25 centavos",c25);
while(x>=10){
x-=10;
c10++;
}
printf("\nRegresar %d monedas de 10 centavos",c10);
while(x>=5){
x-=5;
c5++;
}
printf("\nRegresar %d monedas de 5 centavos",c5);
while(x>=1){
c1++;
x-=1;
}
printf("\nRegresar %d monedas de 1 centavos",c1);
}
void moneda(){
int salir,saliryesno;
salir=0;
while(salir==0){
printf("\n\tCANTIDAD DE DINERO Y TRANSFORMACION A OTRA MONEDA\n");
int cambiarmoneda;
float total_bill1,total_bill5,total_bill10,total_bill20,total_bill50,total_bill100,total_cent1,total_cent5,total_cent10,total_cent25,total_cent50,total_bill,total_cent,total_dinero,yen,peso_mexicano,euro;
printf("\nCantidad de billetes a ingresar: ");
scanf("%f",&total_bill1);
while(total_bill1<0){
printf("\nCantidad de billetes ingresdos: ");
scanf("%f",&total_bill1);
}
total_bill=(total_bill1*(1));
printf("Cantidad de monedas de un centavo: ");
scanf("%f",&total_cent1);
while(total_cent1<0){
printf("Cantidad de monedas de un centavo: ");
scanf("%f",&total_cent1);
}
printf("Cantidad de monedas de cinco centavos: ");
scanf("%f",&total_cent5);
while(total_cent5<0){
printf("Cantidad de monedas de cinco centavos: ");
scanf("%f",&total_cent5);
}
printf("Cantidad de monedas de diez centavos: ");
scanf("%f",&total_cent10);
while(total_cent10<0){
printf("Cantidad de monedas de diez centavos: ");
scanf("%f",&total_cent10);
}
printf("Cantidad de monedas de veinticinco: ");
scanf("%f",&total_cent25);
while(total_cent25<0){
printf("Cantidad de monedas de veinticinco centavos: ");
scanf("%f",&total_cent25);
}
total_cent=(total_cent1*(0.01)+total_cent5*(0.05)+total_cent10*(0.10)+total_cent25*(0.25));
printf("\nLA CANTIDAD DE DINERO QUE HAY EN BILLETES ES: $%.2f\n",total_bill);
printf("LA CANTIDAD DE DINERO QUE HAY EN MONEDAS ES: $%.2f\n",total_cent);
total_dinero=(total_bill+total_cent);
printf("LA CANTIDAD TOTAL DE DINERO QUE HAY ES: $%.2f\n\n",total_dinero);
printf("\t\tMONEDA\t\tCODIGO\n");
printf("\t\tYen Japones\t\t 1\n");
printf("\t\tPeso Mexicano\t\t 2\n");
printf("\t\tEuro\t\t\t 3\n\n");
printf("Introduzca el codigo de la moneda a la que desea convertir los $%.2f: ",total_dinero);
scanf("%d",&cambiarmoneda);
while(cambiarmoneda<0 || cambiarmoneda>3){
printf("Introduzca el codigo de la moneda a la que desea convertir los $%.2f: ",total_dinero);
scanf("%d",&cambiarmoneda);
}
yen=total_dinero* 114.97;
peso_mexicano=total_dinero*18.41;
euro=total_dinero*0.89;
switch(cambiarmoneda){
case 1:
printf("\n$%.2f EQUIVALE A %.2f YENES\n\n",total_dinero,yen);
break;
case 2:
printf("\n$%.2f EQUIVALE A %.2f PESOS MEXICANOS\n\n",total_dinero,peso_mexicano);
break;
case 3:
printf("\n$%.2f EQUIVALE A %.2f EUROS\n\n",total_dinero,euro);
}
printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: ");
scanf("%d",&saliryesno);
switch(saliryesno){
case 1:
salir=1;
}
}
}
ejemplo
#include <stdio.h>
#include <stdlib.h>
#define uno 10
#define personas 99
#define nombres 50
int i, opc, cont;
float suma;
struct empleado{
int dt;
float pd, cs;
char x[personas][nombres]; /*99 para almacenar el numero de personas y 50 para los nombres*/
};
struct empleado datos[uno];
void menu();
void dato();
void resultado();
void pagototal();
void error();
void menu(){
system("reset");
printf("----Menu------\n");
printf("1- ingresar datos\n");
printf("2- resultado\n");
printf("3- resultado de todos los empleados \n");
printf("4- salir\n");
printf("ingrese la opcion: \n");
scanf("%d",&opc);
switch(opc){
case 1: dato();
break;
case 2: resultado();
break;
case 3: pagototal();
break;
case 4: system("exit");
break;
default: error();
break;
}
}
void dato(){
system("clear");
printf("cuantas personas hay (max 99): ");
scanf("%d",&cont);
for(i=0;i<cont;i++){
printf("nombre la persona [%d]: \n",i+1);
setbuf(stdin,NULL);
fgets(datos[i].x[i],nombres,stdin);
printf("dias trabajados de la persona %d: \n",i+1);
scanf("%d",&datos[i].dt);
printf("pago por dia de la persona %d: \n",i+1);
scanf("%f",&datos[i].pd);
}
system("read -p 'presione enter para continuar' var ");
menu();
}
void resultado(){
system("reset");
for(i=0;i<cont; i++){
datos[i].cs=datos[i].dt*datos[i].pd;
printf("persona %d nombre: %s y salario %f \n", i+1, datos[i].x[i], datos[i].cs);
}
system("read -p 'presione enter para continuar' var ");
menu();
}
void pagototal(){
system("reset");
for(i=0;i<cont; i++){
datos[i].cs=datos[i].dt*datos[i].pd;
suma=suma+datos[i].cs;
}
printf("el salario total es: %f\n",suma);
system("read -p 'presione enter para continuar' var ");
menu();
}
void error(){
system("reset");
printf("error opcion no valida\n");
system("read -p 'presione enter para continuar' var ");
menu();
}
int main(){
menu();
}
geshi please
abaadoon, muchisimas gracias me sirvo completamente, estaba preocupado porque era mi trabajo de examen y solo me faltaba eso, otra vez: muchas gracias. :D ;-)
de nada un gusto en ayudar
¿Ustedes no saben que en todos los foros de programación hay que respetar sus reglas de formato de código?.
Usen las etiquetas GeShi.
(http://qbnz.com/highlighter/images/geshi.png)
Gente traten de usar el bendito GeSHi (seleccionan el codigo, clickean en el combobox que dice GeSHi y seleccionan el lenguaje en cuestion) de ahora en adelante por favor, hacerlo es gratis, no les vamos a cobrar.
si si disculpen :(