Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Error con contador

Estas en el tema de Error con contador en el foro de C/C++ en Foros del Web. Hola, estoy haciendo un programa que suma las cuotas de un suscriptor , y tiene diferentes contratos. Al final del programa, te muestra el suscriptor ...
  #1 (permalink)  
Antiguo 07/10/2012, 17:00
 
Fecha de Ingreso: octubre-2012
Mensajes: 1
Antigüedad: 11 años, 6 meses
Puntos: 0
Error con contador

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;}

Etiquetas: contador, int, programa, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:15.