Autor Tema: Ayuda con este ejercicio con while , do while, y funciones

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

05 Octubre, 2011, 02:57 am
Leído 1019 veces

eze32

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 121
  • Karma: +0/-0
  • Sexo: Masculino
Hola necesito ayuda con este ejercicio.

A)Lectura -cálculo - exhibición de resultados.
1) Se debe estudiar la administración y el control y el control de las llamadas efectuadas en una empresa, que tiene varios locutorios en la zona.
El usuario debe solicitar por pantalla el ingreso,con las leyendas aclaratorias necesarias, de los 3 valores reales correspondiente a las tres tarifas básicas del importe por minuto (Local,Larga distancia e internacional). Previamente  definir como constante el valor del IVA (define) y posteriormente los datos de la llamada:
-N° de locutorio(entero)
-Telefeno(carácter). En un locutorio puede haber varios teléfonos.
-Fecha de llamada= día,mes,año
-Hora de la llamda en minutos(hm)
-Tipo de llamada(L=loca,D=larga distancia,I=internacional)
-Tiempo en minutos de la llamada(real)
2)Calcular costo de la llamada(tiempo*tarifa+IVA)
3)Informar la comunicación exhibiendo el ticket por pantalla con numero de locutorio, teléfono,fecha,hora de la llamada, tiempo de la llamada, costo de la llamada.

B) Proceso iterativos con varios juegos de datos.
1)Ampliar el proceso para que se ingresen cantidad de llamadas con sus respectivos datos. El ingreso de datos finaliza con n° de locutorio igual a -1. Los datos vienen ordenados por numero de locutorio y por hora(en minutos).
2)Se debe controlar que los valores ingresados sean mayores que cero y positivos.
3)Exhibir por pantalla el listado general de comunicaciones en 9 columnas con titulo, con n°de locutorio, teléfono,fecha de la llamada: día/mes/año ,hora: H/m ,tipo de llamada, tiempo de la llamada. Informar los totales facturados por n° de locutorio y la cantidad de llamadas por hora. Al final mostrar el total facturado.
4)Informar la llamada más costosa, indicando a que numero de locutorio y a que teléfono pertenece.

C) Aplicación de funciones.

Hacer una función llamada es_fecha_valida, que reciba el día el mes y el año y que devuelva un 0 si alguno de estos datos esta mal o 1 si la fecha esta bien. Se debe tener en cuenta que los días estén entre 1 y la cantidad de días que tenga el mes(30,31, y según el año 28,29). Si la fecha es errónea volver a pedirla hasta que sea correcta.


Bueno lo que hice fue:

En el punto A):

tl=tarifa loca.
tld= "     larga distancia.
ti=   "     internacional.
nloc=n°locutorio
tel=telefono
hm=horas en minuto
tpl=tipo de llamada
tm=tiempo de llamada en minutos.

Código: [Seleccionar]
#include <conio.h>
#include <stdio.h>
#define iva 0,21

void main()
{ int nloc,dia,mes,año,hm;
   float tm,tl,tld,ti,cl;
  char tel,tpl;
  printf("ingrese tarifa local:");
  scanf("%f",&tl);

  printf("ingrese tariga larga distancia:");
  scanf("%f",&tld);

  printf("ingrese tarifa internacional:");
  scanf("%f",&ti);
 
  printf("ingrese numero de loc:");
  scanf("%d",&nloc);

  printf("ingrese numero de telefono:");
  scanf("%c",&tel);

  printf("ingrese dia:");
  scanf("%d",&dia);

  printf("ingrese mes:");
  scanf("%d",&mes);

  printf("ingrese año:");
  scanf("%d",&año);
 
 printf("ingrese hora en minutos:");
  scanf("%d",&hm);

  printf("ingrese tipo de llamada:");
  scanf("%c",&tpl);

  printf("ingrese tiempo de llamada en minutos:");
  scanf("%f",&tm);

 switch(tpl)
      { case 'L': cl=tm*tl+iva;
                     break;
         case 'D': cl=tm*tld+iva;
                      break;
         case 'I' : cl=tm*ti+iva;
                        break;
        dafault:printf("Tipo de llamada no valido");

 
}
  printf("N°locutorio : %d\nTelefono : %c\nFecha: :%d/%d/%d\nHora en minuto: %d\nCosto de llamada: %.2f ",nloc,tel,dia,mes,año,hm,cl);
getch();
}

B)
Código: [Seleccionar]
#include <conio.h>
#include <stdio.h>
#define iva 0,21

void main()
{ int nloc,nlocant,nlocmax,dia,mes,año,hm,s=0;
   float tm,tl,tld,ti,tf=0,tfloc,cl,clmax;
  char tel,tpl,telmax;
  printf("ingrese tarifa local:");
  scanf("%f",&tl);

  printf("ingrese tariga larga distancia:");
  scanf("%f",&tld);

  printf("ingrese tarifa internacional:");
  scanf("%f",&ti);

  do
{  printf("ingrese numero de loc:");
    scanf("%d",&nloc);
}while(nloc<=-1);
while(nloc!=-1)
    { nlocant=nloc;
       tfloc=0;
       { while(nlocant==nloc)
         printf("ingrese numero de telefono:");
  scanf("%c",&tel);

  printf("ingrese dia:");
  scanf("%d",&dia);

  printf("ingrese mes:");
  scanf("%d",&mes);

  printf("ingrese año:");
  scanf("%d",&año);
 
 printf("ingrese hora en minutos:");
  scanf("%d",&hm);

  printf("ingrese tipo de llamada:");
  scanf("%c",&tpl);

  printf("ingrese tiempo de llamada en minutos:");
  scanf("%f",&tm);

 switch(tpl)
      { case 'L': cl=tm*tl+iva;
                     break;
         case 'D': cl=tm*tld+iva;
                      break;
         case 'I' : cl=tm*ti+iva;
                        break;
        dafault:printf("Tipo de llamada no valido");}

  tfloc+=cl;
  if(s==0||cl>clmax)
     { clmax=cl;
        nlocmax=nclo;
       telmax=tel;
       s++; 
}
 do
{  printf("ingrese numero de loc:");
    scanf("%d",&nloc);
}while(nloc<=-1);

printf("N°locutorio : %d    Telefono : %c      Fecha: :%d/%d/%d      Hora en minuto: %d      Tipo de llamada: %c      Tiempo de llamada en minutos: %f  \n",nloc,tel,dia,mes,año,hm,tpl,tm);

}
printf("Total facturado por locutorio: %.2f\n N°de loc: %d ",tfloc,nlocant);

tf+=tfloc;

}
printf("total facturado: %.2f\n Costo maximo: %.2f   del locutorio numero: %d   del telefono %c telmax   ");
getch();
}

Bueno aca mi duda fue como sacar la cantidad de llamadas por hora, que no lo hice porque no se me ocurrio como hacerlo.

C) Este punto no se como hacerlo.


Bueno los ejercicios estos se hacen con while, di/while, funciones(no avanzadas) que es hasta donde vi yo. No vi ni arrays ni vectores ni nada de eso .