Necesito ayuda con mi código Los recompensaré

Iniciado por jymevs, 21 Noviembre 2015, 16:05 PM

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

jymevs

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

Zodiak98

Código (cpp) [Seleccionar]

int main(void)
{
int j; // <-
clrscr();
marco();
horario(0,0);
cprintf("tu costo seria %i",j); // <-
return 0;
}


Estás mandando a imprimir por pantalla la variable 'j' cuando a esta no la igualas a ningún valor.

0xFer

Como dice Zodiak98, el metodo horario está lanzando un valor pero nadie lo cacha, deberías intentar con:

int j = horario(0,0);
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}