Data de nacimento e signos

Publicado por Marcelo Vicente Pesente Fachinelli 17/12/2008

[ Hits: 11.014 ]

Homepage: www.azanonatec.com.br

Download Exercicio3.c




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.

  



Esconder código-fonte

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

Scripts recomendados

Funções de comparação de String

Utilizando ponteiros na manipulação de strings

Par ou ímpar?

Crivo de Eratóstenes

Peso Ideal


  

Comentários
[1] Comentário enviado por Mvp.poa em 17/12/2008 - 17:25h

Bom parece que eu me enganei na hora de escrever o titulo hehe

[2] Comentário enviado por andrezc em 11/09/2009 - 21:49h

Não gostei do seu estilo de programação, usou system("pause"); e varios gotos...

usa um getchar(); envez de getchar();

E o goto pode lhe atrapalhar no futuro com aplivações maiores.. revisa isso ae.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts