Ir ao conteúdo
  • Cadastre-se

C Exercício em linguagem C


VitinF

Posts recomendados

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. 

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
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
        }
}

 

Link para o comentário
Compartilhar em outros sites

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

 

Link para o comentário
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'));

 

Link para o comentário
Compartilhar em outros sites

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

 

Link para o comentário
Compartilhar em outros sites

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