Ir para o conteúdo
Noriso

Exercício em C

Mensagens Recomendadas

Noriso    0
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1133
HappyHippyHippo

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Let's Learn    0
Let's Learn
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;
}

 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1133
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"

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Let's Learn    0
Let's Learn
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1133
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pwseo    224
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).

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Noriso    0
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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1133
HappyHippyHippo
17 minutes ago, Noriso said:

Obrigado e já consegui resolver o programa :D

podes apresentar a tua solulão ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Noriso    0
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;
}
}

 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1133
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;
}

 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade