Ir ao conteúdo

Posts recomendados

Postado

Estou com um problema para resolver em Linguagem C, Fazer um programa de calculo de TROCO.

Como posso melhorar este código passando 3 parâmetros?

O Enunciado Implemente uma melhoria no código descrito abaixo para que a quantidade de notas de troco obedeça a quantidade disponível de cada valor nota. Para rodar esse programa você precisará passar 3 parâmetros, por exemplo trocoV2 . Vide um exemplo real: trocoV2 notas qte_disponiveis_de_notas 289. Se não tiver notas suficientes para dar o troco imprima a mensagem: “Não é possível dar o troco”.


 

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

#define ARRAYMAX 10

void load(char *argv[], int *v, int *n, int index)
{
    FILE *fp = fopen(argv[index], "r");
    char buff[ARRAYMAX];

    while(fgets(buff, ARRAYMAX - 1, fp) != NULL)
    {
        *n = *n + 1;
        v[*n] = atoi(buff);
    }
    fclose(fp);
}

void printarray(int *a, int n)
{
    for(int i = 0; i <= n; i++)
        printf("%d ", a[i]);
}

int main(int argc, char *argv[]) {


    int notas[ARRAYMAX];
    int numero_de_notas[ARRAYMAX];
    int numero_de_notas_disponiveis[ARRAYMAX];
    int minino_de_notas = 0;

    //int troco = 153;    //troque o valor dessa variável para testar com outros casos
    int troco = atoi(argv[3]);
    int troco_original = troco;

    int n = -1;
    load(argv, notas, &n, 1);
    n = -1;
    load(argv, numero_de_notas_disponiveis, &n, 2);


    for (int i = 0; i <= n; i++) {

        numero_de_notas[i] = troco / notas[i];
        troco = troco - ( numero_de_notas[i] * notas[i] );
        minino_de_notas = minino_de_notas + numero_de_notas[i];
        printf("%d x %d = %d\n", numero_de_notas[i], notas[i], numero_de_notas[i] * notas[i]  );

    }

    printf("O minimo de notas para o troco de %d eh: %d", troco_original, minino_de_notas);
    printf("Qtde de notas disponives:\n");
    printarray(numero_de_notas_disponiveis,n);


}

 

Postado
6 horas atrás, Matheus Soares Schmidt disse:

Estou com um problema para resolver em Linguagem C, Fazer um programa de calculo de TROCO.

Como posso melhorar este código adicionando 3 novos parâmetros? Um deles precisa dizer a quantidade de notas disponíveis e caso nao tenha nota suficiente para o troco deverá imprimir " não é possivel dar o troco". Acredito que consegui me expressar melhor, conto com a ajuda da comunidade.


 

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

#define ARRAYMAX 10

void load(char *argv[], int *v, int *n, int index)
{
    FILE *fp = fopen(argv[index], "r");
    char buff[ARRAYMAX];

    while(fgets(buff, ARRAYMAX - 1, fp) != NULL)
    {
        *n = *n + 1;
        v[*n] = atoi(buff);
    }
    fclose(fp);
}

void printarray(int *a, int n)
{
    for(int i = 0; i <= n; i++)
        printf("%d ", a[i]);
}

int main(int argc, char *argv[]) {


    int notas[ARRAYMAX];
    int numero_de_notas[ARRAYMAX];
    int numero_de_notas_disponiveis[ARRAYMAX];
    int minino_de_notas = 0;

    //int troco = 153;    //troque o valor dessa variável para testar com outros casos
    int troco = atoi(argv[3]);
    int troco_original = troco;

    int n = -1;
    load(argv, notas, &n, 1);
    n = -1;
    load(argv, numero_de_notas_disponiveis, &n, 2);


    for (int i = 0; i <= n; i++) {

        numero_de_notas[i] = troco / notas[i];
        troco = troco - ( numero_de_notas[i] * notas[i] );
        minino_de_notas = minino_de_notas + numero_de_notas[i];
        printf("%d x %d = %d\n", numero_de_notas[i], notas[i], numero_de_notas[i] * notas[i]  );

    }

    printf("O minimo de notas para o troco de %d eh: %d", troco_original, minino_de_notas);
    printf("Qtde de notas disponives:\n");
    printarray(numero_de_notas_disponiveis,n);


}

 

 

Postado

Lembro de ter feito algo semelhante em Java um tempo atrás. A finalidade do código é diferente, mas o princípio é o mesmo: converter um valor em notas de dinheiro.

 

Pode usar ela como base de raciocínio. O código em si até pode ser portado para C, mas vai ter que alterar a lógica. A classe pode ser encontrada no github.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!