Adsence

domingo, 5 de junio de 2011

Controlar-informacion-del-IDU

Leave a Comment
[caption id="attachment_1038" align="aligncenter" width="672"]Controlar informacion del IDU Controlar informacion del IDU[/caption]

Se quiere controlar la información del Instituto de Desarrollo Urbano (IDU), donde existen N Contratistas (N dado por teclado). Los proyectos (obras) son asignados a un único contratista que será el encargado de desarrollar la obra. Un contratista puede tener adjudicado máximo 5 proyectos.
Los contratistas tienen un: Nit, Nombre y cantidad de proyectos.

Un proyecto tiene un código, un presupuesto, # de días en realizo el proyecto y un tipo de proyecto (1. Vias, 2. Reconstrucción y 3. Puentes). Todos estos datos son dados por teclado en el llenado inicial menos el # de días ya que este se llena cuando finaliza el proyecto.



Dependiendo del tipo de proyecto existe un plazo máximo de días para desarrollar la obra si se excede de estos límites debe cobrarse una multa que será proporcional al valor del día según el presupuesto por la cantidad de días de retraso.




Tipo de Proyecto Días para su Ejecución

















Vías120
Reconstrucción65
Puentes345




Desarrolle un programa en C modular usando estructuras que llene la información de N contratistas y sus proyectos internos. Y

posteriormente determine:



  • Función llenar

  • Función que reciba el código de un proyecto y los días que duro dicha obra y posteriormente almacene dentro de la variable días el valor correspondiente y calcule si el contratista paga o no una multa y a cuanto asciende esta.

  • Función que reciba el Nit de un contratista y retorne la suma de todos los presupuestos de los proyectos que tiene a cargo.

  • Función que determine que contratistas tienen a su cargo más proyectos de Reconstrucción.




[cpp]

</div>
/*
Se quiere controlar la información del Instituto de Desarrollo Urbano (IDU), donde existen N Contratistas (N dado por
teclado). Los proyectos (obras) son asignados a un único contratista que será el encargado de desarrollar la obra. Un contratista
puede tener adjudicado máximo 5 proyectos.
Los contratistas tienen un: Nit, Nombre y cantidad de proyectos.
Un proyecto tiene un código, un presupuesto, # de días en realizo el proyecto y un tipo de proyecto (1. Vias, 2. Reconstrucción y 3.
Puentes). Todos estos datos son dados por teclado en el llenado inicial menos el #de días ya que este se llena cuando finaliza el
proyecto.

Dependiendo del tipo de proyecto existe un plazo máximo de días para desarrollar la obra si se excede de estos límites debe
cobrarse una multa que será proporcional al valor del día según el presupuesto por la cantidad de días de retraso.

Tipo de Proyecto Días para su Ejecución
Vías 120
Reconstrucción 65
Puentes 345
Desarrolle un programa en C modular usando estructuras que llene la información de N contratistas y sus proyectos internos. Y
posteriormente determine:
* Función llenar
* Función que reciba el código de un proyecto y los días que duro dicha obra y posteriormente almacene dentro de la
variable días el valor correspondiente y calcule si el contratista paga o no una multa y a cuanto asciende esta.
* Función que reciba el Nit de un contratista y retorne la suma de todos los presupuestos de los proyectos que tiene a cargo.
* Función que determine que contratistas tienen a su cargo más proyectos de Reconstrucción.
*/

#include< stdio.h >
#include< conio.h >
struct Proyect
{
int cod,dia,tip;
float pre;
};
struct Contratista
{
int nit,can;
char nom[50];
struct Proyect pro[5];
};
void portada(){
printf("...............................................................................\a\n");
printf("................******.*****.** **.*****.****.*****.*****..**................\a\n");
printf("................ ** .** **.*** ***.** **.** .** **.**.**.***................\a\n");
printf("................ ** .*****.*******.*****.****.*****.*****..**................\a\n");
printf("................ ** .** **.** * **.** .** .*** ....**..**................\a\n");
printf("................**** .** **.** **.** .****.** **....**.****...............\a\n");
printf("...............................jamper91.hostei.com.............................\a\n");
printf("\n");
};
void final(){
printf("-------------------------------------------------------------------------------\a\n");
printf ("******************************************************************************\a\n");
printf (" Creado por jamper91@hotmail.com\n");
printf (" Cucuta Campeon\n");
printf ("******************************************************************************\a\n");
printf("-------------------------------------------------------------------------------\a\n");
};
void llenar(struct Contratista c[],int t)
{

for(int i=0;i< t;i++)
{
printf("Digite nit %d:",i+1);
scanf("%d",&c[i].nit);
printf("Digite cantidad de proyectos %d:",i+1);
scanf("%d",&c[i].can);

for(int j=0;j< c[i].can;j++)
{
printf("\n\tDigite codigo del Proyecto %d:",j+1);
scanf("%d",&c[i].pro[j].cod);
printf("\tDigite presupuesto del proyecto %d:",j+1);
scanf("%f",&c[i].pro[j].pre);
printf("\tDigite el tipo del proyecto %d:",j+1);
scanf("%s",&c[i].pro[j].tip);

}
printf("Digite el nombre %d:",i+1);
scanf("%s",&c[i].nom);
}

}
/*
* Función que reciba el código de un proyecto y los días que duro dicha obra y posteriormente almacene dentro de la
variable días el valor correspondiente y calcule si el contratista paga o no una multa y a cuanto asciende esta.

*/
void digitarDias(struct Contratista c[],int t,int cod,int dias)
{
//Recorro todos los contratistas
for(int i=0;i< t;i++)
{
//Recorro todos los proyectos del contratista i, para verificar el codigo
for(int j=0;j< c[i].can;j++)
{
if(c[i].pro[j].cod==cod)
{
c[i].pro[j].dia=dias;
//Reviso que tipo de proyecto es

if(c[i].pro[j].tip==1){
if(dias >120)
printf("Debe pagar multa\n");
}else if(c[i].pro[j].tip==2){
if(dias >65)
printf("Debe pagar multa\n");
}else if(c[i].pro[j].tip==3){
if(dias >345)
printf("Debe pagar multa\n");
}

}

}
}

}
/*
* Función que reciba el Nit de un contratista y retorne la suma de todos los presupuestos de los proyectos que tiene a cargo.

*/
float presupuestos(struct Contratista c[],int t,int nit)
{
float s=0;
for(int i=0;i< t;i++)
{
//Si el contratista i tiene el nit que recibo, recorro todos sus proyectos y sumo sus presupuestos
if(c[i].nit==nit)
{
for(int j=0;j< c[i].can;j++)
{
s=s+c[i].pro[j].pre;
}

}
}
return s;

}
/*
* Función que determine que contratistas tienen a su cargo más proyectos de Reconstrucción.
*/
void mpr(struct Contratista c[],int t)
{
//Variables que usare para comprar, tomando como punto de partida de que el primer contratista siempre sera el mayor
int m=0,p=0;
for(int i=0;i< t;i++)
{
//variable que me dira cuantos proyectos del tipo reconstruccion tiene el contratista i
int tr=0;
for(int j=0;j< c[i].can;j++)
{
if(c[i].pro[j].tip==2)
tr++;
}
//Como ya tengo la cantidad de reconstrucciones, las comparo, es caso de que sea mayor, actualizo mayor y guardo esa posicion
if(tr >m)
{
m=tr;
p=i;
}
}
printf("El contratista con mas proyectos de tipo Reconstruccion es: %s\n",c[p].nom);

}
main()
{
int n;
portada();
printf("Cantidad de Contratistas:");
scanf("%d",&n);
//Creamos el vector de estructuras
struct Contratista c[n];
llenar(c,n);
//Digo que el proyecto 122 demoro 3 dias en realizarze
digitarDias(c,n,122,3);
digitarDias(c,n,123,312);
digitarDias(c,n,124,69);
digitarDias(c,n,125,540);
//Determinar cuanto presupuesto tiene el contratista cuyo nit es 12345
float p=presupuestos(c,n,12345);
printf("El presupuesto del contratista con nit 12345 es: %.2f\n",p);
mpr(c,n);
final();
getch();
return 0;

}

[/cpp]

0 comentarios :