-
Posts
6.318 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que devair1010 postou
-
C++ Criar tabela verdade com quantidade "X" de entrada
devair1010 respondeu ao tópico de Shiftz em C/C#/C++
@Shiftz para imprimir apenas as entradas que foram pedidas seria melhor usar um vetor de char com as 26 posições correspondente as 26 letras , assim usando um laço de repetição indo de zero até a quantidade de entradas pedidas para imprimir as entradas , então seu código pode ser assim : #include <stdio.h> #include <math.h> #include <iso646.h> #include <stdlib.h> int main(void){ int entrada; char vet[26]; int qnt,j; /*// quantidade de variáveis*/ printf("Digite a quantidade de entrada para sua tabela\n"); scanf ("%d", &qnt); printf ("%d\n" , qnt); printf(" A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\n"); /*// 2^n - quantidade de linhas da tabela*/ for(entrada = 0; entrada < (pow(2,qnt)); entrada++) { vet[0 ] = (entrada & 1 )?1:0; /* // x ? a:b <=> if(x) a; else b;*/ vet[1 ] = (entrada & 2 )?1:0; /* // inline if*/ vet[2 ] = (entrada & 4 )?1:0; vet[3 ] = (entrada & 8 )?1:0; vet[4 ] = (entrada & 16 )?1:0; vet[5 ] = (entrada & 32 )?1:0; vet[6 ] = (entrada & 64 )?1:0; vet[7 ] = (entrada & 128 )?1:0; vet[8 ] = (entrada & 256 )?1:0; vet[9 ] = (entrada & 512 )?1:0; vet[10] = (entrada & 1024 )?1:0; vet[11] = (entrada & 2048 )?1:0; vet[12] = (entrada & 4096 )?1:0; vet[13] = (entrada & 8192 )?1:0; vet[14] = (entrada & 16384 )?1:0; vet[15] = (entrada & 32768 )?1:0; vet[16] = (entrada & 65536 )?1:0; vet[17] = (entrada & 131072 )?1:0; vet[18] = (entrada & 262144 )?1:0; vet[19] = (entrada & 524288 )?1:0; vet[20] = (entrada & 1048576 )?1:0; vet[21] = (entrada & 2097152 )?1:0; vet[22] = (entrada & 4194304 )?1:0; vet[23] = (entrada & 8388608 )?1:0; vet[24] = (entrada & 16777216)?1:0; vet[25] = (entrada & 33554432)?1:0; printf(" "); for(j=0;j<qnt;j++){ printf("%d ",vet[j]); } printf("\n"); } getchar(); return 0; } -
Criação de menu com função em C
devair1010 respondeu ao tópico de Anderson Luan Rodrigues em C/C#/C++
@Anderson Luan Rodrigues então esse menu terá cinco opções pois uma será para sair do loop while , então você coloca o while e dentro dele as opções , e em seguida use o comando scanf para pegar o que o usuário digitar e depois use o switch para ir para cada opção , e crie e coloque as funções no inicio antes da main . faça e poste seu código para vermos como está e em que podemos ajudar . -
VisualG Comparação entre elementos de uma matriz
devair1010 respondeu ao tópico de luizastellet em Programação - iniciantes
@luizastellet você pode ir atualizando a variável menor_elemento com o menor valor de cada linha , assim quando ele passar para a linha de baixo aquela variável conterá o menor valor até ali e então comparar com todos os elementos dessa linha também , e assim até o final da última linha e aí a variável terá o menor valor da matriz . poste seu código para podermos ver como está e em que podemos ajudar . -
Portugol Sugestões de livro para programação
devair1010 respondeu ao tópico de Miller1 em Programação - iniciantes
@Ronymyller eu estou estudando lógica de programação no senac , e não foi pedido nenhum livro , mas foi fornecido uma apostila com o conteúdo do curso , mas onde eu estou aprendendo mais mesmo é na internet no youtube , é uma boa fonte de aprendizagem , então estive pesquisando e vi um livro que parece ser bom de acordo com o que ele promete . veja nesse link : https://www.clubedeautores.com.br/book/240284--Portugol_Studio#.WzbDuk--Z1s nele tem também outros livro para estudos mais avançados , como o c++ para windows . -
C++ Tratamento de Dados com arquivos
devair1010 respondeu ao tópico de MatheusTITributos em C/C#/C++
@MatheusTITributos o que você quer dizer com sempre que for numero 2 pular de linha , seria isso qualquer coisa 2 e mais alguma 2 coisa e outra 2 coisa ele lê a linha e vai escrevendo no outro arquivo e quando ele encontrar o numero 2 então ele para de escrever no outro arquivo e começa a próxima linha , assim nesse exemplo ele escreveria no outro arquivo assim : qualquer coisa e mais alguma e outra se for assim que você quer , então depois que ler a linha você precisa comparar caractere por caractere para ver se encontrou o número 2 , e se o caractere não for o número 2 então escrever esse caractere no outro arquivo , então seu código poderia ser assim : #include <iostream> #include <fstream> #include <locale> using namespace std; int main() { setlocale(LC_ALL,""); ifstream arquivo; ofstream arquivox; string linha; int j; arquivo.open("Declan.txt"); // abre arquivo p leitura arquivox.open("Teste.txt"); // abre arquivo p escrita if (arquivo.is_open() && arquivox.is_open()) { while (getline(arquivo, linha)){ // lê o arquivo linha a linha cout << linha; for(j=0;j<linha.size();j++){ if(linha[j] != '2') arquivox <<linha[j]; // escreve cada caractere no arquivo else{ arquivox<<endl; break; } } } arquivo.close(); arquivox.close(); } else{ cout << "Não foi possivel abrir o arquivo" << endl; } return 0; } -
C Apagar linha determinada linha da tela
devair1010 respondeu ao tópico de Celestino Alona em C/C#/C++
@giu_d essa mesmo , mas precisa organizar o código para que ele saiba em qual linha está e caso precise deletar a linha digitada então ele saiba para qual linha voltar e apaga-la . -
C Apagar linha determinada linha da tela
devair1010 respondeu ao tópico de Celestino Alona em C/C#/C++
@Celestino Alona você pode usar uma função para posicionar o cursor no inicio da linha que você quer deletar, e assim imprima uma linha contendo 80 caracteres espaço , com isso o conteúdo da linha será apagada e em seguida posicione o cursor novamente no inicio da linha , mas para cada printf precisa posicionar o cursor e para isso precisa de um contador de linhas para saber em qual linha da tela está e então voltar uma linha acima , e essa função precisa ser criada para a linguagem c . No pascal ela já existe e se chama gotoxy , mas não posso te dar o código pronto pois é contra as regras do fórum , então faça seu código e poste aqui para vermos como está e em que podemos ajudar . -
Pascal Erro ao compilar projeto no Pascal
devair1010 respondeu ao tópico de xSADx em Programação - outros
@xSADx seu case está com erro de syntaxe , e o numero1 + numero2 também está com erro , pois não tem uma variável para receber o resultado dessa adição , então seu código com algumas modificações pode ser assim : program Exercicio4_Aula5; var numero1,numero2, resultado : Real; escolha : CHAR; begin Writeln('Escolha a Opcao'); repeat Writeln('Digite S para Soma'); Writeln('Digite M para Subtracao'); Writeln('Digite X para Multiplicacao'); Writeln('Digite D para Divisao'); Readln(escolha); until ((escolha='s')or(escolha='m')or(escolha='x')or(escolha='d')); Writeln('Digite o Primeiro Numero'); Readln(numero1); // para numeros negativos precisa um tratamento melhor Writeln('Digite o Segundo Numero'); Readln(numero2); case escolha of 's': resultado := numero1 + numero2; 'm': resultado := numero1 - numero2; 'x': resultado := numero1 * numero2; 'd': resultado := numero1 / numero2; end; writeln('Resultado = ',resultado:6:2);//limitando a seis digitos e duas casas decimais end. -
C Conversão decimal/binario e soma dos numeros binarios convertidos
devair1010 respondeu ao tópico de Carla Maria em C/C#/C++
@Carla Maria seu código está bom , mas está mostrando o resultado errodo , então seu código com algumas modificações pode ser assim : #include <stdio.h> #include <stdlib.h> #include <locale.h> #define bits 16 int main (){ int valor1, /*armazena o primeiro número decimal informado pelo usuário */ valor2, /*armazena o segundo número decimal informado pelo usuário*/ vetvalor1[bits], /*armazena o primeiro número convertido para binário*/ vetvalor2[bits], /*armazena o segundo número convertido para binário*/ np[15], i,t, /*contadores*/ vaium=0, /*armazena o vai um da soma dos binários*/ soma[bits]; /*armazena a soma dos binários*/ setlocale(LC_ALL,""); printf(" Conversão de Valores - Decimal x Binário "); printf("\n ***************************************************** \n"); np[15]=1; printf("\n Informe o primeiro número:"); scanf("%d", &valor1); valor1 = abs(valor1); /* Transformando o primeiro número em binário */ for (i=bits-1; i >= 0; i--){ if (valor1 % 2 == 0) vetvalor1[i] = 0; else vetvalor1[i]=1; valor1=valor1 / 2; } printf("\n O primeiro número convertido para binário é: "); for (i=0; i < bits; i++) printf("%d",vetvalor1[i]); printf("\n"); printf("Informe o segundo número:"); scanf("%d",&valor2); valor2 = abs(valor2); /* Transformando o segundo número em binário */ for (i=bits-1; i >= 0; i--){ if (valor2 % 2 == 0) vetvalor2[i] = 0; else vetvalor2[i]=1; valor2=valor2 / 2; } printf("\n O segundo número convertido para binário é: "); for (i=0; i < bits; i++) printf("%d",vetvalor2[i]); for (i=0; i<bits; i++){ soma[i] = vetvalor1[i]+vetvalor2[i]+vaium; if((soma[i]==2)){ soma[i]=0; vaium=1; } else if(soma[i]==3){ soma[i]=1; vaium=1; } else vaium=0; } printf("\n A soma é:"); for (i=0; i<bits; i++) printf("%d",soma[i]); printf("\n\n"); return 0; } -
@Rogerio Lobo monitores lcd consertados costumam não ficar bom não , seria melhor comprar um novo .
-
@Paulo Fiori seu código está bom , o fatorial parece estar com erro , e para facilitar seria melhor preencher a matriz automaticamente com números aleatórios , então creio que seu código poderia ser assim : int fatorial_2(int f){ int w=f,r=0; if(f>1){ while(f>1){ r += w*(f-1); f--; } } else{ r = 1; } if(w==0 || w==1) r=1; return r; } #include <stdio.h> #include <stdlib.h> #include <time.h> int fatorial(int matrizA[5][10], int vetor[50]){ int i,j,k=0; for(i=0; i<5; i++){ for(j=0; j<10; j++){ vetor[k] = fatorial_2(matrizA[i][j]); printf("valor de vetor %d\n",vetor[k]); k++; } } return 0; } int main(){ int matrizA[5][10],vetor[50]; int i,j,a=0,b; srand(time(NULL)); for ( i = 0; i < 5; i++ ){ for ( j = 0; j < 10; j++ ){ matrizA[i][j]=rand() % 20; printf("Valor da matriz[%d][%d]:= %d \n",i,j,matrizA[i][j]); } } b=fatorial(matrizA,vetor); for ( i = 0; i < 5; i++ ){ for ( j = 0; j < 10; j++ ){ printf("Seu fatorial [%d][%d] => %d eh: %d \n",i,j,matrizA[i][j],vetor[a]); a++; } } return 0; }
-
C Programa sobre vetores strings
devair1010 respondeu ao tópico de Elias da Silva Jacobsen em C/C#/C++
@Elias da Silva Jacobsen o segundo while é controlado pela variável j e você está incrementando a variável i enquanto o j continua com o mesmo valor e por isso ele entra em loop infinito , mas para comparar strings na linguagem c seria melhor usar a função strcmp que faz essa comparação eficazmente , então a comparação seria assim : if(strcmp(nome1,nome2)==0){/*se for zero é igual , se for < então a primeira vem antes na ordem alfabética e se for > vem depois*/ o que fazer . . . ! } -
C++ Aprendendo - exercício em - C++/C#/C
devair1010 respondeu ao tópico de Junior Milzation em C/C#/C++
@Simon Viegas bem lembrado , eu tinha esquecido que era em c++ , obrigado pela dica , editei o post acima . -
C++ Aprendendo - exercício em - C++/C#/C
devair1010 respondeu ao tópico de Junior Milzation em C/C#/C++
@Junior Milzation essa função serve para que os números gerados por rand não sejam sempre os mesmos , o que aconteceria se não tivesse essa função . -
C++ Aprendendo - exercício em - C++/C#/C
devair1010 respondeu ao tópico de Junior Milzation em C/C#/C++
@Junior Milzation no enunciado diz que no vetor tem 500 filmes , então não precisa perguntar ao usuário a quantidade de filmes retirados , então esse vetor será preenchido aleatoriamente e o que precisa é preencher o outro vetor de acordo com esse , e precisa ver a quantidade em cada posição do vetor , e a cada 10 coloca um filme grátis , então esse código poderia ser assim : #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main(){ int Quant_filme_retirados[500],filmes_gratis[500],cont; int i,j; srand(time(NULL)); for(j=0;j<500;j++) Quant_filme_retirados[j]=rand()%100; for(j=0;j<500;j++){ i=Quant_filme_retirados[j]; cont=0; do{ if(i>=10){ cont++; i -= 10; } }while(i>=10); filmes_gratis[j]=cont; } for(j=0;j<500;j++) cout<<"O cliente "<<i<<" fez "<<quant_filme_retirados[i]<<" locacoes. Tem direito a "<<filmes_gratis[i]<<" filmes gratis"<<endl; return 0; } -
C++ Aprendendo - exercício em - C++/C#/C
devair1010 respondeu ao tópico de Junior Milzation em C/C#/C++
@Junior Milzation verifique o valor de cada posição do vetor onde está guardado a quantidade , pegue esse valor e use em um loop e dentro do loop verifique se esse valor é maior ou igual a 10 e se for incrementa o contador de filmes grátis , e subtrai 10 desse valor e repete o loop até que seja menor , e depois desse loop coloca o valor desse contador no outro vetor , e isso tudo dentro de um loop que se repete 500 vezes . não podemos fazer o código para você pois é contra as regras do fórum , então faça seu código e poste aqui para podermos ver como está e em que podemos ajudar . -
VisualG Fazer um algoritmo que faça divisão sem utilizar (/, div, mod, % )
devair1010 respondeu ao tópico de Calicosjacks em Programação - iniciantes
@Calicosjacks seu código está funcionando certo , mas você está usando a multiplicação , e se for dividir um número por outro menor que ele , então seu código com algumas modificações ficaria assim : Algoritmo "divisao recursiva" Var n1, n2, c, i, r, resto, multi, aux:inteiro inicio escreva("Digite o dividendo: ") leia(n1) escreva("Digite o divisor: ") leia(n2) aux <- n1 enquanto n1 >=0 faca se n1>=n2 ENTÃO c := c+1 fimse n1 := n1-n2 fimenquanto se n1<0 ENTÃO r:=n1+n2 fimse escreval("Resultado -:",c) escreval("Resto -----:",r) Fimalgoritmo -
@Lekoribeiro sim , dá para usar if e else , mas será bem mais trabalhoso, pois precisa compara caractere por caractere .
-
@Lekoribeiro @Lekoribeiro seu código está funcionando bem , não deu nenhum erro não , testei aqui no codeblocks #include<stdio.h> #include<stdlib.h> #include<string.h> int main(){ char n[15][20], cont[20],aux[20]; int numero, i, j, tamanho; do{ printf("Digite um numero entre 5 e 10"); printf("\n"); printf("Numero: "); scanf("%d",&numero); } while((numero<5)||(numero>10)); printf("\n"); i=0; while( i<numero ){ printf("Nome: "); scanf("%s", n[i]); printf("o nome = %s\n",n[i]); i++; } for(i=0; i<numero; i++){ for(j=i+1; j<numero; j++){ if( strcmp(n[i], n[j]) > 0){ strcpy( aux, n[i]); strcpy(n[i], n[j]); strcpy(n[j], aux); } } } printf("- Nomes por ordem alfabetica - Tamanho delas -\n"); i=0; while( i<numero ){ tamanho=strlen(n[i]); printf("Nome: %s - %d letras\n", n[i],tamanho); i++; } return 0; }
-
@MatheusINF isso é para que se for maior que 255 dará erro , então só pode ser até esse valor . if(a>255)a=255; é porque coloquei tudo em uma linha só , mas deveria ter colocado assim : if( a > 255 ) a = 255; o comentário era só para ver ele fazendo a conversão , então como já vi , coloquei como comentário .
-
@MatheusINF não precisa de itoa para isso não , precisa usar o comando mod que em c é % , então seu código pode ser assim : #include <stdio.h> #include <windows.h> int main(){ int a,i,j=7; char op[9]; printf("Digite Um Numero "); scanf("%d",&a); if(a>255)a=255; do{ if(a % 2 == 0)op[j]='0'; else op[j]='1'; /*printf("%c",op[j]); Sleep(500);*/ a/=2; j--; }while(a>0); if(j>=0){ for(i=j;i>=0;i--) op[i]='0'; } op[8]='\0'; printf("\n\n%s\n\n",op); return 0; }
-
@Hyt_Oliveira para postar seu código é melhor usar o botão <> que está lá na janela de postagem , pois senão seu código fivca faltando alguns caracteres , e esse código que você postou está com erros , ali dentro do switch precisa colocar break , e se esse código é para o c++ , então precisa da biblioteca iostream , então seu código com algumas modificações ficaria assim : #include <stdio.h>/* no c precisa dessa biblioteca */ #include <string.h> #include <conio.h> #include <locale.h>/* para imprimir acentuação */ #include <iostream>/* no c++ precisa dessa biblioteca */ using std::string; using namespace std; int main(){ string var1; int op; setlocale(LC_ALL,""); printf("Qual Opção Deseja? "); scanf("%d",&op); switch(op){ case 1: var1="Arroz"; break; case 2: var1="Feijão"; } cout<<endl; cout<<var1<<endl<<"\n"; return 0; }
-
C Desenvolva um programa capaz de obter os dados de pessoas que trabalha
devair1010 respondeu ao tópico de DONG YOL em C/C#/C++
@DONG YOL seu código está bom , precisa uma melhor organização , e a função int main só pode aparecer no código uma única vez , não pode repeti-la e nem fazer chamadas a main , e as funções geralmente ficam no início antes da main , mas se você quiser colocar elas no final depois da main pode também , mas precisa declarar todas elas no início , e aqui ainda fica faltando as opções 8 9 e 10 , então essa parte do seu código com algumas modificações ficaria assim : #include <stdio.h> #include <ctype.h> #include <stdlib.h> struct funcionario{ char nome[50]; int grau_de_estudo; int linguas_faladas; int cargo; float indice_produt; float salario; }; int poliglota(int r){ r*=r; return r; } int fatorial(int f){ int w=f; if(f>1){ while(f>1){ w=w*(f-1); f--; } } else{ w=1; } return w; } int salario_base(int b){ int w; if(b==1)w=1000; else if(b==2) w=1500; else if(b==3) w=2000; else if(b==4) w=2500; return w; } int cont,i,q,salario; int main(){ printf("Informe A Quantidade De Funcionarios "); scanf("%d",&q); struct funcionario novo[q]; char ch; do{ fflush(stdin); printf("Digite O Nome Do Funcionario: "); gets(novo[cont].nome); printf("Grau De Estudo < 1 2 3 4 5 >: "); scanf("%d", &novo[cont].grau_de_estudo); fflush(stdin); printf("Quantas Linguas Faladas: "); scanf("%d", &novo[cont].linguas_faladas); fflush(stdin); printf("Informe O Nivel Do Cargo Que Ocupa < 1 2 3 4 >: "); scanf("%d", &novo[cont].cargo); fflush(stdin); printf("Informe O Indice De Produtividade < Entre 0 e 1 >: "); scanf("%f", &novo[cont].indice_produt); if(novo[cont].indice_produt > 0.7) novo[cont].salario=(salario_base(novo[cont].cargo)+(fatorial(novo[cont].grau_de_estudo)*100)+ (poliglota(novo[cont].linguas_faladas)*100))+(salario_base(novo[cont].cargo)*novo[cont].indice_produt); else if(novo[cont].indice_produt > 0.4 && novo[cont].indice_produt < 0.7){ novo[cont].salario=salario_base(novo[cont].cargo)+fatorial(novo[cont].grau_de_estudo)*100+ poliglota(novo[cont].linguas_faladas*100); } else if(novo[cont].indice_produt < 0.4){ novo[cont].salario=salario_base(novo[cont].cargo)+fatorial(novo[cont].grau_de_estudo)*100+ poliglota(novo[cont].linguas_faladas*100)-salario_base(novo[cont].cargo)*0.4 - novo[cont].indice_produt; } cont++; do{ fflush(stdin); printf("\n deseja cadastrar outro funcionario S/N "); scanf("%c", &ch); if((toupper(ch)!='S')&&(toupper(ch)!='N')){ printf("\n erro"); } }while(toupper(ch)!='N' && toupper(ch)!='S'); }while(toupper(ch)!='N'); system("pause"); for(i=0;i<cont;i++){ printf("====================================\n"); printf("Nome --------: %s \n",novo[i].nome ); printf("Grau --------: %d \n",novo[i].grau_de_estudo ); printf("Linguas -----: %d \n",novo[i].linguas_faladas); printf("Cargo -------: %d \n",novo[i].cargo ); printf("Indice ------: %.2f \n",novo[i].indice_produt ); printf("Salario -----: %.2f\n\n",novo[i].salario ); } return 0; } -
@Loloup para isso você pega o número digitado pelo usuário e coloca essa variável dentro dos colchetes da matriz .
-
VisualG Relatório de entrevistas de pessoas
devair1010 respondeu ao tópico de allanalencar em Programação - iniciantes
@Naty Ribeirotop isso é por que você não leu o poste todo , onde tem correções para o código , e o erro não é nessa linha , se compr(nome)=0 então interrompa o erro é aqui no final , se contador <> 0 ENTÃO pfilho:=100*contadorf/contador ph:=100*homem/contador pm:=100*mulher/contador escreval("A porcentagem de homens e mulheres é respectivamente:",ph,"% e",pm,"%.") escreval("Pessoas com renda familiar acima de R$500,00:",rena_acime_500," pessoas.") escreval("Porcentagem de pessoas que tenham ao menos um filho:",pfilho,"%.") escreval("Pessoas que nasceram a partir do ano 2000:",nasc_2000,".") fimse onde se o contador for zero e ele será usado como divisor , e um numero dividido por zero é impossível , por isso dá erro , assim precisa tratar essa possibilidade , evitando que isso aconteça . então o código com as modificações seria esse : Algoritmo "Entrevistas" Var nome : caractere idade : inteiro sexo : caractere filhos,j, homem, mulher, rena_acime_500: inteiro nasc_2000 : inteiro rendaf : real contador, contadorf : real ph,pm,pfilho : real Inicio para j de 1 ate 10 faca escreval ("DIGITE OS DADOS DO ENTREVISTADO") escreval ("Tecle ENTER para sair!") escreva ("Nome :") leia(nome) se compr(nome)=0 ENTÃO interrompa fimse escreva ("Idade :") leia(idade) se idade < 19 ENTÃO nasc_2000:=nasc_2000+1 fimse escreva ("Sexo [M ou F] :") leia(sexo) se sexo="M" ENTÃO homem:=homem+1 senao se sexo="F" ENTÃO mulher:=mulher+1 fimse fimse escreva ("Filhos :") leia(filhos) se filhos > 0 ENTÃO contadorf:=contadorf+1 fimse escreva ("Renda Familiar:R$") leia(rendaf) se rendaf >= 500.00 ENTÃO rena_acime_500:=rena_acime_500+1 fimse limpatela contador:=contador+1 fimpara se contador <> 0 ENTÃO pfilho:=100*contadorf/contador ph:=100*homem/contador pm:=100*mulher/contador escreval("A porcentagem de homens e mulheres é respectivamente:",ph,"% e",pm,"%.") escreval("Pessoas com renda familiar acima de R$500,00:",rena_acime_500," pessoas.") escreval("Porcentagem de pessoas que tenham ao menos um filho:",pfilho,"%.") escreval("Pessoas que nasceram a partir do ano 2000:",nasc_2000,".") fimse Fimalgoritmo
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