//------------------------------------------------------------------------------
//Declaracao das Variaveis Globais
//------------------------------------------------------------------------------
int erro;
FILE *txt;
FILE *out;
struct SE_P1_2012_2 //struct estatica para os dados
{
int peso, beneficio;
int relacaoBP;
char nome[12];
}pessoa[7];
struct SE_P1_2012_2 //struct dinamica para os dados
{
int peso;
int beneficio;
float relacaoBP;
char nome[12];
struct SE_P1_2012_2 *prox; //ponteiro para a proxima entrada
}pessoa;
//------------------------------------------------------------------------------
//Declaracao das Funcoes
//------------------------------------------------------------------------------
int menu();
void leitura_P1_2012_2();
void insertionsort_P1_2012_2();
void impressao_P1_2012_2();
//Programa Principal
int main()
{
int escolha;
do{
escolha=menu();
switch (escolha)
{
case 1:
leitura_P1_2012_2();
insertionsort_P1_2012_2();
impressao_P1_2012_2();
break;
}
}while(escolha);
return 0;
}
//menu: menu de escolha
int menu()
{
int choice;
do{
cout<<"\n-------------------\n";
cout<<"1- P1 - 2012/2\n";
cout<<"0- Sair.\n";
cout<<"-------------------\n";
cin>>choice;
}while(choice<0||choice>1);
return choice;
}
//--------------------------------------------------------------------
//Funcao leitura_P1_2012_2(): Faz a leitura do arquivo programa08_entrada01.txt
//--------------------------------------------------------------------
void leitura_P1_2012_2()
{
txt= fopen("programa08_entrada01.txt", "r");
if (!txt)
printf("\n\nArquivo programa08_entrada01.txt nao pode ser aberto.\n");
for (int i=0; i<7; i++)
{
erro= fscanf(txt, "%s\t%f\t%f\n", pessoa[i].nome, &pessoa[i].peso, &pessoa[i].beneficio);
pessoa[i].relacaoBP= pessoa[i].beneficio/pessoa[i].peso;
if (erro!=3)
printf("\n\nErro na leitura dos dados do arquivo programa08_entrada01.txt.\n");
}
//---------------------------------------
//Constantes
//-----------------------------------
#define DB 31
#define MB 12
#define AB 2011
#define SB 7
//---------------------------------------
//Variaveis globais
//-----------------------------------
int dia, mes, ano, i, totaldias, ai;
//---------------------------------------
//funcoes
//-----------------------------------
void semana();
int passado();
int retornames(int i, int cont);
int retornadia(int cont);
int retornasemana(int dias);
int futuro();
//---------------------------------------
//Prog principal
//-----------------------------------
int main()
{
semana();
return 0;
}
//---------------------------------------
//funcao: semana --> retorna o porra do dia da semana
//-----------------------------------
void semana()
{
printf ("\n\ndigite a merda da data certo fdp:\n\n");
scanf ("%d/%d/%d", &dia, &mes, &ano);
if ((dia==29)&&(mes==2)&&((ano%4)!=0))
printf ("se fudeu!!! idiota!!! fdp!!! caralhooo\n\n");
else
if (ano<=AB)
totaldias = passado();
else
totaldias = futuro();
ai = retornasemana(totaldias);
}
//---------------------------------------
//funcao: passado --> numero de dias antes da data base
//-----------------------------------
int passado()
{
int cont=0;
for (i=AB;i>ano;i--)
{
if (i%4!=0)
cont += 365;
else
cont += 366;
}
//printf ("%d\n\n",cont);
for (i=MB;i>mes;i--)
cont = retornames(i, cont);
cont = retornadia(cont);
return cont;
}
//---------------------------------------
//funcao: futuro --> numero de dias antes da data base
//-----------------------------------
int futuro()
{
int cont=0;
for (i=(AB+1);i<ano;i++)
{
if (i%4!=0)
cont += 365;
else
cont += 366;
}
for (i=1;i<mes;i++)
cont = retornames(i, cont);
cont += dia;
return cont;
}
//---------------------------------------
//funcao: retornames --> numero de mes+dia antes da data base
//-----------------------------------
int retornames(int i, int cont)
{
switch(i)
{
case 1:
cont+=31;
break;
case 2:
if((ano%4)!=0)
cont+=28;
else
cont+=29;
break;
case 3:
cont+=31;
break;
case 4:
cont+=30;
break;
case 5:
cont+=31;
break;
case 6:
cont+=30;
break;
case 7:
cont+=31;
break;
case 8:
cont+=31;
break;
case 9:
cont+=30;
//printf ("%d\n\n",cont);
break;
case 10:
cont+=31;
//printf ("%d\n\n",cont);
break;
case 11:
cont+=30;
break;
case 12:
cont+=31;
break;
}
return cont;
}
//---------------------------------------
//funcao: retornadia --> numero de mes+dia antes da data base
//-----------------------------------
int retornadia(int cont)
{
switch(mes)
{
case 1:
cont+=(31-dia);
break;
case 2:
if((ano%4)!=0)
cont+=(28-dia);
else
cont+=(29-dia);
break;
case 3:
cont+=(31-dia);
break;
case 4:
cont+=(30-dia);
break;
case 5:
cont+=(31-dia);
break;
case 6:
cont+=(30-dia);
break;
case 7:
cont+=(31-dia);
break;
case 8:
cont+=(31-dia);
break;
case 9:
cont+=(30-dia);
break;
case 10:
cont+=(31-dia);
break;
case 11:
cont+=(30-dia);
break;
case 12:
cont+=(31-dia);
break;
}
return cont;
}
//---------------------------------------
//funcao: retornasemana --> fala qual dia da semana eh
//-----------------------------------
int retornasemana(int dias)
{
int aux;
aux = (dias%SB);
printf ("%d\n\n",dias);
if (ano<AB)
aux = SB - aux;
switch(aux)
{
case 0:
printf("sab\n\n");
break;
case 1:
printf("dom\n\n");
break;
case 2:
printf("seg\n\n");
break;
case 3:
printf("ter\n\n");
break;
case 4:
printf("qua\n\n");
break;
case 5:
printf("qui\n\n");
break;
case 6:
printf("sex\n\n");
break;
case 7:
printf("sab\n\n");
break;
}
}