Hola, estoy haciendo un programa que suma las cuotas de un suscriptor , y tiene diferentes contratos. Al final del programa, te muestra el suscriptor que pago el mayor total de importe entre todos los contratos y si tiene mas de un contrato que lo muestre. En mi caso, el programa está bien codificado, la única salvedad es que si el suscriptor tiene 1 contrato, no sé por qué me muetra un numero muy grande pero si tiene mas de 1 no. La variable en cuestión es contc, armé una función para que incremente el contador que se llama INCRE. No sé si es algún error en la inicialización del variable (la inicializo antes de que entre al segundo While, donde compara si el numero de suscriptor ingresado es igual al anterior y se mantiene).. El contador funciona bien si ingreso un suscriptor igual más de una vez, pero si lo ingreso solo una vez me muestra una cifra muy grande 46363424, por poner un ejemplo. De algún lado tiene que estar sumando esa cantidad...
#include<stdio.h>
#include<conio.h>
int fecha(char*,int,int);
int incre(int);
void main()
{int dd,mm,aa,ns,nc,contc,nsa,mns,b=1,mcontc,i;
float impp,cuota,mimpt,impt;
clrscr();
dd=fecha("Ingrese dia: ",1,30);
mm=fecha("Ingrese mes: ",1,12);
aa=fecha("Ingrese año: ",0,90);
printf("\nESTADO DE LOS CONTRATOS AL %d/%d/%d",dd,mm,aa);
printf("\nIngrese numero de suscriptor: ");
scanf("%d",&ns);
printf("\nIngrese numero de contrato: ");
scanf("%d",&nc);
while(ns>=0&&nc!=9999)
{nsa=ns;contc=0;impt=0;//Acá Inicializo al contador!
while((ns==nsa)&&nc!=9999)
{contc=incre(contc);impp=0;//Acá el contador se incrementa con la función!
for(i=1;i<=10;i++)
{do{printf("\nCuota %d: ",i);
scanf("%f",&cuota);
if(cuota==0)printf("DEBE");}while(cuota<0);
impp+=cuota;}
printf("\nImporte pagado: %.2f",impp);
impt+=impp;
printf("\nIngrese numero de suscriptor: ");
scanf("%d",&ns);
printf("\nIngrese numero de contrato: ");
scanf("%d",&nc);}
if(b==1||mimpt<impt)
{b=0;mimpt=impt;mns=nsa;
if(contc>1)
mcontc=contc;}}//Si el contador es mayor a uno lo guarda mcontc!
printf("\nEl suscriptor que pago mayor importe es: %d",mns);
if(mcontc>1)//Muestra si es que tiene mas de 1 contrato!
printf("\nDicho suscriptor tiene: %d contratos",mcontc);
getch();}//termina main
int fecha (char* mens,int x,int y)
{int v;
do{printf("%s",mens);scanf("%d",&v);}while(v<x||v> y);
return v;}
int incre(int cont)//funcion contador!!
{cont=cont+1;
return cont;}