Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Mbot en 20 de Febrero 2021, 08:43

Título: programa conversión de pesos a dólares contadores acumuladores en C (lenguajeC)
Publicado por: Mbot en 20 de Febrero 2021, 08:43
Qué tal, necesito crear un programa que realice la conversión de pesos a dólares y que al final del día me indique cuántas transacciones se realizaron, cuántos pesos ingresaron y cuántos dólares salieron.

Este es mi código, en el cual estoy atorado, ya que siempre me arroja la información de la primer y única conversión.

Código: [Seleccionar]
#include<stdio.h>
#include<stdlib.h>

#define dolar 19.94


 main(){

int transacciones; // Contador
float totalpesos, totaldolares; //Acumuladores
float pesos, total;
totalpesos=0;
totaldolares=0;


printf("\n\n\t * * Calculadora de casa de cambio * * \n");

printf("\n\nIngresa la cantidad total de pesos que deseas cambiar: $");
scanf("%f", &pesos);

if (pesos>0)
{   


for (transacciones=0; transacciones<=10; transacciones++)
{   
total=pesos/dolar;
printf("\n\nEl total a entregar en dolares es: $ %.2f\n\n\n", total);
}   

totalpesos=totalpesos+total;
totaldolares=totaldolares+total;


printf("\n\nTotal de transacciones: %i", transacciones);
printf("\n\nTotal de pesos ingresados: %.2f", totalpesos);
printf("\n\nTotal en dolares entregados: %.2f", totaldolares);



else   

printf("\n\nIngresa un valor valido\n\n");


system("pause");

return 0;

}


Agradezco sus ayuda.
Título: Re: Ayuda con contadores y acumuladores en C
Publicado por: Kabuto en 20 de Febrero 2021, 12:07
Hola.
Tienes que enfocarlo de forma distinta.

Todo el proceso de pedir pesos, convertir, etc... se ha de realizar mientras se cumpla una determinada condición, para que el usuario pueda hacer todas las transacciones que quiera.

Por ejemplo, podemos usar un bucle while que se repita mientras un char tenga valor 's'.
Al final de cada transacción preguntamos al usuario si quiere hacer otra.
Si responde 's', el proceso se repite. Si responde 'n', entonces el while termina y se mostraría en pantalla el reporte de totales acumulados.

Luego, otro fallo que tienes es que usas "total" tanto para acumular dolares como pesos

Código: [Seleccionar]
  totalpesos=totalpesos+total;
  totaldolares=totaldolares+total;
Eso va a implicar que ambos acumuladores tendrán el mismo valor al final del programa

En vez de una variable llamada "total", mejor usar una llamada "dolares", ya que lo que recibe es la conversión en dolares.
Así, a totalPesos le acumularemos la variable "pesos", que es el valor introducido por teclado.

Y a totalDolares le acumulamos la variable "dolares", que es el valor de conversión.

Prueba este código, a ver si ahora lo ves más claro:

Código: [Seleccionar]
#include<stdio.h>
#include<stdlib.h>

#define dolar 19.94

int main()
{
    int transacciones = 0;
    float totalPesos = 0, totalDolares = 0;
    float dolares = 0, pesos = 0;
    char continuar = 's';

    while (continuar == 's')
    {
        printf("\n\n\t * * Calculadora de casa de cambio * * \n");

        printf("\n\nIngresa la cantidad total de pesos que deseas cambiar: $");
        scanf("%f", &pesos);
        if (pesos > 0)
        {
            //Hacemos la conversion e informamos en pantalla
            dolares = pesos/dolar;
            printf("Dolares obtenidos al cambio: %.2f$", dolares);
            //Acumulamos pesos ingresados
            totalPesos = totalPesos + pesos;
            //Acumulamos dolares entregados
            totalDolares = totalDolares + dolares;
            //Contamos esta transaccion
            transacciones++;

            //Preguntamos si quiere continuar
            printf("\nHacer nueva transaccion?(s/n): ");
            scanf(" %c", &continuar);
        }
        else
            printf("\n\nIngresa un valor valido\n\n");
    }
    //Final del día, presentamos reporte
    system("cls");
    printf("\t * * Resumen de operaciones * * \n");
    printf("Transacciones realizadas: %d\n", transacciones);
    printf("Pesos ingresados: %.2f\n", totalPesos);
    printf("Dolares entregados: %.2f\n", totalDolares);

    printf("\n\t\tFIN DE PROGRAMA\n");
    system("pause");

    return 0;
}
Título: Re: Ayuda con contadores y acumuladores en C
Publicado por: Mbot en 20 de Febrero 2021, 20:22
Muchas gracias!!!  Me ayudaste bastante, no entendía la forma en como declarar el programa para poder llegar a lo que se me solicitaba y con tu código me fue mucho mas fácil entender el procedimiento paso a paso. Tenía días atorado en el código.  :)