[C con Clase] necesito corregir este programa en dev c++
Steven Davidson
srd4121 en njit.edu
Mie Jun 9 20:02:00 CEST 2010
Hola José,
Jose hernandez wrote:
> hola pues la verdad este programa no quiere ejecutar no quiere
> compilar me vota error que dice '' diciembre undeclared (first use
> the function) necesito que este programa este funcionando al 100%.
> gracias de antemano.
>
Esto significa que estás usando "algo" que se llama 'diciembre' como si
fuese una función, pero no declaraste 'diciembre' previamente. Recuerda
que en C, todas las entidades (tipos de datos, variables, funciones, y
constantes), que vayas a usar, deben ser creadas con anterioridad.
> #include<stdio.h>
> #include<stdlib.h>
> #include<conio.h>
>
> main()
> {
> printf(":::::::::::::::\n:::::::::::::::… DE VENTAS!!!\n:::::::::::::::::::::'''''''\…
> printf("\n______________________________…
> void llenar(long ventas [12][5]);
> void anual(long ventas [12][5]);
Aunque es correcto declarar las funciones localmente, no lo aconsejo.
Típicamente, se declaran las funciones globalmente, pero las variables
localmente.
> long ventas [12][5];
> llenar(ventas);
> anual(ventas);
> diciembre(ventas);
> mayo(ventas);
> menor(ventas);
Estas tres últimas funciones no han sido declaradas previamente y por
tanto el compilador te marca errores. Debes declarar las funciones antes
de usarlas.
En este caso, sugiero que tengas todas las declaraciones globalmente
antes de 'main()'. Por ejemplo,
/* Prototipos: Declaraciones de Funciones */
void llenar( long ventas [12][5] );
void anual( long ventas [12][5] );
void diciembre( long ventas [12][5] );
void mayo( long ventas [12][5] );
void menor( long ventas [12][5] );
/* main: Programa Principal */
int main()
{
...
}
/* Definiciones de Funciones */
void llenar( long ventas [12][5] )
{
...
}
void anual( long ventas [12][5] )
{
...
}
...
>
> getch()
> }
>
> void llenar(long ventas [12][5])
> {
> int i,j;
> for (i=0;i<12;i++)
> {
> for (j=0;j<5;j++)
> {
> printf("DIGITE LA GANANCIA DEL MES %d DE LA AGENCIA %d:\t",i,j);
> scanf("%ld",& ventas[i][j]);
> }
> }
> }
>
> void anual(long ventas [12][5]);
Esto es un error: agregas un punto y coma al final de la "firma" de la
función. Al definir una función, no se escribe el punto y coma, sino que
se usan las llaves {}. Esto es,
void anual( long ventas [12][5] )
{
long i,j,acu;
...
}
> {
> long i,j,acu;
> for (i=0;i<12;i++)
> {
> for (j=0;j<5;j++)
> {
> acu=ventas[i][j];
Esta variable es un acumulador. Deberías usar alguna operación de suma
para ir sumando (valga la redundancia) parcialmente y así acumular las
cantidades hasta terminar, obteniendo el total.
Sugiero que te acostumbres a usar el oeprador += para este tipo de
operaciones. Esto es,
acu += ventas[i][j];
> }
> }
> printf("EL TOTAL DE VENTAS ANUALES FUE:\t%d",acu);
> }
>
> void diciembre(long ventas [12][5]);
Aquí tienes el mismo error. Elimina este punto y coma.
> {
> long j,acu=0;
> {
> for (j=0;j<5;j++)
> {
> acu=ventas[12][j]+acu;
Esto no es correcto. Ten presente que 'ventas' es un array de 12 arrays
de 5 enteros. Como el índice de un array de N elementos SIEMPRE empieza
por 0 (cero), entonces el índice del último elemento será N-1. Por lo
tanto, no podemos usar 12 como un índice.
Seguramente, querías indicar el último elemento, que en este caso es 11.
Esto es,
acu += ventas[11][j];
> }
> }
> printf("EL PROMEDIO DE VENTAS EN DICIEMBRE FUE:\t%d",acu);
> }
>
> void mayo(long ventas [12][5]);
Nuevamente, elimina este punto y coma.
> {
> long j,a,b,c,d,e;
> {
> a=ventas[5][0]+acu;
> b=ventas[5][1]+acu;
> c=ventas[5][2]+acu;
> d=ventas[5][3]+acu;
> e=ventas[5][4]+acu;
Esto no es correcto. No has definido 'acu'.
> if (a>b)&&(a>c)&&(a>d)&&(a>e)
Te falta abrir y cerrar los paréntesis de 'if'. La sintaxis es:
if ( <expresión_condicional> ) <sentencia>
Espero que esto te aclare las dudas.
Steven
Más información sobre la lista de distribución Cconclase