Calcular pagamento com a menor quantidade de cédulas possível

Publicado por Francisco Leandro Xavier Carneiro (última atualização em 22/03/2010)

[ Hits: 11.844 ]

Homepage: http://conexaotech.blogspot.com/

Download pag_cedul_disp.c




Bom gente, esse é meu primeiro script, é apenas para dar um start da minha participação no VOL.

Sem muita conversa, o script faz o seguinte: lê um valor, a quantidade de tipos de valores e quais são esses valores, fazendo o pagamento utilizando a menor quantidade de cédulas possível dentre as disponíveis.

  



Esconder código-fonte

// PAGAMENTO UTILIZANDO A MENOR QUANTIDADE DE CÉDULAS POSSÍVEIS
// Autor: Francisco Leandro Xavier (leandrox)
 
#include <stdio.h>
#include <stdio.h>

int main () {

  int val, qtdtipnot;
  
  printf("Digite o valor: ");
  scanf("%d", &val);
  
  printf("Digite a qtd. de valores de cedulas: ");
  scanf("%d", &qtdtipnot);

  float valnot[qtdtipnot];
  int qtdvalnot[qtdtipnot];
  
  for (int i = 1; i <= qtdtipnot; i++) {  
    printf("Digite qual a %da. maior nota: ", i);
    scanf("%f", &valnot[i]);
  }
  
  for (int i = 1; i <= qtdtipnot; i++) 
    qtdvalnot[i] = 0;
  
  int i = 1;
  
  while (i <= qtdtipnot) {
    while (val >= valnot[i]) {
      val = val - valnot[i];
      qtdvalnot[i] = qtdvalnot[i] + 1; 
    }
    i++;
  }
  
  int j = 0;
  
  for (int i = 1; i <= qtdtipnot; i++)  
    j = j + qtdvalnot[i];
  
  printf("São utilizadas %d cédulas!\n", j);
  
  for (int i = 1; i <= qtdtipnot; i++) { 
    if (qtdvalnot[i] != 0) {
     printf("%d de R$ %0.2f\n", qtdvalnot[i], valnot[i]);
      j = j + qtdvalnot[i];
    }
  }
    
  return 0;
}

Scripts recomendados

Plano cartesiano

Cálculo de Energia de um Corpo

Calcula o raio de um objeto cilindrico

Minha primeira biblioteca em C

Operações Com Matrizes


  

Comentários
[1] Comentário enviado por felipeferreira em 22/03/2010 - 09:11h

fui tentar compilar, deu o seguinte erro:

pag_cedul_disp.c: In function ‘main’:
pag_cedul_disp.c:20: error: ‘for’ loop initial declarations are only allowed in C99 mode
pag_cedul_disp.c:20: note: use option -std=c99 or -std=gnu99 to compile your code
pag_cedul_disp.c:25: error: redefinition of ‘i’
pag_cedul_disp.c:20: note: previous definition of ‘i’ was here
pag_cedul_disp.c:25: error: ‘for’ loop initial declarations are only allowed in C99 mode
pag_cedul_disp.c:28: error: redefinition of ‘i’
pag_cedul_disp.c:25: note: previous definition of ‘i’ was here
pag_cedul_disp.c:40: error: redefinition of ‘i’
pag_cedul_disp.c:28: note: previous definition of ‘i’ was here
pag_cedul_disp.c:40: error: ‘for’ loop initial declarations are only allowed in C99 mode
pag_cedul_disp.c:45: error: redefinition of ‘i’
pag_cedul_disp.c:40: note: previous definition of ‘i’ was here
pag_cedul_disp.c:45: error: ‘for’ loop initial declarations are only allowed in C99 mode

[2] Comentário enviado por leandrox em 22/03/2010 - 10:47h

Felipe , compilei várias vezes e executou sem problemas.

Declare o i apenas no início do programa, e veja se roda legal, :)
Me informe um próximo erro, se ocorrer!
_______________________________________________________________
#include <stdio.h>
#include <stdio.h>

int main () {

int val, qtdtipnot;
int i = 0;

printf("Digite o valor: ");
scanf("%d", &val);
.
.
.

[3] Comentário enviado por tonyfrasouza em 31/08/2013 - 12:54h

Depois de muito tempo mas posso ajudar também.

Aconteceu comigo ao declarar a variável "i" diretamente dentro do bloco "for".
Declarar a variável "i" fora do bloco "for" resolve.
Para título de curiosidade e caso queria manter a declaração da variável "i" dentro do bloco "for" e aparecer a requisição do modo C99, faça:
gcc -std=c99 programa.c -o programa
ou:
gcc -std=gnu99 programa.c -o programa

Aqui funcionou perfeitamente.


Contribuir com comentário