Ir ao conteúdo

Posts recomendados

Postado

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. 

Postado

@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.

Postado

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

Postado

@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
        }
}

 

Postado

@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 ([email protected]): ");
	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;
}

 

Postado
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'));

 

Postado

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: ([email protected]) ");
	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;
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...