elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda por favor!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda por favor!!  (Leído 1,866 veces)
Serendipity14

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda por favor!!
« en: 23 Diciembre 2011, 02:54 am »

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



En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: Ayuda por favor!!
« Respuesta #1 en: 23 Diciembre 2011, 03:17 am »

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?


En línea

Serendipity14

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda por favor!!
« Respuesta #2 en: 23 Diciembre 2011, 03:22 am »

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.
En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: Ayuda por favor!!
« Respuesta #3 en: 23 Diciembre 2011, 03:40 am »

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
Código
  1. return float(consumo);

por

Código
  1. return consumo;
En línea

s00rk

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: Ayuda por favor!!
« Respuesta #4 en: 23 Diciembre 2011, 06:33 am »

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!.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
SOS:AYUDA POR FAVOR!!!
Juegos y Consolas
wennam 2 3,192 Último mensaje 5 Enero 2004, 04:01 am
por FeRmO
AYUDA -.- ahora no entro más en 4chan (tengo una duda, ayuda por favor)
Foro Libre
Draklit 6 8,792 Último mensaje 15 Octubre 2010, 03:14 am
por Draklit
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines