Ayuda por favor!!

Iniciado por Serendipity14, 23 Diciembre 2011, 02:54 AM

0 Miembros y 1 Visitante están viendo este tema.

Serendipity14

Buenas!
Me estoy volviendo loca, necesito ayuda...
Tengo que hacer un programa que metiendo el usuario datos de consumo de agua en los meses de Noviembre y Diciembre, se haga el cálculo de litros consumidos en un cierto periodo, el precio al que asciende la factura y el máximo de litros consumidos y qué días. Por cierto, tengo que hacerlo con funciones.
Lo tengo prácticamente montado, pero tengo ciertos errores que no tengo ni idea de cómo solucionar. Si pudiera alguien que pilote un poco echarle un ojo y decirme qué es lo que falla le estaría muy agradecida.
Os dejo aquí lo que tengo hecho, muchas gracias.
_______________
#include<stdlib.h>
#include<stdio.h>
#define TOPE 31

int buscar_max(float v[],int tope);
void llenar_array(float v[],int tope);
int calcular(float v[],int dia1, int dia2);
int calcular_precio(float v[],int tope);

main()
{
      float nov[TOPE-1],dic[TOPE],totalNov,totalDic,precioTot,precioDic,precioNov;
      int op,i,p,n,pmaxN,pmaxD,pmax;

printf("Introduce el consumo,por dia, de Noviembre:\n");
llenar_array(nov,TOPE-1);
printf("\n\n");
printf("Introduce el consumo,por dia, de Diciembre:\n");
llenar_array(dic,TOPE);
printf("\n\n");

printf("Introduce un periodo comprendido entre dos dias y se calcularan los litros consumidos:\n");
printf("Elige el mes en el que quieres hacer el calculo:\n1.Noviembre.\n2.Diciembre.\n0.Finalizar.\n");
scanf("%d",&op);
switch (op)
{
       case 1:
            printf("Introduce los dias, separados por espacio, en los que quieres hacer el calculo:\n");
            scanf("%d" "%d",&i,&p);
            totalNov=calcular(nov,i,p);
            printf("El consumo total desde el dia %d hasta el dia %d es de %.2f",i,p,totalNov);
            break;
           
       case 2:
            printf("Introduce los dias, separados por espacio, en los que quieres hacer el calculo:\n");
            scanf("%d" "%d",&i,&p);
            totalDic=calcular(dic,i,p);
            printf("El consumo total desde el dia %d hasta el dia %d es de %.2f",i,p,totalDic);
            break;
       case 0:
            printf("Siguiente accion.\n");
            break;
}

printf("\nA continuacion estimaremos el total de la factura ciñendonos a los precios por consumo establecidos por la empresa.\n");
printf("La factura engloba ambos meses, Noviembre y Diciembre.\n");
precioNov=calcular_precio(nov,TOPE-1);
precioDic=calcular_precio(dic,TOPE);
precioTot=precioDic+precioNov;
printf("El total asciende a: %.2f.\n\n",precioTot);

printf("Consumo maximo de cada mes.\n ");
pmaxN=buscar_max(nov,TOPE-1);
pmaxD=buscar_max(dic,TOPE);
printf("El consumo maximo de noviembre son %.2f litros los dias: \n",nov[pmaxN]);
for(n=0;n<=TOPE;n++)
{if (nov[pmaxN]==nov[n])
{printf("%d\n",n+1);}
}
printf("El consumo maximo de diciembre son %.2f litros los dias: \n",dic[pmaxD]);
for(n=0;n<=TOPE;n++)
{if (dic[pmaxD]==dic[n])
{printf("%d\n",n+1);}
}





system("PAUSE");
}
_________Funciones
1.
#include<stdio.h>
void llenar_array(float v[],int tope)

{ int i,cons;


for(i=0;i<tope;i++)
{ do
  {
  printf("Introduce el consumo del dia %d de:\n",i+1);
  scanf("%d",&cons);
  }while (cons<0);

  v=cons;
}

}

2.
#include<stdio.h>

int calcular_precio(float v[],int tope)
{
    int i;
    float consumo=0;

for(i=0;i<tope;i++)
{ if(v<60)
  { if(v<30)
    {consumo=consumo+v*0.02;}
    else
    {consumo=consumo+v*0.05;}
  }
else
{consumo=consumo+v*0.07;} 
}
return float(consumo);

3.
#include<stdio.h>

int calcular(float v[],int dia1,int dia2)
{
  int k;
  float suma=0;
for(k=dia1-1;k<=dia2-1;k++)
{
    suma=suma+v[k];
}

return suma;
}

4.
#include<stdio.h>

int buscar_max(float v[],int tope)
{ int i;
  float pmax=0;

for(i=1;i<tope;i++)
{if (v>v[pmax])
    i=pmax;
}
return pmax;
}


Ferno

Vamos por partes diría Jack:

1) Cuando postees código, usá las etiquetas GeSHi, es un menú desplegable justo a la derecha del formato de la fuente. Elijes el lenguaje en el que está codeado y vas a ver que queda muy legible.

2) ¿Podrías especificar el problema? ¿Exactamente qué es lo que no está dando?

Serendipity14

Gracias, no tengo ni idea de cómo postear. Este es mi último recurso.
Pues en las funciones de calcular me da un error que dice
[Warning]converting to int from float
Por otra parte ya no sé si puede haber algún error más.

Muchas gracias por la respuesta.

Ferno

Jaja está bien, todo se aprende en la vida.
Al momento de postear código, lo pegas en el cuadro de texto en la respuesta, lo seleccionas, vas al menú desplegable que dice GeSHi arriba a la derecha, y seleccionas el lenguaje (en este caso C).

Por lo que pude ver a simple vista, estás retornando variables de tipo float en las funciones, cuando el valor de retorno es un tipo int! Para solucionarlo, debes cambiar el tipo de dato que retorna la función (cambiar int por float en las declaraciones y definiciones de las funciones).
Otra cosa, en la función calcular_precio, cambia
return float(consumo);

por

return consumo;

s00rk

Estas mal al hacer esto:

v=cons;

ya que "v" seria el vector y no puedes declararle asi directamente sino seria asi:

v=cons;

E igual con lo demas que haces
v<30 y eso esta incorrecto porque asi haces referencia directa al vector, y no por cada posicion que hay en el
que tendrai que ser siempre
v[posicionaver]

Y asi sucesivamente!.