Data de nacimento e signos
Publicado por Marcelo Vicente Pesente Fachinelli 17/12/2008
[ Hits: 11.342 ]
Homepage: www.azanonatec.com.br
Esse é um programa que meu colega e eu fizemos para aula de lógica do nosso curso técnico. O programa consiste na entrada do nome, da data de nascimento e do sexo da pessoa.
A partir dessas informações o programa calcula quantos anos a pessoa tem e o signo da pessoa. Esse foi um dos meus primeiros programas em C, espero que gostem.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void exercicio3()
{
/*Bloco de declaração de variáveis*/
char sexo[1],signo[12],nome[30];
char dateAux5[3];
char dateAux6[2];
int dia,mes,ano,anoAux,bi,ponteiro,diaMes,diaAux,i;
char* comparar[12] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
char* date2 = __DATE__;
strncpy(dateAux5,date2,3);
strncpy(dateAux6,date2+4,6);
ponteiro = 0;
/*Inicio do programa*/
printf("Digite seu nome:");
scanf("%s",&nome);
dia:
system("clear");
printf("Digite o dia que nasceu:");
scanf("%d",&dia);
if(dia<1 || dia>31)
{
printf("O dia deve estar entre 1 e 31!\n");
system("PAUSE");
goto dia;
}
if(ponteiro == 1)
goto meses;
mes:
system("clear");
printf("Digite o mes que nasceu:");
scanf("%d",&mes);
if(mes<1 || mes>12)
{
printf("O mes deve estar entre 1 e 12!\n");
system("PAUSE");
goto mes;
}
ano:
system("clear");
printf("Digite o ano que ela nasceu:");
scanf("%d",&ano);
if(ano < 1900)
{
printf("O ano deve ser maior que 1900!\n");
system("PAUSE");
goto ano;
}
sexo:
printf("H)Homem\nM)Mulher\nSelecione seu sexo:");
scanf("%s",&sexo);
if(strcmp(sexo,"M")!=0 && strcmp(sexo,"H")!=0 && strcmp(sexo,"m")!=0 && strcmp(sexo,"h")!=0)
{
printf("Opcao invalida!\n");
system("PAUSE");
goto sexo;
}
system("clear");
meses:
if(mes == 1)
{
if(dia < 21)
strcpy(signo,"Capricornio");
else
strcpy(signo,"Aquario");
diaMes = 31;
}
else if(mes == 2)
{
if(ano%4 == 0)
bi = 29;
else
bi = 28;
if(dia > bi)
{
if(bi == 0);
printf("Ano bissexto!!!\n");
printf("O mes de fevereiro nao tem %d dias!\n",dia);
system("PAUSE");
ponteiro = 1;
goto dia;
}
else
{
if(dia<20)
strcpy(signo,"Aquario");
else
strcpy(signo,"Peixes");
}
diaMes = bi;
}
else if(mes == 3)
{
if(dia < 21)
strcpy(signo,"Peixes");
else
strcpy(signo,"Aries");
diaMes = 31;
}
else if(mes == 4)
{
if(dia>30)
{
printf("O mes de abril nao tem %d dias!\n",dia);
system("PAUSE");
ponteiro = 1;
goto mes;
}
else
{
if(dia < 21)
strcpy(signo,"Aries");
else
strcpy(signo,"Touro");
}
diaMes = 30;
}
else if(mes == 5)
{
if(dia < 21)
strcpy(signo,"Touro");
else
strcpy(signo,"Gemeos");
diaMes = 31;
}
else if(mes == 6)
{
if(dia>30)
{
printf("O mes de junho nao tem %d dias!\n",dia);
system("PAUSE");
ponteiro = 1;
goto mes;
}
else
{
if(dia < 21)
strcpy(signo,"Gemeos");
else
strcpy(signo,"Cancer");
}
diaMes = 30;
}
else if(mes == 7)
{
if(dia < 22)
strcpy(signo,"Cancer");
else
strcpy(signo,"Leao");
diaMes = 31;
}
else if(mes == 8)
{
if(dia < 23)
strcpy(signo,"Leao");
else
strcpy(signo,"Virgem");
diaMes = 31;
}
else if(mes == 9)
{
if(dia>30)
{
printf("O mes de setembro nao tem %d dias!\n",dia);
system("PAUSE");
ponteiro = 1;
goto mes;
}
else
{
if(dia < 23)
strcpy(signo,"Virgem");
else
strcpy(signo,"Libra");
}
diaMes = 30;
}
else if(mes == 10)
{
if(dia < 23)
strcpy(signo,"Libra");
else
strcpy(signo,"Escorpiao");
diaMes = 31;
}
else if(mes == 11)
{
if(dia>30)
{
printf("O mes de novembro nao tem %d dias!\n",dia);
system("PAUSE");
ponteiro = 1;
goto mes;
}
else
{
if(dia < 22)
strcpy(signo,"Escorpiao");
else
strcpy(signo,"Sagitario");
}
diaMes = 30;
}
else
{
if(dia < 23)
strcpy(signo,"Sagitario");
else
strcpy(signo,"Capricornio");
diaMes = 31;
}
anoAux = atoi(date2+7);
ano = anoAux - ano;
for(i=0; i < 11 ;i++)
{
if(strcmp(comparar[i],dateAux5)==0)
{
break;
}
}
if(i - mes < 0)
ano = ano -1;
else if(11 - mes == 0)
{
diaAux = atoi(dateAux6);
if(diaAux-dia < 0)
ano = ano -1;
}
if(strcmp(sexo,"H")==0 || strcmp(sexo,"h")==0)
printf("Sr. %s, seu signo eh %s e voce tem %d anos!\n",nome,signo,ano);
else
printf("Sra. %s, seu signo eh %s e voce tem %d anos!\n",nome,signo,ano);
system("PAUSE");
return;
}
Barra de carregamento (Loading Bar)
Calcula valor da prestação atrasada
light_konsole - konsole de ultima hora
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Fiz uma pergunta no fórum mas não consigo localizar (13)
Quais os códigos mais dificeis que vcs sabem fazer? (2)
Não consigo instalar distro antiga no virtualbox nem direto no hd (7)
Servidor Ubuntu 24.04 HD 500 não tenho espaço na \home\adminis... [RES... (8)
Dá para criar um bom jogo usando a linguagem de programação C? [RESOLV... (1)









