Data de nacimento e signos

Publicado por Marcelo Vicente Pesente Fachinelli 17/12/2008

[ Hits: 10.422 ]

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

Algoritmo de ordenaÁ„o: Selection Sort

Divisores simult‚neos de 2 nķmeros

Nķmeros ASCII_ART

Parte 6 - Sess„o de estudo sobre VETORES

Progressűes Aritmťticas e Geomťtricas (PA e PG)


  

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
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts