Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
VitinF

C Exercício em linguagem C

Recommended Posts

Pessoal tudo bem?

 

Me chamo Victor e estou iniciando o curso de Análise e Desenvolvimento de Sistemas, o meu professor passou um exercício em C que precisamos fazer o seguinte: 

Peca ao usuário para digitar seus dados pessoais (Nome, Endereço, Data de Nascimento, Cidade, CEP, Email), verifique se as informações de Data de Nascimento, CEP e Email fazem sentido, e mostre ao usuário as informações, se estão todas corretas, ou mostre que alguma informação estava errada.

 

Preciso de uma ajuda para resolver essa atividade. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@VitinF Bom dia, então antes agradeceria se você desse uma atenção as regras do forum/tópico. 

Em relação ao exercício, você precisa declarar as variáveis para armazenar os dados, e usar uma função para verificar a data de nascimento, cep e email. Poste algum código para eu poder complementar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • @TYSQUARE89  Ok, Veja só, fiz a parte de cadastro, estou com erro no data_nas e cep, porque a parte do resultado não imprimi o que eu digito aprece um numero qualquer na data de nascimento e CEP. 

    A parte de verificação estou lendo alguns tópicos para poder fazer pois não sei como se faz ainda. 

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int main () {
        
        struct cadastro {

            char nome[50];
            char end[50];
            char cidade[50];
            char email[50];
            int cep[9];
            int data_nas[10];
        
            };
            
        struct cadastro usuario;
        
        
        printf("\n-------------------Cadastro Usuario------------------------------------\n\n");
        
            printf("Nome Completo: ");
            fgets(usuario.nome, 50, stdin);
            
            printf("\nEndereco: ");
            fgets(usuario.end, 50, stdin);
            
            printf("\nCidade: ");
            fgets(usuario.cidade, 50, stdin);
            
            printf("\nEmail: ");
            fgets(usuario.email, 50, stdin);
            
            printf("\nData de Nascimento: ");
            scanf("%i", &usuario.data_nas);
            
            printf("\nCep: ");
            scanf("%i", &usuario.cep);
            
        
            printf("\n\n---------------------------Resultado-------------------------------\n\n");
            
            printf("Nome..................: %s\n", usuario.nome);
            printf("Endereço..............: %s\n", usuario.end);
            printf("Data de Nascimento....: %i\n", usuario.data_nas);
            printf("Cidade................: %s\n", usuario.cidade);
            printf("Cep...................: %i\n", usuario.cep);
            printf("Email.................: %s\n", usuario.email);
            
       
            return 0;
        
        
        
    }

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @VitinF Você está usando um vetor para CEP e DATA, use apenas:

    long int cep;              //999999

    char DATA[8];           //22/12/22

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • @TYSQUARE89 Excelente assim ficou do jeito que eu queria mesmo. Você pode me passar uma ideia fazer a verificação nesse código ? 

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @VitinF No CEP não tem muito do que verificar, apenas ver se é positivo, na data verifique se contêm as barras de separação e se o mês/dia são coerentes. Ex:

     

    11/12/2017

     

    //Tente usar o strtok e atoi juntos.
    
    //modelo - dd/mm/aaaa
    char DATA[10];
    int dia, mes, ano;
    
    //verificar barras
    if(DATA[2]== '/' && DATA[5]== '/' && strlen(DATA) == 10){
    	//...barras nos lugares corretos
    	
    	//separar dia
    	dia = (atoi(DATA[0])*10)+atoi(DATA[1]);
    	//separar mese
    	mes = (atoi(DATA[3])*10)+atoi(DATA[4]);
    	//separar ano
    	ano = (atoi(DATA[6])*1000)+(atoi(DATA[7])*100)+(atoi(DATA[8])*10)+(atoi(DATA[9]));
    
            if(dia > 0 && dia <= 31){
            //...dia correto..comparar com o mês, poís nem todos meses são 31 dias.
            }
            if(mes > 0 && dia <= 12){
            //...mês correto..
            }
            if(ano > 0){
            //...ano correto
            }
    }

     

    Editado por TYSQUARE89

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • @TYSQUARE89 Não onde qual é o erro, mas não esta compilando no if = dia, mes, ano

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <conio.h>
    #define MAX 50
    
    
    // Definindo o tipo T_pessoa com a struct pessoa
    typedef struct pessoa {
    	
    	// Atributos de cada T_pessoa
    	char nome[MAX], end[MAX], cidade[MAX], email[MAX], DATA[10];
    	int cep[7];
    } T_pessoa;
    
    // Funcao que cadastra uma pessoa
    // Recebe o T_pessoa pessoa que ela vai preencher
    void CadastrarPessoa(T_pessoa *pessoa) {
    	
    	
    	
    	printf("-------------------------------------------------------------------------------\n");
    	printf("                           CADASTRO PESSOA                                  \n");
    	printf("-------------------------------------------------------------------------------");
    	
    	// Recebendo os dados e armazenando em T_pessoa pessoa
    	printf("\n Digite o nome: ");
    	fgets((*pessoa).nome, MAX, stdin);
    	printf("\n Digite o endereco: ");
    	fgets((*pessoa).end, MAX, stdin);
    	printf("\n Digite a cidade: ");
    	fgets((*pessoa).cidade, MAX, stdin);
    	printf("\n Digite o email (exemplo@exemplo.com): ");
    	fgets((*pessoa).email, MAX, stdin);
    	printf("\n Digite o cep (somente numeros): ");
    	scanf("%d", &(*pessoa).cep);
    }
    
    // verificando se email digitado é válido 
    int VerificaEmail(T_pessoa pessoa) {
    	int i;
    	
    	
    }
    
    //Verificando se a data nascimento é inválida
    int VerificaData(T_pessoa pessoa) {
    	int dia, mes, ano;
    		if(pessoa.DATA[2]== '/' && pessoa.DATA[5]== '/' && strlen(pessoa.DATA) == 10){ // Use as barras nos lugares corretos
    			// Dia
    			dia = (atoi(pessoa.DATA[0])*10)+atoi(pessoa.DATA[1]);
    			// Mes
    			mes = (atoi(pessoa.DATA[3])*10)+atoi(pessoa.DATA[4]);
    			// Ano
    			ano = (atoi(pessoa.DATA[6])*1000)+(atoi(pessoa.DATA[7])*100)+(atoi(pessoa.DATA[8])*10)+(atoi(pessoa.DATA[9]));
    
            		if(dia > 0 && dia <= 31){
           				 // Dia correto de cada mês
           		 }
            			if(mes > 0 && dia <= 12){
            				// Mês correto
            		}
            				if(ano > 0){
            				// Ano
            			}
    		}
    			
    }
    	
    
    
    main() {
    	
    	T_pessoa pessoa;
    	
    	CadastrarPessoa(&pessoa);
    	
    	printf("\n\n-------------------------------------------------------------------------------\n");
    	printf("                           DADOS                                    \n");
    	printf("-------------------------------------------------------------------------------");
    	// Imprimindo resultados em T_pessoa pessoa
    	printf("\nNome................: %s", pessoa.nome);
    	printf("\nEndereço............: %s", pessoa.end);
    	printf("\nCidade..............: %s", pessoa.cidade);
    	printf("\nE-mail..............: %s", pessoa.email);
    	printf("\nCep.................: %d", pessoa.cep);
    	
    	printf("\n\n");
    	
    	
    	system("pause");
    	return 0;
    }

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    2 horas atrás, VitinF disse:

    dia = (atoi(pessoa.DATA[0])*10)+atoi(pessoa.DATA[1]);

    A função atoi recebe como argumento uma string e não um char.

    Eu alterei aqui e rodou, teste ae.

    			// Dia
    			dia = ((pessoa.DATA[0]-'0')*10)+(pessoa.DATA[1]-'0');
    			// Mes
    			mes = ((pessoa.DATA[3]-'0')*10)+(pessoa.DATA[4]-'0');
    			// Ano
    			ano = ((pessoa.DATA[6]-'0')*1000)+((pessoa.DATA[7]-'0')*100)+((pessoa.DATA[8]-'0')*10)+((pessoa.DATA[9]-'0'));

     

    Editado por HeartBreat

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Bom fiz algumas alterações e consegui um resultado legal, mas ainda não resolvi o problema do E-mail e CEP. E-mail eu preciso verificar se tem "texto@texto" e cep são 7 números mais o traço. 

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <locale.h>
    #define MAX 50
    
    
    // Definindo o tipo T_pessoa com a struct pessoa
    typedef struct pessoa {
    	
    	// Atributos de cada T_pessoa
    	char nome[MAX], end[MAX], cidade[MAX], email[MAX];
    	int cep[7], ano, mes, dia;
    } T_pessoa;
    
    // Funcao que cadastra uma pessoa
    // Recebe o T_pessoa pessoa que ela vai preencher
    void CadastrarPessoa(T_pessoa *pessoa) {
    	
    	printf("\n===========================================================================");
    	printf("\n                           CADASTRO PESSOA                                 ");
    	printf("\n===========================================================================");
    	
    	// Recebendo os dados e armazenando em T_pessoa pessoa
    	printf("\n Digite o nome: (somente texto) ");
    	fgets((*pessoa).nome, MAX, stdin);
    	printf("\n Digite o endereço: (rua, numero e bairro) ");
    	fgets((*pessoa).end, MAX, stdin);
    	printf("\n Digite a cidade: (somente texto) ");
    	fgets((*pessoa).cidade, MAX, stdin);
    	printf("\n Digite o e-mail: (exemplo@exemplo.com) ");
    	fgets((*pessoa).email, MAX, stdin);
    	printf("\n Digite o ano de nascimento: (somente 4 numeros) ");
    	scanf("%d", &(*pessoa).ano);
    	printf("\n Digite o mes de nascimento: (somente 2 numeros) ");
    	scanf("%d", &(*pessoa).mes);
    	printf("\n Digite o dia de nascimento: (somente 2 numeros) ");
    	scanf("%d", &(*pessoa).dia);
    	printf("\n Digite o cep (somente 7 numeros): ");
    	scanf("%d", &(*pessoa).cep);
    	
    }
    
    int ValidarData(int dia, int mes, int ano)
        {
        if ((dia >= 1 && dia <= 31) && (mes >= 1 && mes <= 12) && (ano >= 1900 && ano <= 2017)) // Dios, Meses e Anos que serão validados.
            {
                if ((dia == 29 && mes == 2) && ((ano % 4) == 0)) // Ano bissexto 
                {
                    return 1;
                }
                if (dia <= 28 && mes == 2) // Mes de fevereiro contêm apenas 28 dias, exceto nos anos bissextos.
                {
                    return 1;
                }
                if ((dia <= 30) && (mes == 4 || mes == 6 || mes == 9 || mes == 11)) // OS meses 04, 6, 9 e 11 contêm apenas 30 dias 
                {
                    return 1;
                }
                if ((dia <=31) && (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes ==8 || mes == 10 || mes == 12)) // OS meses 01, 03, 05, 07, 08, 10 e 12 contêm 31 dias
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
          }
           else
               {
                    return 0;
               }
    }
    
    main() {
    	//Definição de linguagem para aparecer na tela (Acentos e afins)
    	setlocale(LC_ALL, "portuguese");
    	
    	// variavel do tipo pessoa que sera salva
    	T_pessoa pessoa;
    	
    	// cadastrando pessoa
    	CadastrarPessoa(&pessoa);
    	
    	// limpando tela
    	system("cls");
    	
    	//Variável para chamar função
    	int verificacao, verificacaoEmail;
    	// Chamando a função Data
    	verificacao = ValidarData(pessoa.dia, pessoa.mes, pessoa.ano);
    	
    	if (verificacao == 1)  {
    		if (verificacaoEmail == 1) {
    					
    			// Imprimindo resultados em T_pessoa pessoa
    			printf("\n=================================================================");
    			printf("\n                           DADOS INFORMADOS    	               ");
    			printf("\n=================================================================");
    			printf("\nNome............: %s", pessoa.nome);
    			printf("\nEndereço........: %s", pessoa.end);
    			printf("\nData nascimento.: %d/%d/%d", pessoa.dia, pessoa.mes, pessoa.ano);
    			printf("\n\nCidade..........: %s", pessoa.cidade);
    			printf("\nE-mail..........: %s", pessoa.email);
    			printf("\nCep.............: %d", pessoa.cep);
    			printf("\n\n");
    		} else {
    			printf("E-mail invalido");
    		}
    	} else {
    	
    	printf("Data nascimento invalida\n");
    	
    		
    	}
    	
    	system("pause");
    	return 0;
    }

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×