Recursividad en C... [Desglose de timbres fiscales]


/* Demuestre que, con sellos de 4 y 5 céntimos, se puede franquear cualquier carta
que requiera sellos por valor de 12 o más céntimos.

Usando recursividad, realizado por Kellerman Rivero krsloco@gmail.com
bajo licencia creative commons, UNELTCA Catedra: Prog II

*/


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

#define FACTORI 5
#define FACTORP 4
#define desc_num_impar(x) x-= FACTORI
#define desc_num_par(x) x-= FACTORP

void descomponer (int num, int *c_par, int *c_impar);

int main() {
int c_par = 0, c_impar = 0;
int n;

do {
system(
"cls");
printf(
"Valor de los Timbres Fiscales? ");
scanf(
"%d",&n);
}
while (n < 12);
printf(
"Sellos Equivalentes: \n");
descomponer(n,&c_par,&c_impar);
(c_par >
0) ? printf("%d timbres de %d centimos\n",c_par,FACTORP): 1;
(c_impar >
0) ? printf("%d timbres de %d centimos\n",c_impar,FACTORI):1 ;
}

void descomponer (int num, int *c_par, int *c_impar){
if (num > 0) {
if(num%FACTORI==0) {
desc_num_impar(num);
*c_impar = *c_impar+
1;
}
else {
desc_num_par(num);
*c_par= *c_par+
1;
}
descomponer(num,c_par,c_impar);
}
}

0 comentarios:

Publicar un comentario

Seguidores

Estadisticas