Ir ao conteúdo

Posts recomendados

Postado
struct dados {
    char nome[28];
    char celular[9];
	char CPF[10]; // Se não tiver 10 digitos, pedirá para anotar novamente.
    int diaNascimento;
    int mesNascimento;
    int anoNascimento;
}

int main (void) {
    
	int i, j;
    long long dig1, dig2, aux;
	struct dados y[28]; // Para usar a struct como variavel
	
	diaNascimento = 0;
    mesNascimento = 0; 
    anoNascimento = 0; 
    
	setlocale(LC_ALL, "");
    
	for (i=0; i<28; i++){ // Parte que irá coletar os dados do struct
		
		printf ("\n*** Cadastro %d ***\n", i+1);
       
		printf ("Nome: ");
        scanf ("%s", y[i].nome);
		
		do {
		printf ("Celular: ");
        scanf ("%s", &y[i].celular);
        
		} while (y[i].celular => 900000000 || y[i].celular <= 999999999);
        
        printf ("CPF: ");
        scanf ("%s", &y[i].CPF);
        
        if ((CPF >= 0) && (CPF <= 9)) {
        printf ("CPF correto");
        }
        else {
    	printf ("Digite o CPF correto: ");
    	scanf ("%s", &y[i].CPF);
	    }
		
		do {
		printf ("\n Digite o dia do seu nascimento: "); 
        scanf ("%d", &y[i].diaNascimento);
		} while (diaNascimento > 0 || diaNascimento <= 31)
        
		
		printf ("\n Digite o mês do seu nascimento: ");
        scanf ("%d", &y[i].mesNascimento);
        
         if ((mesNascimento > 0) && (mesNascimento <= 12)) {
        	printf ("\nMês correto");
		}
		else {
			printf ("\n Digite o mês correto: ");
			scanf("%d", &y[i].mesNascimento);
		}
		
		printf ("\n Digite o ano do seu nascimento: ");
        scanf ("%d", &y[i].anoNascimento);
        
         if ((anoNascimento >= 1900) && (anoNascimento <= 2021)) {
        	printf ("\nAno correto");
		 }
		 else {
        printf ("\n Digite o ano correto: ");
        scanf("%d", &y[i].anoNascimento);
         }         
	}
    
	printf ("\n\n*** CONSULTA NO CADASTRO ***\n"); 
    
	printf ("Escolha uma posição a exibir (1 a 28): ");
    scanf ("%d", &i);
    
	printf ("Nome: %s\n", y[i-1].nome);
    printf ("Celular: %s\n", y[i-1].celular);
	printf ("CPF: %s\n", y[i-1].CPF);
    printf ("Data de Nascimento: %d/%d/%d\n", y[i-1].diaNascimento, y[i-1].mesNascimento, y[i-1].anoNascimento);
    
    system ("\n pause");
}

Esse código está dando erro em vários lugares.

 

error: 'diaNascimento' undeclared (first use in this function)

   24 |  diaNascimento = 0;

      |  ^~~~~~~~~~~~~

MapaII.c:41:26: error: expected expression before '>' token

   41 |   } while (y[i].celular => 900000000 || y[i].celular <= 999999999);

error: 'CPF' undeclared (first use in this function)

   46 |         if ((CPF >= 0) && (CPF <= 9)) {

error: expected ';' before 'printf'

   57 |   } while (diaNascimento > 0 || diaNascimento <= 31)

 

Podem me ajudar a corrigir?

  • Curtir 1
Postado

@Lucca Rodrigues

MapaII.c:40:55: error: expected expression before '<' token

   40 |   } while (y[i].celular >= 900000000 || y[i].celular =< 999999999);

error: 'CPF' undeclared (first use in this function)

   45 |         if ((CPF >= 0) && (CPF <= 9)) {

 error: 'diaNascimento' undeclared (first use in this function)

   58 |   } while (diaNascimento > 0 || diaNascimento <= 31);

      |            ^~~~~~~~~~~~~

MapaII.c:64:15: error: 'mesNascimento' undeclared (first use in this function)

   64 |          if ((mesNascimento > 0) && (mesNascimento =< 12)) {

      |               ^~~~~~~~~~~~~

MapaII.c:64:53: error: expected expression before '<' token

   64 |          if ((mesNascimento > 0) && (mesNascimento =< 12)) {

      |                                                     ^

MapaII.c:75:15: error: 'anoNascimento' undeclared (first use in this function)

   75 |          if ((anoNascimento >= 1900) && (anoNascimento <= 2021)) {

      |               ^~~~~~~~~~~~~

MapaII.c:84:2: error: expected 'while' before 'printf'

   84 |  printf ("\n\n*** CONSULTA NO CADASTRO ***\n");

  • Curtir 1
Postado
1 hora atrás, Thata_Carvalho disse:

error: 'diaNascimento' undeclared (first use in this function)

   24 |  diaNascimento = 0;

Está tratando diaNascimento como se fosse uma variável global, mas ela está dentro da struct então antes para acessar essa variável tem que declarar a struct, p.ex,

 

#include <stdio.h>

struct dados{
    char nome[28];
    char celular[9];
    char CPF[10];
    int diaNascimento;
    int mesNascimento;
    int anoNascimento;
};

int main (void) {
    struct dados y;

    y.diaNascimento = 0;
    y.mesNascimento = 0; 
    y.anoNascimento = 0; 
...

 

Mas dessa forma não tem utilidade no seu código já que você declarou a struct como um vetor, então para atribuir e acessar esses elementos deve passar o índice como você já fez em outras partes do código (p.ex: y[i].diaNascimento). Corrija as partes que não tem índice como nas estruturas condicionais e na linha de erro do while.

  • Curtir 3
Postado

@Midori  Essa parte já corrigi obrigado. Agora, eu quero saber como posso conseguir resolver os erros do while.

while (y[i].celular >= 900000000 || y[i].celular <= 999999999);
		if (y[i].celular = while) {
			printf("Celular está correto")
		}
		else {
			printf ("Pressione 1 para digitar novamente o seu número de celular: ");
			scanf ("%d", &resp);
		} while (resp == 1);

No if, eu teria que repetir a sequencia do while ou não? poderia me tirar essa duvida?

 

  • Curtir 1
Postado

@devair1010 Já troquei ele. Novo código. 

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h> // Adicionada para fazer o char funcionar

struct dados {
    char nome[28];
    int celular[9];
	int CPF[10]; // Se não tiver 10 digitos, pedirá para anotar novamente.
    int diaNascimento;
    int mesNascimento;
    int anoNascimento;
}

int main (void) {
    
	int i, j, resp;
    long long dig1, dig2, aux;
	struct dados y[28]; // Para usar a struct como variavel
	y[i].diaNascimento = 0;
	y[i].mesNascimento = 0;
	y[i].anoNascimento = 0;
	
	setlocale(LC_ALL, "");
    
	for (i=0; i<28; i++){ // Parte que irá coletar os dados do struct
		
		printf ("\n*** Cadastro %d ***\n", i+1);
       
		printf ("Nome: ");
        scanf ("%s", y[i].nome);
		
		while (y[i].celular != 2)
		printf ("Celular: ");
        scanf ("%d", &y[i].celular);
	
		if ((y[i].celular > 900000000) || (y[i].celular <= 999999999)) {
			printf("Celular está correto. Digite 1 para continuar.");
			scanf ("%d", &resp)
		}
		else {
			printf ("Pressione 2 para digita novamente: ");
			scanf ("%d", &resp);
		} while (resp == 1 || resp == 2);
        
		while (y[i].CPF = )
        printf ("CPF: ");
        scanf ("%d", &y[i].CPF);
        
        if ((CPF >= 0) || (CPF <= 9)) {
        printf ("CPF correto");
        }
        else {
    	printf ("Digite o CPF correto: ");
    	scanf ("%s", &y[i].CPF);
	    }
		
		do {
		printf ("\n Digite o dia do seu nascimento: "); 
        scanf ("%d", &y[i].diaNascimento);
		} while (diaNascimento > 0 || diaNascimento <= 31);
        
		do {
		printf ("\n Digite o mês do seu nascimento: ");
        scanf ("%d", &y[i].mesNascimento);
        
         if ((mesNascimento > 0) || (mesNascimento =< 12)) {
        	printf ("\nMês correto");
		}
		else {
			printf ("\n Digite o mês correto: ");
			scanf("%d", &y[i].mesNascimento);
		}
		
		printf ("\n Digite o ano do seu nascimento: ");
        scanf ("%d", &y[i].anoNascimento);
        
         if ((anoNascimento >= 1900) || (anoNascimento <= 2021)) {
        	printf ("\nAno correto");
		 }
		 else {
        printf ("\n Digite o ano correto: ");
        scanf("%d", &y[i].anoNascimento);
         }         
	}
    
	printf ("\n\n*** CONSULTA NO CADASTRO ***\n"); 
    
	printf ("Escolha uma posição a exibir (1 a 28): ");
    scanf ("%d", &i);
    
	printf ("Nome: %s\n", y[i-1].nome);
    printf ("Celular: %s\n", y[i-1].celular);
	printf ("CPF: %s\n", y[i-1].CPF);
    printf ("Data de Nascimento: %d/%d/%d\n", y[i-1].diaNascimento, y[i-1].mesNascimento, y[i-1].anoNascimento);
    
    system ("\n pause");
}

 

  • Curtir 1
Postado
while (y[i].celular >= 900000000 || y[i].celular <= 999999999);
		if (y[i].celular = while) {
			printf("Celular está correto")
		}
		else {
			printf ("Pressione 1 para digitar
                    novamente o seu número de celular: ");
			scanf ("%d", &resp);
		} while (resp == 1);

 

Está errado, bem errado.

 

Talvez deva voltar aos seu livro ou apostila e rever como funcionam essas coisas. Vai perder menos tempo. Você tem um livro? Um manual?

 

UM EXEMPLO

 

int main(void)
{
    struct dados
     {
        char nome[28];
        char celular[9];
        char CPF[10]; // Se não tiver 10 digitos, pedirá para anotar novamente.
        int diaNascimento;
        int mesNascimento;
        int anoNascimento;

    }   Coisa;

    Coisa.diaNascimento = 300;
    return 0;
}

 

Entenda o que está escrevendo. struct e vetor indicam campos estruturados, que tem coisas dentro. Só isso. Dentro de struct dados tem um celular. E celular é um vetor. vetor é uma coisa que tem um [ ] na declaração. Um vetor de char. Com 9 char. E você acessa por índice.

 

Veja o programa acima, completo.

 

Então nesse programa o que é celular? Nada. Não existe. E o que é Coisa? um estrutura. Seu compilador vai dizer que Coisa é struct dados.

 

    Coisa.diaNascimento = 300;

 

diaNascimento é chamado campo de dados, e é um int. Então você pode  escrever  Coisa.diaNascimento = 300;.

 

E Coisa.celular seria o que? seria char[9], está escrito acima. E você não pode usar como se fosse um número.

 

    while (y[i].celular >= 900000000 || y[i].celular <= 999999999);

 

E isso que escreveu sugere que tem um vetor de dados, no popular uma lista deles, um cadastro. Então escreva como tal e sua vida ficará mais simples. E use nomes mais expressivos.

 

Escreva em torno dos dados.

 

Imagino que esteja tentando ver se o celular é um número (isso dentro de um particular registro dados de um vetor) que começa por 9 e não foi nada disso que escreveu.

 

celular é char[9] como escreveu, 9 letrinhas acessadas de celular[0] a celular[8].
 

    int x = 0;
    if ( Coisa.celular[0] == '9') x = 2;

 

Isso é o que você tentou fazer. 

 

E se fosse um cadastro de 30 dados?

 

Veja esse exemplo e diga se entende a diferença e não continue até entender. É essencial.

 

    typedef struct 
     {
        char nome[28];
        char celular[9];
        char CPF[10]; 
        int diaNascimento;
        int mesNascimento;
        int anoNascimento;

    }   Dado;

    typedef struct 
    {
        int     quantos;
        Dado    dado[30];

    }   Cadastro;
    

int main(void)
{
    Dado    coisa;
    coisa.diaNascimento = 300;
    int x = 0;
    if ( coisa.celular[0] == '9') x = 2;

    //  agora usando o cadastro
    Cadastro    cad;
    // coloca coisa em todas as posições do cad
    for ( int i = 0; i<30; i+=1 )  cad.dado[i] = coisa;
    // agora coloca '2' no inicio do celular do ultimo cara
    // no cadastro
    cad.dado[29].celular[0] = '2';
    cad.quantos = 30;
    return 0;
}

 

  • Curtir 2
Postado
1 hora atrás, Thata_Carvalho disse:
(y[i].celular >= 900000000 || y[i].celular <= 999999999)

Essa variável não pode ser testada dessa forma porque é uma string e não um número.

 

O que poderia ser feito aí é verificar se o primeiro caractere é '9' e se o tamanho também, p.ex,

do{
    scanf("%9s", y[i].celular);
    if(y[i].celular[0] != '9' || strlen(y[i].celular) != 9){
        printf ("Pressione 1 para digitar novamente o seu número de celular: ");
        scanf("%d", &resp);
    }else{
        printf("Celular está correto");
        resp = 0;
    }
}while(resp);

 

  • Curtir 2
Postado
41 minutos atrás, Thata_Carvalho disse:

@arfneto Isso é uma atividade da faculdade, os professores não tem explicado bom, então, tá sempre dando erro.

 

Eu te disse

  • o que está errado
  • porque está errado
  • como escrever certo
  • te mostrei um exemplo completo
  • te mostrei outro exemplo completo de como pode criar um cadastro, uma coleção com esses dados que está usando, e como acessar e testar os dados dentro dele
  • e te fiz 2 perguntas

 

Sei que não respondeu às perguntas, mas terá entendido o que eu expliquei? Rodou os exemplos em seu computador?

 

Nada perguntou sobre o que eu expliquei, só criticou seus professores ;) 

  • Curtir 2
Postado

@Thata_Carvalho    seu código corrigido para poder compilar  ,   ficaria assim  :

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h> // Adicionada para fazer o char funcionar
struct dados
{
    char nome   [28];
    char celular[10];  // uma posição será usada para o \0 finalizador de string
    char CPF    [12]; // Se não tiver 10 digitos, pedirá para anotar novamente.
    int diaNascimento;
    int mesNascimento;
    int anoNascimento;
};
int main( void )
{
    int i, j, resp;
    long long dig1, dig2, aux;
    struct dados y[28];       // Para usar a struct como variavel
    y[0].diaNascimento = 0;
    y[0].mesNascimento = 0;
    y[0].anoNascimento = 0;
    strcpy(y[0].celular,"998782154");  // inicializar a variáveL

    setlocale(LC_ALL, "");

    for (i=0; i<1; i++)      // Parte que irá coletar os dados do struct
    {
        printf ("\n*** Cadastro %d ***\n", i+1);
        printf ("Nome --: ");
        scanf  ("%s", y[i].nome);
        printf("teste de celular %s\n",y[i].celular);
        while( strcmp( y[i].celular,"2") != 0)  // esse 2 seria o qUê  ?
        {
            printf ("Celular: ");
            scanf ("%s", &y[i].celular);
            if (y[i].celular[0] > '9' || y[i].celular[0] < '9')
            {
                printf("Celular está correto. Digite 1 para continuar.");
                scanf ("%d", &resp);
            }
            else
            {
                printf ("Pressione 2 para digita novamente: ");
                scanf ("%d", &resp);
            }
            break; // esse break é só para testar e depois você remove ele
            printf("teste\n");
        }//while (resp == 1 || resp == 2);

        while (strcmp(y[i].CPF , "kh") != 0)
        {
            printf ("CPF --: ");
            scanf ("%s", &y[i].CPF);

            if ((strlen(y[i].CPF) >= 0) && (strlen(y[i].CPF) <= 9))
            {
                printf ("CPF correto");
            }
            else
            {
                printf ("Digite o CPF correto: ");
                scanf ("%s", &y[i].CPF);
            }

            do
            {
                printf ("\nDigite o dia do seu nascimento: ");
                scanf ("%d", &y[i].diaNascimento);
            } while( y[i].diaNascimento < 1 || y[i].diaNascimento > 31);

            do
            {
                printf ("\n Digite o mês do seu nascimento: ");
                scanf ("%d", &y[i].mesNascimento);

                if ( y[i].mesNascimento > 0 && y[i].mesNascimento <= 12) // sinaL errado seria assim  <=
                {
                    printf ("\nMês correto");
                }
                else
                {
                    printf ("\n Digite o mês correto: ");
                    scanf("%d", &y[i].mesNascimento);
                }

                printf ("\n Digite o ano do seu nascimento: ");
                scanf ("%d", &y[i].anoNascimento);

                if ( y[i].anoNascimento >= 1900 && y[i].anoNascimento <= 2021)
                {
                    printf ("\nAno correto");
                }
                else
                {
                    printf ("\n Digite o ano correto: ");
                    scanf("%d", &y[i].anoNascimento);
                }
                printf("no while");
                break;  // esse break é só para testar depois remover
            } while( y[i].anoNascimento > 0 && y[i].anoNascimento <= 31);
            break;  // esse break é só para testar depois remover
        }
    }
    printf ("\n\n*** CONSULTA NO CADASTRO ***\n"         );
    printf ("Escolha uma posição a exibir (1 a 28): "    );
    scanf ("%d", &i                                      );
    printf("\n"                                          );
    printf ("Nome ----------------: %s\n", y[i-1].nome   );
    printf ("Celular -------------: %s\n", y[i-1].celular);
    printf ("CPF -----------------: %s\n", y[i-1].CPF    );
    printf ("Data de Nascimento --: %d/%d/%d\n\n\n"       ,
            y[i-1].diaNascimento, y[i-1].mesNascimento    ,
            y[i-1].anoNascimento                         );
    system ("pause"                                      );
    printf ("\n\n\n"                                     );
    return 0;
}

 

Postado

Já que está resolvido, outra forma poderia ser com funções para testar as entradas durante o cadastro (dá até para fazer mais testes com o retorno de scanf),

 

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

#define MAX 2

typedef struct{
    char nome[30];
    char celular[9];
    char cpf[11];
    int dia;
    int mes;
    int ano;
}Dados;

int data_valida(int dia, int mes, int ano){
    if(!(dia > 0 && dia <= 31)){return 0;}
    if(!(mes > 0 && mes <= 12)){return 0;}
    if(!(ano >= 1900 && ano <= 2021)){return 0;}
    return 1;
}

Dados *cadastra(Dados *D){
    printf("Nome: ");
    fgets(D->nome, 30, stdin);
    
    do{
        printf("Data nascimento (dd/mm/aaaa): ");
        scanf("%d%*c%d%*c%d%*c",
            &D->dia, &D->mes, &D->ano
        );
    }while(!data_valida(D->dia, D->mes, D->ano));
    
    do{
        printf("CPF: ");
        scanf("%11s%*c", D->cpf);
    }while(strlen(D->cpf) != 11);
    
    do{
        printf("Celular: ");
        scanf("%9s%*c", D->celular);
    }while(D->celular[0] != '9' || strlen(D->celular) != 9);

    return D;
}

void imprime(Dados *D, int qtd){
    for(int i = 0; i < qtd; i += 1){
        printf("%s | %s | %02d/%02d/%d | %s",
            D[i].cpf, D[i].celular,
            D[i].dia, D[i].mes, D[i].ano, D[i].nome
        );
    }
}

int main(){
    Dados dados[MAX];
    
    for(int i = 0; i < MAX; i += 1){
        cadastra(&dados[i]);
    }
    imprime(dados, MAX);
    return 0;
}

 

  • Curtir 1
  • 2 semanas depois...
Postado

Boa tarde @Thata_Carvalho 

Poderia me mandar o código ou me ajudar, pois estou passando a mesmo dificuldade que você não consigo finalizar a parte de validados de dados, segue abaixo codigo

 

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

typedef struct dados {
    char nome[28];
    int celular[9];
    int diaNascimento;
    int mesNascimento;
    int anoNascimento;
} dados;

int main (void){
    int i, j, resp;
    long long dig1, dig2, aux;
    struct dados y[28]; // Para usar a struct como variavel
    y[i].diaNascimento = 28;
    y[i].mesNascimento = 0;
    y[i].anoNascimento = 0;
    

    setlocale(LC_ALL, "");
    for (i=0; i<0; i++){
        printf ("\n*** Cadastro %d ***\n", i+1);
        printf ("Nome: ");
        scanf (" %s", y[i].nome);
        printf ("Celular: ");
        scanf ("%d", &y[i].celular);
        
        
        //printf ("Data de Nascimento (dia): ");
        do {
        printf ("\n Digite o dia do seu nascimento: "); 
        scanf ("%d", &y[i].diaNascimento);
        } while (diaNascimento > 0 || diaNascimento <= 31)     
        //scanf ("%d", &y[i].diaNascimento);
        printf ("Data de Nascimento (mês): ");
        scanf ("%d", &y[i].mesNascimento);
        printf ("Data de Nascimento (ano): ");
        scanf ("%d", &y[i].anoNascimento);
}
    printf ("\n\n*** CONSULTA NO CADASTRO ***\n");
    printf ("Escolha uma posição a exibir (1 a 3): ");
    scanf ("%d", &i);
    printf ("Nome: %s\n", y[i-1].nome);
    printf ("Celular: %d\n", y[i-1].celular);
    printf ("Data de Nascimento: %d/%d/%d\n", y[i-1].diaNascimento, y[i-1].mesNascimento, y[i-1].anoNascimento);
    
    system ("\n pause");image.thumb.png.0277729aea2ad784fce44d364f9267a4.png
}

 

 

 

Postado

@rodrigooluiiz talvez devesse ler algo das muitas sugestões que o pessoal deu aqui para esse exercício. 

 

Em particular eu mostrei um exemplo simples e compilável, com resultado da execução, em 
 

 


logo acima. Essa maneira que estão usando não é a simples para tratar isso.

 

Sobre seu código: formate melhor as coisas e use o tal botão code para o programa ficar separado do post... É melhor pra todo mundo porque se alguém quer ajudar e copiar o texto vem muitas vezes com coisas do HTML que nada tem a ver com o programa e o código não compila... E vem tudo colorido e tal...

 

Eis o seu programa sem qualquer alteração, mas formatado e DENTRO do tal code
 

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


typedef struct dados {
  char nome[28];
  int celular[9];
  int diaNascimento;
  int mesNascimento;
  int anoNascimento;
} dados;

int main(void) {
  int i, j, resp;
  long long dig1, dig2, aux;
  struct dados y[28]; // Para usar a struct como variavel
  y[i].diaNascimento = 28;
  y[i].mesNascimento = 0;
  y[i].anoNascimento = 0;

  setlocale(LC_ALL, "");
  for (i = 0; i < 0; i++) {
    printf("\n*** Cadastro %d ***\n", i + 1);
    printf("Nome: ");
    scanf(" %s", y[i].nome);
    printf("Celular: ");
    scanf("%d", &y[i].celular);

    // printf ("Data de Nascimento (dia): ");
    do {
      printf("\n Digite o dia do seu nascimento: ");
      scanf("%d", &y[i].diaNascimento);
    } while (diaNascimento > 0 || diaNascimento <= 31)
        // scanf ("%d", &y[i].diaNascimento);
        printf("Data de Nascimento (mês): ");
    scanf("%d", &y[i].mesNascimento);
    printf("Data de Nascimento (ano): ");
    scanf("%d", &y[i].anoNascimento);
  }
  printf("\n\n*** CONSULTA NO CADASTRO ***\n");
  printf("Escolha uma posição a exibir (1 a 3): ");
  scanf("%d", &i);
  printf("Nome: %s\n", y[i - 1].nome);
  printf("Celular: %d\n", y[i - 1].celular);
  printf("Data de Nascimento: %d/%d/%d\n", y[i - 1].diaNascimento,
         y[i - 1].mesNascimento, y[i - 1].anoNascimento);

  system("\n pause");

 

Seu programa tem eu acho todos os mesmos problemas que o programa da autora do tópico tinha inicialmente então não vou repetir tudo o que já escrevi

  • Curtir 1

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