Jump to content
Noriso

Exercício em C

Recommended Posts

Noriso

Boas pessoal, eu ainda sou novo nisto, como faço para programar em c

1. Converta uma determinada quantia em € num conjunto de moedas. Considere que existem moedas de €0.01, €0.05, €0.2 e €0.5. A quantidade de moedas deve ser mínima.

2. Calcule a quantidade de dinheiro que um cliente tem no banco ao fim de um ano, dada a data de hoje, o montante inicial e a taxa de juro anual. O formato em que é apresentada a informação deve ser o seguinte:

Informação necessária:
Data Actual: 10/10/2008
Montante inicial: €10000
Taxa: 10%
Cálculo do montante:
No dia 10/10/2009 vai ter no banco €11000.

Share this post


Link to post
Share on other sites
HappyHippyHippo

podes ser mais concreto na dúvida ? o que tens já feito ? qual a parte do enunciado que não percebes ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Guest
Em 09/10/2017 às 21:56, Noriso disse:

Boas pessoal, eu ainda sou novo nisto, como faço para programar em c

1. Converta uma determinada quantia em € num conjunto de moedas. Considere que existem moedas de €0.01, €0.05, €0.2 e €0.5. A quantidade de moedas deve ser mínima.

2. Calcule a quantidade de dinheiro que um cliente tem no banco ao fim de um ano, dada a data de hoje, o montante inicial e a taxa de juro anual. O formato em que é apresentada a informação deve ser o seguinte:

O seguinte código converte uma quantia em notas (quantidade mínima de notas) :

#include <stdio.h>
#include <math.h>

int main(void)
{
    int ValorInicial = 0, Montante, Nota_500 = 0, Nota_100 = 0, Nota_50 = 0, Nota_20 = 0, Nota_10 = 0, Nota_5 = 0, Nota_2 = 0;
    int ValorFinal = 0, Resto = 0, Resto_500 = 0, Resto_100 = 0, Resto_50 = 0, Resto_20 = 0, Resto_10 = 0, Resto_5 = 0, Resto_2 = 0;

    printf("\t Entre com o Montante - Sem centimos   ");
    scanf("%d", & Montante);
    ValorInicial = Montante;

    if (Montante >= 2)
    {
        if (ValorInicial >= 500)
            {
                Nota_500 = floor(ValorInicial / 500);
                Resto_500 = ValorInicial % 500;
                ValorInicial = Resto_500;
                if (Resto_500 < 2)
                    Resto = Resto + Resto_500;
            }
        if ( ValorInicial >= 100)
            {
                Nota_100 = floor( ValorInicial / 100);
                Resto_100 = ValorInicial % 100;
                ValorInicial = Resto_100;
                if (Resto_100 < 2)
                    Resto = Resto + Resto_100;
            }
        if (ValorInicial >= 50)
            {
                Nota_50 = floor(ValorInicial / 50);
                Resto_50 = ValorInicial % 50;
                ValorInicial = Resto_50;
                if (Resto_50 < 2)
                    Resto = Resto + Resto_50;
            }
        if (ValorInicial >= 20)
            {
                Nota_20 = floor(ValorInicial / 20);
                Resto_20 = ValorInicial % 20;
                ValorInicial = Resto_20;
                 if (Resto_20 < 2)
                    Resto = Resto + Resto_20;
            }
        if (ValorInicial >= 10)
            {
                Nota_10 = floor(ValorInicial / 10);
                Resto_10 = ValorInicial % 10;
                ValorInicial = Resto_10;
                if (Resto_10 < 2)
                    Resto = Resto + Resto_10;
            }
        if (ValorInicial >= 5)
            {
                Nota_5 = floor(ValorInicial / 5);
                Resto_5 = ValorInicial  % 5;
                ValorInicial = Resto_5;
                if (Resto_5 < 2)
                    Resto = Resto + Resto_5;
            }
        if (ValorInicial >= 2)
            {
                Nota_2 = floor(ValorInicial / 2);
                Resto_2 = ValorInicial % 2;
                ValorInicial = Resto_2;
                if (Resto_2 < 2)
                    Resto = Resto + Resto_2;
            }
    }
    else
    {
        printf("\n\t Montante tem que ser um valor positivo e maior que 2 \n");
    }

    if (Montante >= 2)
    {
    printf("\n\t Notas de 500: %4d  |  500 x %4d = %6d \n", Nota_500, Nota_500, 500 * Nota_500);
    printf("\t Notas de 100: %4d  |  100 x %4d = %6d \n", Nota_100, Nota_100, 100 * Nota_100);
    printf("\t Notas de  50: %4d  |   50 x %4d = %6d \n", Nota_50, Nota_50, 50 * Nota_50);
    printf("\t Notas de  20: %4d  |   20 x %4d = %6d \n", Nota_20, Nota_20, 20 * Nota_20);
    printf("\t Notas de  10: %4d  |   10 x %4d = %6d \n", Nota_10, Nota_10, 10 * Nota_10);
    printf("\t Notas de   5: %4d  |    5 x %4d = %6d \n", Nota_5, Nota_5, 5 * Nota_5);
    printf("\t Notas de   2: %4d  |    2 x %4d = %6d \n\n", Nota_2, Nota_2, 2 * Nota_2);
    printf("\t        Restante menor que 2 Euros = %6d \n\n", Resto);

    ValorFinal = (500 * Nota_500) + (100 * Nota_100) + (50 * Nota_50) + (20 * Nota_20) + (10 * Nota_10) + (5 * Nota_5) + (2 * Nota_2) + Resto;

    printf("\t\t\t       Valor Total = %6d \n\n", ValorFinal);
    }

    return 0;
}

 

Share this post


Link to post
Share on other sites
HappyHippyHippo
1 hour ago, Let's Learn said:

O seguinte código converte uma quantia em notas (quantidade mínima de notas) :


#include <stdio.h>
#include <math.h>

int main(void)
{
    int ValorInicial = 0, Montante, Nota_500 = 0, Nota_100 = 0, Nota_50 = 0, Nota_20 = 0, Nota_10 = 0, Nota_5 = 0, Nota_2 = 0;
    int ValorFinal = 0, Resto = 0, Resto_500 = 0, Resto_100 = 0, Resto_50 = 0, Resto_20 = 0, Resto_10 = 0, Resto_5 = 0, Resto_2 = 0;

    printf("\t Entre com o Montante - Sem centimos   ");
    scanf("%d", & Montante);
    ValorInicial = Montante;

    if (Montante >= 2)
    {
        if (ValorInicial >= 500)
            {
                Nota_500 = floor(ValorInicial / 500);
                Resto_500 = ValorInicial % 500;
                ValorInicial = Resto_500;
                if (Resto_500 < 2)
                    Resto = Resto + Resto_500;
            }
        if ( ValorInicial >= 100)
            {
                Nota_100 = floor( ValorInicial / 100);
                Resto_100 = ValorInicial % 100;
                ValorInicial = Resto_100;
                if (Resto_100 < 2)
                    Resto = Resto + Resto_100;
            }
        if (ValorInicial >= 50)
            {
                Nota_50 = floor(ValorInicial / 50);
                Resto_50 = ValorInicial % 50;
                ValorInicial = Resto_50;
                if (Resto_50 < 2)
                    Resto = Resto + Resto_50;
            }
        if (ValorInicial >= 20)
            {
                Nota_20 = floor(ValorInicial / 20);
                Resto_20 = ValorInicial % 20;
                ValorInicial = Resto_20;
                 if (Resto_20 < 2)
                    Resto = Resto + Resto_20;
            }
        if (ValorInicial >= 10)
            {
                Nota_10 = floor(ValorInicial / 10);
                Resto_10 = ValorInicial % 10;
                ValorInicial = Resto_10;
                if (Resto_10 < 2)
                    Resto = Resto + Resto_10;
            }
        if (ValorInicial >= 5)
            {
                Nota_5 = floor(ValorInicial / 5);
                Resto_5 = ValorInicial  % 5;
                ValorInicial = Resto_5;
                if (Resto_5 < 2)
                    Resto = Resto + Resto_5;
            }
        if (ValorInicial >= 2)
            {
                Nota_2 = floor(ValorInicial / 2);
                Resto_2 = ValorInicial % 2;
                ValorInicial = Resto_2;
                if (Resto_2 < 2)
                    Resto = Resto + Resto_2;
            }
    }
    else
    {
        printf("\n\t Montante tem que ser um valor positivo e maior que 2 \n");
    }

    if (Montante >= 2)
    {
    printf("\n\t Notas de 500: %4d  |  500 x %4d = %6d \n", Nota_500, Nota_500, 500 * Nota_500);
    printf("\t Notas de 100: %4d  |  100 x %4d = %6d \n", Nota_100, Nota_100, 100 * Nota_100);
    printf("\t Notas de  50: %4d  |   50 x %4d = %6d \n", Nota_50, Nota_50, 50 * Nota_50);
    printf("\t Notas de  20: %4d  |   20 x %4d = %6d \n", Nota_20, Nota_20, 20 * Nota_20);
    printf("\t Notas de  10: %4d  |   10 x %4d = %6d \n", Nota_10, Nota_10, 10 * Nota_10);
    printf("\t Notas de   5: %4d  |    5 x %4d = %6d \n", Nota_5, Nota_5, 5 * Nota_5);
    printf("\t Notas de   2: %4d  |    2 x %4d = %6d \n\n", Nota_2, Nota_2, 2 * Nota_2);
    printf("\t        Restante menor que 2 Euros = %6d \n\n", Resto);

    ValorFinal = (500 * Nota_500) + (100 * Nota_100) + (50 * Nota_50) + (20 * Nota_20) + (10 * Nota_10) + (5 * Nota_5) + (2 * Nota_2) + Resto;

    printf("\t\t\t       Valor Total = %6d \n\n", ValorFinal);
    }

    return 0;
}

 

espero que tenhas a noção que essa solução é uma solução que pode ser melhorada imenso

por outro lado, espero também que conheças o seguinte ditado : "dá um peixe e tiras a fome por um dia, ensina a pescar e tiras a fome para sempre"


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Guest
8 horas atrás, HappyHippyHippo disse:

espero que tenhas a noção que essa solução é uma solução que pode ser melhorada imenso

por outro lado, espero também que conheças o seguinte ditado : "dá um peixe e tiras a fome por um dia, ensina a pescar e tiras a fome para sempre"

Sim, vou melhorar a solução imensamente.

Vou usar recursividade,  ponteiros, etc de modo que fique difícil para Noriso. Pelo visto voce nao percebeu que ele escreveu: "eu ainda sou novo nisto".


Eu não dei o peixe, dei apenas algo para ele ter um Norte. Se fosse dar o peixe tinha passado um código para moedas e não para notas.

Share this post


Link to post
Share on other sites
HappyHippyHippo
15 hours ago, Let's Learn said:

Sim, vou melhorar a solução imensamente.

Vou usar recursividade,  ponteiros, etc de modo que fique difícil para Noriso. Pelo visto voce nao percebeu que ele escreveu: "eu ainda sou novo nisto".


Eu não dei o peixe, dei apenas algo para ele ter um Norte. Se fosse dar o peixe tinha passado um código para moedas e não para notas.

eu percebi claramente o que ele escreveu, alem de saber exactamente o que escrevi e o porque o escrevi. existem perguntas concretas sobre duvidas concretas, e existe outro tipo de "pedidos" onde só é apresentado um enunciado.

no que toca a "moedas e não notas", acho que nem vale a pela abordar.


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
pwseo
Em 10/12/2017 às 19:36, Let's Learn disse:

Eu não dei o peixe, dei apenas algo para ele ter um Norte. Se fosse dar o peixe tinha passado um código para moedas e não para notas.

Em algum momento explicaste o raciocinio utilizado? Apenas vi código completo sem comentários de qualquer tipo, também conhecido como "dar o peixe". O facto do teu exemplo lidar com notas em vez de moedas é apenas uma trivialidade irrelevante para a discussão (podíamos estar a lidar com batatas de diferente valor em lugar das notas ou moedas).

Share this post


Link to post
Share on other sites
Noriso
Em 12/10/2017 às 19:36, Let's Learn disse:

Sim, vou melhorar a solução imensamente.

Vou usar recursividade,  ponteiros, etc de modo que fique difícil para Noriso. Pelo visto voce nao percebeu que ele escreveu: "eu ainda sou novo nisto".


Eu não dei o peixe, dei apenas algo para ele ter um Norte. Se fosse dar o peixe tinha passado um código para moedas e não para notas.

Obrigado e já consegui resolver o programa :D

Share this post


Link to post
Share on other sites
HappyHippyHippo
17 minutes ago, Noriso said:

Obrigado e já consegui resolver o programa :D

podes apresentar a tua solulão ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Noriso
8 minutos atrás, HappyHippyHippo disse:

podes apresentar a tua solulão ?

#include <stdlib.h>
#include <stdio.h>

int main()
{
    
    int moeda1 = 0;
    int moeda2 = 0;
    int moeda3 = 0;
    int moeda4 = 0;
float Totalmoedas;
printf("Quantos euros quer destrocar ? ");
scanf_s("%f", &Totalmoedas);


if (Totalmoedas > 0)
{

    Totalmoedas = Totalmoedas * 100;

    Totalmoedas = (int)Totalmoedas;
    while (Totalmoedas >= 50)
    {
        Totalmoedas = Totalmoedas - 50;
        moeda1++;
    }
    while (Totalmoedas >= 20)
    {
        Totalmoedas = Totalmoedas - 20;
        moeda2++;
    }
    while (Totalmoedas >= 5)
    {
        Totalmoedas = Totalmoedas - 5;
        moeda3++;
    }
    while (Totalmoedas >= 1)
    {
        Totalmoedas = Totalmoedas - 1;
        moeda4++;
    }
    printf("Usaram-se %d moeda(s) de 1 centimo, %dmoeda(s) de 5 centimos, %d moeda(s) de 20 centimos e %d moeda(s) de 50 centimos.\n", moeda4, moeda3, moeda2, moeda1);
}
else
{
    printf("O valor nao e correto\n");
    return 1;
}
}

 

Share this post


Link to post
Share on other sites
HappyHippyHippo

todas as soluções são correctas se o resultado é o esperado, no entanto, existem muitas formas de chegar a Roma :

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char ** argv) {
    int moedas[4] = {1, 5, 20, 50};
    int trocado[4] = {0, 0, 0, 0};
    float valor = 0;

    do {
        printf("Qual o valor a trocar ? : ");

        fflush(stdout);
        fflush(stdin);
    } while (scanf(" %f", &valor) == 0);

    valor = (int) (valor * 100);

    for (int i = 3; i >= 0; --i) {
        while (valor >= moedas[i]) {
            ++trocado[i];
            valor -= moedas[i];
        }
    }

    printf("Usaram-se\n");
    printf("\t- %d moeda(s) de 1 centimo\n", trocado[0]);
    printf("\t- %d moeda(s) de 5 centimos\n", trocado[1]);
    printf("\t- %d moeda(s) de 20 centimos e\n", trocado[2]);
    printf("\t- %d moeda(s) de 50 centimos.\n", trocado[3]);

    return 0;
}

 


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.