-
Posts
173 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Igor Vargas postou
-
C Validando um email e como procurar por nome
Igor Vargas respondeu ao tópico de Igor Vargas em C/C#/C++
@giu_d Verificar só se tem o ponto mas tem a parte do "com ou br " depois. -
C Validando um email e como procurar por nome
Igor Vargas respondeu ao tópico de Igor Vargas em C/C#/C++
Deu certo a questão do nome ahah valeu. Agora sobre o email char email[] = "[email protected]"; int i; for (i = 0; i < strlen(email); i++) { if (email[i + 2] == '@' && email[i + 1] != ' ' && email[i] != ' ') { printf("Validado!"); } } Falta o .com ou .br estou pensando em fazer um vetor e colocar os nomes tipo @hotmail ou gmail dentro e depois comparar ele com o email inscrito. @giu_d -
C Validando um email e como procurar por nome
Igor Vargas respondeu ao tópico de Igor Vargas em C/C#/C++
O problema pra mim é que não posso usar *result = strstr porque não aprendi isso em aula e o professor é meio rigido nesse quesito de usar só o que é aprendido em aula. Estou tentando outras formas mas nenhuma deu certo ainda -
C Validando um email e como procurar por nome
Igor Vargas respondeu ao tópico de Igor Vargas em C/C#/C++
O problema é que o mesmo scanf que eu uso pra digitar o nome normal seria o mesmo que eu teria que pegar as 3 primeiras letras do nome e compara com o nome que esta guardado no struct para printar uma grade de horário. Quanto ao email se eu fizesse uma condição assim funcionaria? @giu_d if(strcmp(email[x],".com")==1 ||strcmp(email[x],".br")==1 || strcmp(email[x],"hotmail")==1 || strcmp(email[x],"yahoo")==1|| strcmp(email[x],"gmail")==1 || email[x] <2){ printf("Email invalido"); } -
C Validando um email e como procurar por nome
Igor Vargas respondeu ao tópico de Igor Vargas em C/C#/C++
Eu tentei fazer o que você falou. O nome não funcionou aqui. printf("Digite o nome do aluno:"); char string[3]; fflush(stdin); gets(nome); for(x=0; x<4; x++){ string[x]=nome; if(string[x] == al_C[x].nome && string[x+1] == al_C[x+1].nome && string[x+1] == al_C[x+1].nome){ salva_V=1; } O email fiz uma parte mas n entendi o resto. printf("Digite seu e-mail:"); fflush(stdin); gets(al[cont].email); for(x=0; x<strlen(al[cont].email); x++){ if(al[x].email=='@'){ passa++; }if(al[passa-2].email!=' '){ } } Faz poucos meses que estou programando tem muita coisa que não assimilei direito. @giu_d -
Estou terminando um trabalho e falta algumas coisas. Queria saber a opinião de vocês nessas questões. 1. Preciso validar um email ele tem que ter um @ nao pode ter menos de 2 letras no inicio e dever ter um ponto final. 2. Também preciso achar um aluno pelas 3 primeiras letras do nome dele. No código abaixo ele esta comparando o nome inteiro. printf("Digite o nome do aluno:"); fflush(stdin); gets(nome); for(x=0; x<4; x++){ if(strcmp(al_C[x].nome, nome)==0){ salva_V=1; } } }
-
Entendi não estava percebendo isso, Obrigado pela ajuda de todos.
-
@giu_d Se ela digitar 127 e 135 ela não vai poder se inscrever pois as disciplinas tem os mesmos horários, ai retorna pra ela fazer a inscrição das disciplinas novamente.
-
printf("Digite em quantas materias deseja se matricular:"); scanf("%d",&num); printf("Digite o codigo das diciplinas que voce deseja se matricular\n"); do{ for(y=0; y<num; y++){ scanf("%d",&al[y].l_Disciplinas); volta=1; Digamos q ele digite o numero dois no primeiro scanf. Ai no segundo scanf vai digitar 127 e 132 ou135 e143 se for isso q ele digitar, vai ser verdadeiro, pois só vai ser falso se não for umas das 2 opções pelo menos foi essa lógica q eu utilizei posso estar errado. @isrnick adicionado 8 minutos depois A minha struct é essa. Sera que o int l_Dsciplinas não deveria ser um vetor ? pois são 5 disciplinas, mas no caso o aluno escolhe em quantas deseja se matricular. Sendo assim acho que o if funcionária. struct registro { int matricula; char nome[20]; char sobrenome[20]; char email[40]; int l_Disciplinas; };
-
Mesmo colocando if ele não funcionou. Não quero passar todo o código porque é meio extenso.
-
@devair1010 nossa não tinha visto isso. Mas o meu outro do while parece q não esta reconhecendo essa condição else if((al[x].l_Disciplinas == 127 && al[x].l_Disciplinas == 132 )|| al[x].l_Disciplinas ==135 && al[x].l_Disciplinas == 143) { printf("voce Não pode se inscrever em duas disciplas de mesmo horario\n"); volta=0; al[y].l_Disciplinas=0; } }
-
Estou com uma duvida na minha função onde meu laço nao esta reconhecendo meu if e não esta fazendo a volta para o scanf("%d",&al[x]l._Disciplinas) . Colocarei só a função. Meus dois do while não estão funcionando. void add_Aluno(struct registro al[3], struct disciplinas add_Dis[5], struct grade g_Materias[20][5]){ int dis,x,y,guarda[5],cont=0,num; char resp; int volta; printf("\n\n"); printf("--------------------------------------\n"); printf("---voce selecionou adicionar aluno.---\n"); printf("--------------------------------------\n"); printf(" Lista de Disciplinas\n"); printf(" Codigo Nome\n\n"); for(x=0; x<5; x++){ printf(" %d %s \n",add_Dis[x].codigo,add_Dis[x].nome); } printf("\n"); do{ printf("Digite seu nome:"); fflush(stdin); //Funcão de Cadastro do aluno gets(al[cont].nome); printf("Digite seu Sobrenome:"); gets(al[cont].sobrenome); strcat(al[cont].nome, al[cont].sobrenome); printf("Digite sua Matricula:"); scanf("%d",&al[cont].matricula); printf("Digite seu e-mail:"); fflush(stdin); gets(al[cont].email); cont++; volta=1; printf("Digite em quantas materias deseja se matricular:"); scanf("%d",&num); printf("Digite o codigo das diciplinas que voce deseja se matricular\n"); do{ for(y=0; y<num; y++){ scanf("%d",&al[y].l_Disciplinas); volta=1; } for(x=0; x<num; x++){ if(al[x].l_Disciplinas==122) //Adiciona as disciplinas para as posiçoes //da matriz { strcpy(g_Materias[0][0].grade_C,"Algo"); strcpy(g_Materias[1][1].grade_C,"Algo"); } else if(al[x].l_Disciplinas==127) { strcpy(g_Materias[2][1].grade_C,"Estr"); strcpy(g_Materias[4][2].grade_C,"Estr"); } else if(al[x].l_Disciplinas==132) { strcpy(g_Materias[2][1].grade_C,"Sist"); strcpy(g_Materias[1][3].grade_C,"Sist"); } else if(al[x].l_Disciplinas==143) { strcpy(g_Materias[1][4].grade_C,"Padr"); } else if(al[x].l_Disciplinas==135) { strcpy(g_Materias[1][2].grade_C,"Banc"); strcpy(g_Materias[1][4].grade_C,"Banc"); } else if((al[x].l_Disciplinas == 127 && al[x].l_Disciplinas == 132 )|| al[x].l_Disciplinas ==135 && al[x].l_Disciplinas == 143) { printf("voce Não pode se inscrever em duas disciplas de mesmo horario\n"); volta=0; al[y].l_Disciplinas=0; } } }while(volta == 0 ); printf("Deseja Cadastrar outro aluno? s/n:"); fflush(stdin); scanf("%c",&resp); }while(resp =! 'n'); }
-
@devair1010 estou com uma dúvida no meu trabalho onde preciso passar as máterias que o aluno escolheu para a grade, o problema é que a minha grade esta dentro do meu registro alunos, o que eu estou pensando em fazer é colocar outro registro só com a grade e depois adicionar as matérias. Eu não sei se tem uma maneira mais prática de fazer isso. #include <stdio.h> #include <string.h> struct disciplinas { int codigo; char nome[20]; char professor[20]; int c_Horaria; char h_Semanal[30]; }; struct registro { int matricula; char nome[20]; char sobrenome[20]; char email[40]; int l_Disciplinas[5]; char grade[4][5]; }; struct grade { char grade[4][5]; }; int cont; void add_Aluno(struct registro al[3], struct disciplinas add_Dis[5], struct grade g_Materias[4][5]){ int dis,x,y,guarda[5],cont=0,num; char resp; printf("\n\n"); printf("--------------------------------------\n"); printf("---voce selecionou adicionar aluno.---\n"); printf("--------------------------------------\n"); printf(" Lista de Disciplinas\n"); printf(" Codigo Nome\n\n"); for(x=0; x<5; x++){ printf(" %d %s \n",add_Dis[x].codigo,add_Dis[x].nome); } printf("\n"); printf(" Horas Horario\n\n"); for(x=0; x<5; x++){ printf(" %d %s\n",add_Dis[x].c_Horaria,add_Dis[x].h_Semanal); } printf("\n"); do{ x=0; printf("Digite seu nome:"); fflush(stdin); gets(al[cont].nome); printf("Digite seu Sobrenome:"); gets(al[cont].sobrenome); strcat(al[cont].nome,al[cont].sobrenome); printf("Digite sua Matricula:"); scanf("%d",&al[cont].matricula); printf("Digite seu e-mail:"); fflush(stdin); gets(al[cont].email); printf("Digite em quantas materias deseja se matricular:"); scanf("%d",&num); printf("Digite o codigo das diciplinas que voce deseja se matricular\n"); cont++; for(y=0; y<num; y++){ scanf("%d",&al[y].l_Disciplinas); } for(x=0; x<num; x++){ if(al[x].l_Disciplinas==122) { strcpy(g_Materias[0][0].grade,"Algo"); strcpy(g_Materias[1][1].grade,"Algo"); } else if(al[x].l_Disciplinas==127) { strcpy(g_Materias[2][1].grade,"Estr"); strcpy(g_Materias[4][2].grade,"Estr"); } else if(al[x].l_Disciplinas==132) { strcpy(g_Materias[2][1].grade,"Sist"); strcpy(g_Materias[1][3].grade,"Sist"); } else if(al[x].l_Disciplinas==143) { strcpy(g_Materias[1][4].grade,"Padr"); } else if(al[x].l_Disciplinas==143) { strcpy(g_Materias[1][2].grade,"Banc"); strcpy(g_Materias[1][4].grade,"Banc"); } } printf("Deseja Cadastrar outro aluno? s/n:"); fflush(stdin); scanf("%c",&resp); }while(x=!'n'); } main(){ struct disciplinas curso[5]; struct registro alunos[3]; struct grade m_Salva[4][5]; int escolha; curso[0].codigo=122; strcpy(curso[0].nome,"Algoritimos"); curso[0].c_Horaria=60; strcpy(curso[0].h_Semanal,"Segunda bloco 1 e terca bloco 2"); curso[1].codigo=127; strcpy(curso[1].nome,"Estrutura de dados"); curso[1].c_Horaria=60; strcpy(curso[1].h_Semanal,"terca bloco 3 e quarta bloco 4"); curso[2].codigo=132; //dados salvos strcpy(curso[2].nome,"Sistemas Operacionais A "); curso[2].c_Horaria=60; strcpy(curso[2].h_Semanal,"Terca bloco 3 e Quinta bloco 2"); curso[3].codigo=143; strcpy(curso[3].nome,"Padroes de Projeto"); curso[3].c_Horaria=30; strcpy(curso[3].h_Semanal,"Sexta bloco 2"); curso[4].codigo=135; strcpy(curso[4].nome,"Banco de dados ll"); curso[4].c_Horaria=60; strcpy(curso[4].h_Semanal,"Quarta bloco 3 e sexta bloco 2"); do{ printf(" -----------------------\n"); printf(" ------Bem Vindo!!------\n"); printf(" -----------------------\n"); printf("Escolha uma das opções abaixo\n"); printf("1. Adicionar aluno\n"); printf("2. Consultar aluno\n"); printf("3. Sair\n"); scanf("%d",&escolha); if(escolha == 1){ add_Aluno(alunos,curso,m_Salva); } else if(escolha == 2) { } }while(escolha !=3); }
-
valeu pela ajuda infelizmente tive que ficar com o código de baixo, pois terei que explicar pro professor o que eu fiz ahah não estou muito avançado em C ainda, mas muito obrigado pela ajuda. Tem mais coisa pra fazer no trabalho quando eu tiver dúvida vou postar aqui @devair1010.
-
Consegui arrumar. Agora a dúvida é se o que eu fiz até agora esta certo ou esta faltando algo. #include <stdio.h> #include <string.h> struct disciplinas { int codigo; char nome[20]; char professor[20]; int c_Horaria; char h_Semanal[30]; }; struct registro { int matricula; char nome[20]; char sobrenome[20]; char email[40]; int l_Disciplinas[5]; }; int cont; void add_Aluno(struct registro al[3], struct disciplinas add_Dis[5]){ int dis,x,y,guarda[5],cont=0,num; char resp; printf("\n\n"); printf("--------------------------------------\n"); printf("---voce selecionou adicionar aluno.---\n"); printf("--------------------------------------\n"); do{ x=0; printf("Digite seu nome:"); fflush(stdin); gets(al[cont].nome); printf("Digite seu Sobrenome:"); gets(al[cont].sobrenome); strcat(al[cont].nome,al[cont].sobrenome); printf("Digite sua Matricula:"); scanf("%d",&al[cont].matricula); printf("Digite seu e-mail:"); fflush(stdin); gets(al[cont].email); printf("Digite em quantas materias deseja se matricular:"); scanf("%d",&num); printf("Digite o codigo das diciplinas que voce deseja se matricular\n"); for(y=0; y<num; y++){ scanf("%d",&al[y].l_Disciplinas); } printf("Deseja Cadastrar outro aluno? s/n:"); fflush(stdin); scanf("%c",&resp); }while(x=!'n'); } main(){ struct disciplinas curso[5]; struct registro alunos[3]; int escolha; char grade[4][5]; curso[0].codigo=122; strcpy(curso[0].nome,"Algoritimos"); curso[0].c_Horaria=60; strcpy(curso[0].h_Semanal,"Segunda bloco 1 e terca bloco 2"); curso[1].codigo=127; strcpy(curso[1].nome,"Estrutura de dados"); curso[1].c_Horaria=60; strcpy(curso[1].h_Semanal,"terca bloco 3 e quarta bloco 4"); curso[2].codigo=132; //dados salvos strcpy(curso[2].nome,"Sistemas Operacionais A "); curso[2].c_Horaria=60; strcpy(curso[2].h_Semanal,"Terca bloco 3 e Quinta bloco 2"); curso[3].codigo=143; strcpy(curso[3].nome,"Padroes de Projeto"); curso[3].c_Horaria=30; strcpy(curso[3].h_Semanal,"Sexta bloco 2"); curso[4].codigo=135; strcpy(curso[4].nome,"Banco de dados ll"); curso[4].c_Horaria=60; strcpy(curso[4].h_Semanal,"Quarta bloco 3 e sexta bloco 2"); do{ printf(" -----------------------\n"); printf(" ------Bem Vindo!!------\n"); printf(" -----------------------\n"); printf("Escolha uma das opções abaixo\n"); printf("1. Adicionar aluno\n"); printf("2. Consultar aluno\n"); printf("3. Sair\n"); scanf("%d",&escolha); if(escolha == 1){ add_Aluno(alunos,curso); }else if(escolha == 2){ } }while(escolha !=3); }
-
Galera estou com uma duvida nesse Trabalho. Eu preciso mostra umas lista parecida com esta. o problema é que ele n esta pegando os dados salvos na main. o meu codigo esta mais ou menos assim. #include <stdio.h> #include <string.h> struct diciplinas { int codigo; char nome[20]; char professor[20]; int c_Horaria; char h_Semanal[50]; }; struct registro { int matricula; char nome[20]; char sobrenome[20]; char email[20]; int l_Diciplinas[20]; char grade[5][5]; }; void add_Aluno(struct registro al[3], struct diciplinas add_Dis[5]){ char sair; int dis,x,y=0,guarda[5]; printf("\n\n"); printf("--------------------------------------\n"); printf("---voce selecionou adicionar aluno.---\n"); printf("--------------------------------------\n"); printf("Lista de diciplinas\n"); for(x=0; x<5; x++){ //mostra a lista das materias printf("%d\n",add_Dis[x].codigo); } for(x=0; x<3; x++){ printf("Digite seu nome:"); gets(al[x].nome); printf("Digite seu Sobrenome:"); gets(al[x].sobrenome); strcat(al[x].nome,al[x].sobrenome); printf("Digite sua Matricula:"); scanf("%d",&al[x].matricula); printf("Digite seu e-mail:"); gets(al[x].email); printf("Quantas diciplinas voce deseja se matricular:"); scanf("%d",&dis); printf("Digite o codigo das diciplinas que voce deseja se matricular:"); while(y<dis){ scanf("%d",&dis); guarda[y]=dis; y++; } } } main(){ struct diciplinas curso[5]; struct registro alunos[3]; int escolha; curso[0].codigo=0122; strcpy(curso[0].nome,"Algoritimos"); curso[0].c_Horaria=60; strcpy(curso[0].h_Semanal,"Segunda bloco 1 e terca bloco 2"); curso[1].codigo=0127; strcpy(curso[1].nome,"Estrutura de dados"); curso[1].c_Horaria=60; strcpy(curso[1].h_Semanal,"terca bloco 3 e quarta bloco 4"); curso[2].codigo=0132; //dados salvos strcpy(curso[2].nome,"Sistemas Operacionais A "); curso[2].c_Horaria=60; strcpy(curso[2].h_Semanal,"Terca bloco 3 e Quinta bloco 2"); curso[3].codigo=0143; strcpy(curso[3].nome,"Padroes de Projeto"); curso[3].c_Horaria=30; strcpy(curso[3].h_Semanal,"Sexta bloco 2"); curso[4].codigo=0135; strcpy(curso[4].nome,"Banco de dados ll"); curso[4].c_Horaria=60; strcpy(curso[4].h_Semanal,"Quarta bloco 3 e sexta bloco 2"); printf(" -----------------------\n"); printf(" ------Bem Vindo!!------\n"); printf(" -----------------------\n"); printf("Escolha uma das opções abaixo\n"); printf("1. Adicionar aluno\n"); printf("2. Consultar aluno\n"); scanf("%d",&escolha); if(escolha == 1){ add_Aluno(alunos,curso); }else if(escolha == 2){ } }
-
Eai galera. Estou com um problema nesse condigo, onde quando eu escolho a segunda opção ele da um erro depois que voce digita a placa do seu carro. Estou achando que a comparação de strings não esta funcionando, mas n acho o motivo de não estar. #include <stdio.h> #include <string.h> struct FastCar { int ano_F; float preco; char descricao[50],fabricante[20],cor[20],placa[6]; }; void cadastro(struct FastCar op_Um[1] ){ int x; printf("-------------------------------------------\n"); printf("-----voce Selecionou Cadastrar Automovel---\n"); printf("-------------------------------------------\n"); for(x=0; x<1; x++){ fflush(stdin); printf("Digite a Placa do Seu carro: "); gets(op_Um[x].placa); strupr(op_Um[x].placa); printf("Digite a Descricao do seu carro: "); gets(op_Um[x].descricao); printf("Digite o Fabricante do seu carro : "); gets(op_Um[x].fabricante); printf("Digite a Cor do seu Carro: "); gets(op_Um[x].cor); printf("Digite o Ano de fabricação do seu carro: "); scanf("%d",&op_Um[x].ano_F); printf("Digite o Preco do seu carro:"); scanf("%f",&op_Um[x].preco); } } int consulta(struct FastCar op_Dois[1]){ int x,valor; char nova_P[6]; printf("-------------------------------------------\n"); printf("-----voce Selecionou Consultar Automovel---\n"); printf("-------------------------------------------\n"); fflush(stdin); printf("Digite a placa do carro: "); gets(nova_P); for(x=0; x<1; x++){ int salva=strcmp(op_Dois[x].placa, nova_P[x]); if(salva==0){ fflush(stdin); puts(op_Dois[x].descricao); puts(op_Dois[x].fabricante); puts(op_Dois[x].cor); printf("%d\n",op_Dois[x].ano_F); printf("%f",op_Dois[x].preco); } else{ return valor=1; } } if(valor==1){ printf("Essa Placa nao existe ou foi digitada incorreta"); } } void relatorio(struct FastCar op_Tres[1]){ int x; printf("-------------------------------------------\n"); printf("-----voce Selecionou Gerar Relatorio---\n"); printf("-------------------------------------------\n"); printf("Todos Os Carros"); for(x=0; x<1; x++){ puts(op_Tres[x].placa); puts(op_Tres[x].descricao); puts(op_Tres[x].fabricante); puts(op_Tres[x].cor); printf("%d\n",op_Tres[x].ano_F); printf("%f",op_Tres[x].preco); } } main(){ struct FastCar Carros[1]; int escolha; do{ printf("1. Cadastrar automovel\n"); printf("2. Consultar automovel\n"); printf("3. Gerar Relatorio\n"); printf("4. Sair do Programa\n"); scanf("%d",&escolha); if(escolha == 1){ cadastro(Carros); }else if(escolha == 2){ consulta(Carros); }else if(escolha == 3){ relatorio(Carros); }else if(escolha == 4){ break; } }while(escolha!= 4); }
-
Obrigado pela ajuda n tinha pensado desse jeito. @devair1010
-
-
Galera estou com uma duvida nesse exercicio, basicamente é pra pegar a 3 palavras separadas de uma frase. Minha duvida é porque meu codigo esta dando erro. #include <stdio.h> #include <string.h> main(){ char frase[20]={"Ola tudo bem"}; int x; char primeira[10],segunda[10],terceira[10]; for(x=0; x<strlen(frase); x++){ if(frase[x]==" "){ strcpy(frase,primeira); primeira[x]=frase[x]; } }for(x=" "+1; x<strlen(frase); x++){ if(frase[x]==" "){ segunda[x]=frase[x]; } }for(x=strlen(frase); x>0; x--){ if(frase[x]==" "){ strcpy(frase,terceira); } }for(x=0; x<strlen(terceira); x++){ char passa[10]; passa[x]=terceira[x]; terceira[x]=passa[x]; } puts(primeira); puts(segunda); puts(terceira); }
-
@devair1010 Então eu teria quer fazer separado para cada delegação ele só verificar qual a maior e guardar isso?. Porque no caso as alturas estão todas em um vetor ou seja juntas. Eu teria que criar vetores para cada uma ou matriz.
-
Criar um programa que possa armazenar as alturas de dez atletas de 5 delegações que participarão das olimpíadas e imprima a maior altura de cada delegação. Minha duvida é. Como eu guardo as 5 alturas. Pois o meu programa esta guardando a mesma altura. main(){ float del[5]; float altura[25]={1.70,1.75,1.80,1.90,1.85, 1.70,1.75,1.80,1.70,1.82, 1.70,1.45,1.80,1.91,1.83, 1.70,1.15,1.80,1.92,1.84, 1.70,1.75,1.75,1.94,1.92}; int x,y; float maior[5]; for(y=0; y<5; y++){ for(x=0; x<25; x++){ maior[y]=altura[x]; if(altura[x]>maior[x]){ del[y]=altura[x]; } } } for(x=0; x<5; x++){ printf("[%f]\n",del[x]); } }
-
C Elementos consecutivos com maior intervalo
Igor Vargas respondeu ao tópico de Igor Vargas em C/C#/C++
@Simon Viegas a lógica que eu faria. Pegaria o numero maior dps pegaria o menor consecutivo, salvaria o menor em uma variável e o maior também, depois faria um for com a variável menor e a condição se o menor for menor que o maior ele incrementava, tb faria um contador pra ver o tamanho do intervalo -
C Elementos consecutivos com maior intervalo
Igor Vargas respondeu ao tópico de Igor Vargas em C/C#/C++
@Boko Moko a minha duvida é que eu n sei como pegar as variáveis consecutivas que tem o maior intervalo. Nunca fiz nada parecido desse tipo. -
C Elementos consecutivos com maior intervalo
Igor Vargas respondeu ao tópico de Igor Vargas em C/C#/C++
@Boko Moko se o numero for negativo ele transforma em positivo
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