[ Foro de C ]

Mi programa no funciona (Recompensa a quien me ayude)

21-Nov-2015 15:57
Jimena Sandoval
1 Respuestas

Chicos, tengo un problema con mi código, es bastante básico, la condición era que tuviera tres funciones de lo que sea, pero no me regresa el valor correcto, aquí se ve la descripción del programa, gracias y se los recompensaré.

 
//un salón de eventos ofrece servicios todos los días. por la mañana el servicio cuesta $680 
//a partir de las 2:00pm se cobra $800 y si el evento es después de las 9:00 pm, el costo sube al $970. 
//cada evento solo debe durar máximo 4 horas. cada hora adicional incrementa el costo en $80 previo aviso (durante el apartado) 
//si el evento dura más de lo notificado se cobra un recargo de $150 por hora. 
//realice un programa que permita al cliente saber 
//el gasto que realizará de acuerdo a la hora del apartado y al total de tiempo estimado como duración del evento.
#include <stdio.h>
#include<conio.h>
#include<windows.h>
#include<stdlib.h>
void marco(void);
void horario(int horar,int dur);
 
int main(void)
{
int j;
clrscr();
marco();
horario(0,0);
cprintf("tu costo seria %i",j);
return 0;
}
 
void horario(int horar, int dur)
{
int j=0;
gotoxy(17,7);
cprintf("en que horario desdeas tu evento\n");
gotoxy(18,8);
cprintf("manana de 8:00am a 1:00pm escriba 1\n");
gotoxy(19,9);
cprintf("tarde de 2:00pm a 8:00pm escriba 2\n");
gotoxy(17,10);
cprintf("noche de 9:00pm a 1:00am escriba 3\n");
gotoxy(17,11);
scanf("%i",&horar);
gotoxy(15,12);
cprintf("si deseas mas horas en tu evento escribe el numero de horas\n");
gotoxy(17,13);
scanf("%i",&dur);
 
	if(horar==1)
		{
		j=680;
			if(dur<=10&&dur>=1)
			{
			j=j+(80*dur);	
			}
				if(dur==0)
				{
				j=680;
				}
		}
	if(horar==2)
	{
	j=800;
			if(dur<=10||dur>=1)
			{
			j=j+(80*dur);	
			}
				if(dur==0)
				{
				j=680;
				}
		}
	if(horar==3)
	{
		j=970;
		if(dur<=10||dur>=1)
			{
			j=j+(80*dur);	
			}
				if(dur==0)
				{
				j=680;
				}
		}
return j;
}
 
 
void marco(void)
{
int x,y;
gotoxy(18,5);
textcolor(yellow);
cprintf("bienvenido al salon de eventos maria bonita");
gotoxy(14,6);
cprintf("a continuacion podra calcular el costo de su evento");
for(y=3;y<=23;y++)
		{
		textcolor(8);
		gotoxy(5,y);
		cprintf("%c",176);
		gotoxy(75,y);
		cprintf("%c",176);
		}
for(x=5;x<=75;x++)
		{
		textcolor(8);
		gotoxy(x,3);
		cprintf("%c",176);
		gotoxy(x,23);
		cprintf("%c",176);
		}
}
 


 


21-Nov-2015 21:38
Nacho Cabanes (+30)

Es que tu función "horario", que es la única que tiene un "return", no puede devolver nada porque está declarada como "void". El compilador debería estar dándote el mensaje de error correspondiente, ¿no?

En principio, sería int horario(int horar, int dur).

Pero hay más cosas que no entiendo: ¿por qué pasas "horar" y "dur" como parámetros si los vas a pedir dentro de la función?






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)