Ir ao conteúdo
  • Cadastre-se

reuter_rjort

Membro Pleno
  • Posts

    51
  • Cadastrado em

  • Última visita

Tudo que reuter_rjort postou

  1. poxa, tô na mesma aqui... as vezes param de funcionar o B, N, e a seta 'pra baixo'.... meu dell é o inspiron 15r 5537... no começo achei que era o SO mas eu formatei e as vezes rola desse problema acontecer... ficam alguns minutos e depois volta... vou ficar "olhando" aqui pra vê se o povo tem solução pra isso... boa sorte o/
  2. Ola, então... tenho um '15r 5537' desde 2013 guerreiro aqui e recentemente apareceu na tela uma listra na vertical de pixel morto (eu acho), enfim... Estou pensando em comprar uma tela nova, se possivel comprar uma melhorzinha full-hd (1920x1080) ips... queria saber se qualquer tela com a quantidade certa de pinos funcionaria no notebook, se alguem poder me confirmar isso e me dizer a quantidade de pinos... Outra coisa tambem é sobre SSD do tipo M2 se da pra colocar nessa marca de notebook... entrei no forum da dell para fazer essas perguntas porém sem resposta ate agora =/ desde ja obrigado
  3. valeu, apos muita pesquisa acabei descobrindo isso... vivendo e aprendendo hahahahahah' vou procurar outros lugares do codigo pra poder usar isso, brigadão =D
  4. @TYSQUARE89 deu certo nao... o output do que deveria ter gerado nao saiu correto, mas valeu... tipo... usar o ternario nao é necessario, só seria pra da uma variada mesmo... vou deixar o IF mesmo
  5. Tenho o seguinte fragmento de codigo: for(i = 1; i < SIZE; i++) { for(j = 0; j < ELEMENTOS; j++) { //auxElementTransfer vai usar as posições referente ao vetor de linhaB em f[0] //que vai pegar o valor da posicao e jogar em f[i].linhaB[j], 'i' a partir da //posicao 1. f[i].linhaB[j] = f[0].linhaB[auxElementTransfer+auxAuxElement]; ++auxElementTransfer; if(auxElementTransfer == limResetAuxElmTrns) {auxElementTransfer = 0;} } ++auxAuxElement; } agora quando eu uso o operador ternario '?' para substituir o 'IF' em: if(auxElementTransfer == limResetAuxElmTrns) {auxElementTransfer = 0;} para: auxElementTransfer == limResetAuxElmTrns ? auxElementTransfer = 0 : printf("error\n"); só é executado a condição do 'printf' que seria o 'ELSE', mas essa seria uma condição impossivel de se alcançar no codigo, uma vez que usando o 'IF' ele executa como se deve. ao compilar usando o GCC com -Wall ou Clang com -Wextra nao acusam nenhum erro, e usando o GDB para debugar o codigo tudo ocorre perfeitamente. Alguem poderia me dizer o que pode ta ocorrendo para a condição 'TRUE' (auxElementTransfer = 0) usando o operador ternario '?' nao esta sendo executada??? Obrigado desde já =)
  6. @Benjamin Breeg no final das contas fiz isso mesmo... verifiquei cada caractere com o ponteiro e com as funções isdigit e isalpha olhava se era um numero ou letra do alfabeto, se nao fosse nenhum dos dois adotava como se fosse um caractere especial, valeu =)
  7. Bom, estou tendo problemas em verificar os caracteres especiais contidos numa string... segue parte do enunciado da questão: "-Senha: + de 6 caráteres e – de 15. Ao menos uma maiúscula, uma minúscula, um número e um símbolo". estou o inicio do codigo de analise para essa parte, onde estou criando um ponteiro que recebe a string e ira rodar num while caracter a caracter usando as funções da biblioteca ctype.h, segue o codigo (em construção): int passw_analise(char passw[SIZE]) { char* p = NULL; p = passw; while(p == '\0'){ //aqui contera if/elseif/else com funções da lib. ctype para analise } } o problema é que pesquisando as funções da lib. ctype nao encontrei nunhuma que verifica se o caractere é um caractece especial (exemplo: $, _, !, >, #). Alguem poderia me da uma luz de como fazer um codigo que verifique esses tipos de caracteres??? Obrigado desde já! =)
  8. reuter_rjort

    Livro C

    @Batata Doce cara... eu comecei com "Linguagem de Programação C, Luis Damas" ... voce acha o pdf ai dando uma googlada
  9. @kalarruda cara... eu entrei agora na faculdade e graças a algumas materias que tenho (e muitas desnecessarias) meu tempo para focar numa linguagem de programação reduziu muito... eu tambem estou "correndo contra o tempo" pois tenho 25 e como vivo debaixo do teto dos meus pais sou visto como um fracassado... nao só por eles... enfim... existem cursos otimos na Udemy que sempre tão em desconto... foca na area que voce quer atuar e mete a cara no conteudo disponibilizado na internet... aprender inglês tambem é importante caso voce não tenha muito dominio... enfim... boa sorte e tudo de melhor sempre =D
  10. reuter_rjort

    Elevador

    @luciano gomes rapaz... funções é um pouco difícil de explicar, mas vou deixar um link no final para voce da uma olhada, vou tentar explicar aqui a ideia inicial. Usando funções no programa você pode isolar certas funcionalidades do programa onde se voce alterar nao ira precisar procurar por todo programa caso tivesse usando uma variavel 'x' e a removesse... ou então caso precisasse imprimir uma mensagem na tela nao precisaria criar toda hora 'printfs' para tal... veja o exemplo: /*Programa basicamente cria uma matriz identidade *Para compilar: gcc -Wall matrizes-01.c -o test */ #include <stdio.h> #include <stdlib.h> #include <time.h> #define L 3 //LINHA #define C 10 //COLUNA int main(void) { srand(time(NULL)); int m[L][C] = {}; printf("Preenche matriz aleatoriamente:"); for(int i = 0; i < L; i++) for(int j = 0; j < C; j++) m[i][j] = rand()%10; //preenche com uma ordem aleatoria de numeros que vão de 0 a 9 printf("matriz original\n"); for(int i = 0; i < L; i++) { printf("%d [", i); for(int j = 0; j < C; j++) { printf("%d ", m[i][j]); } printf("]\n"); } //cria uma matriz identidade for(int i = 0; i < L; i++) for(int j = 0; j < C; j++) { if(i == j) m[i][j] = 1; else m[i][j] = 0; } printf("\n"); printf("Matriz identidade\n"); for(int i = 0; i < L; i++) { printf("%d [", i); for(int j = 0; j < C; j++) printf("%d ", m[i][j]); printf("]\n"); } return EXIT_SUCCESS; } usando funções no programa: /*Programa basicamente cria uma matriz identidade *Para compilar: gcc -Wall matrizes-01.c -o test */ #include <stdio.h> #include <stdlib.h> #include <time.h> #define L 3 //LINHA #define C 10 //COLUNA void montaMatrizIdentidade(int m[L][C]); void amostraMatriz(int m[L][C]); void preencheMatriz(int m[L][C]); void montaMatrizIdentidade(int m[L][C]) { for(int i = 0; i < L; i++) for(int j = 0; j < C; j++) { if(i == j) m[i][j] = 1; else m[i][j] = 0; } } void amostraMatriz(int m[L][C]) { for(int i = 0; i < L; i++) { printf("%d [", i); for(int j = 0; j < C; j++) printf("%d ", m[i][j]); printf("]\n"); } } void preencheMatriz(int m[L][C]) { for(int i = 0; i < L; i++) for(int j = 0; j < C; j++) m[i][j] = rand()%10; } int main(void) { srand(time(NULL)); int m[L][C] = {}; preencheMatriz(m); printf("Original:\n"); amostraMatriz(m); montaMatrizIdentidade(m); printf("Identidade:\n"); amostraMatriz(m); return EXIT_SUCCESS; } como no exemplo, separei cada funcionalidade desse programa com funções o que torna ele mais organizado e mais legível porque voce sabe o que cada um daqueles blocos ira fazer. AQUI O LINK COM UMA PLAYLIST SOBRE FUNÇÕES: https://www.youtube.com/watch?v=Y19q6rgM9eo&list=PLa75BYTPDNKYccxYJXaHFjwMUm02xV915 bons estudos cara =)
  11. reuter_rjort

    C ponteiro

    @Melissa A. voce ja fez algo do codigo? é uma questão que é relativamente fácil, ja que voce precisa apenas percorrer o vetor e adicionar os valores... isso voce deve fazer com apenas 2 laços FOR no maximo... não sou moderador mas faz parte da regra do forum que o pessoal poste o codigo que foi feito mas ainda assim esta errado, isso para que o pessoal realmente se empenhe para realmente aprender para não desistir no primeiro problema que vier =) Se voce ja fez o codigo mas ele nao ta funcionando posta ele aqui que eu ou qualquer outra terá o prazer em ajudar
  12. @Karpov1 o .h significa header, que são as bibliotecas criadas onde voce pode chamar as funções como por exemplo a função 'pow( )' da lib 'math.h', se voce ler sobre MAKE entendera tais coisas. tipo não irei explicar tudo porque é algo complexo que envolve linkagem de arquivos, compilação e etc... recomendo a leitura dos seguintes links onde voce poderá ter maior entedimento sobre: make, makefile, bibliotecas em c, object (o): https://pt.wikibooks.org/wiki/Programar_em_C/Makefiles http://www.cprogressivo.net/2013/09/Header-cabecalho-o-que-sao-para-que-servem-como-criar-e-usar-seus-arquivos-.h.html https://www.mat.uc.pt/~pedro/lectivos/ProgramacaoOrientadaObjectos/tutorialMakefilesPT.pdf ja .md (se for esse tipo de .md que estou pensando que geralmente vem quase sempre como README.md) é uma extensão de arquivo para html, abaixo o link de onde voce pode ler mais sobre isso: https://www.reviversoft.com/pt/file-extensions/md
  13. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> struct paciente { char nome[20],sexo; float altura, peso,IMC; }; int main() { struct paciente cadastro[20], aux; int total,i, opcao, troca, achou; total =0; for(;;){ printf("\n\nEscolha uma opcao:\n"); printf("\t\t1.Incluir paciente\n\t\t2.Alterar registro de um paciente\n\t\t3.Excluir um paciente\n"); printf("\t\t4.Procurar um paciente\n\t\t5.Mostrar lista de pacientes em ordem alfabetica\n\t\t6.Sair\n\t\t"); scanf("%d",&opcao); switch(opcao) { case 1: if (total <20) { printf("Nome:"); scanf("%[^\n]s", cadastro[total].nome); //observe esse SCANF, ele captura uma string completa mesmo contendo espaço printf("Altura:"); scanf("%f", &cadastro[total].altura); printf("Peso:"); scanf("%f", &cadastro[total].peso); printf("Sexo:"); scanf("%c", &cadastro[total].sexo); printf("IMC:"); scanf("%f", &cadastro[total].IMC); cadastro[total].IMC=(cadastro[total].peso/pow(cadastro[total].altura,2)); //função POW da lib math.h permite realizar contas de potencia, procura saber mais sobre ++total; } } } return 0; } dei uma "melhorada" no codigo... usei o GCC linux para compilar e rodou de boa, apenas warnings de variaveis nao declaradas. retirei algumas '{ }' a mais que tinham no codigo, acho que foi isso que nao fez o codeblocks funcionar
  14. rapaz... nos meus tempos de Codeblocks e Dev++ essas mizeras davam esse erro porque ele abria a versão 32bit as vezes mesmo sendo 64bits... tipo... se voce ta no windows voce pode habilitar o modo desenvolvedor e instalar o BASH ON WINDOWS... um emulador do terminal bash linux no windows, instala o GCC e compila/executa por linha de comando ou ainda voce só baixa o minGW pra poder compilar/executar via CMD ou POWERSHELL... ai quanto ao editor pode ser qualquer um, notepad++, vscode, atom, sublime e etc... enfim... tenta localizar a pasta do codeblocks e executa a versão 64bits como ADM e vê se rola
  15. @PimpolhoJack rapaz... eu fiz um codigo assim... vou postar meu github com o codigo pra voce da uma olhada... tipo... nao ta todo comentado o codigo mas esta separado com funções que ja descreve o que esta sendo feito... eu vou da uma reduzida no codigo depois... https://github.com/rjort/academic_execises/blob/master/MAT01/calculadora_de_matriz.c
  16. @devair1010 meh... mais ou menos... consegui resolver... no final ficou assim: for(z = 0; z < m; z++){ for(j = 0; j < n; j++){ if(M[z][j] != 0 && controle == 0){ acharum = M[z][j]; x = j; controle++; } if(M[z][j] != 0 && controle > 0){ M[z][j] = (1/acharum) * M[z][j];} } for(i = 0; i < m; i++){ aux[i] = M[i][x]; } if(z == 0){ for(i = 1; i < m; i++){ for(j = 0; j < n; j++){ if(aux[i] < 0){ M[i][j] += (-1* aux[i]) * M[z][j]; }else if(aux[i] > 0){ M[i][j] -= aux[i] * M[z][j]; } } } }else if(z > 0 && z < m-1){ for(i = z-1; i >= 0; i--){ for(j = 0; j < n; j++){ if(aux[i] < 0){ M[i][j] += (-1* aux[i]) * M[z][j]; }else if(aux[i] > 0){ M[i][j] -= aux[i] * M[z][j]; } } } for(i = z+1; i < m; i++){ for(j = 0; j < n; j++){ if(aux[i] < 0){ M[i][j] += (-1* aux[i]) * M[z][j]; }else if(aux[i] > 0){ M[i][j] -= aux[i] * M[z][j]; } } } }else if(z == m-1){ for(i = 0; i < m-1; i++){ for(j = 0; j < n; j++){ if(aux[i] < 0){ M[i][j] += (-1* aux[i]) * M[z][j]; }else if(aux[i] > 0){ M[i][j] -= aux[i] * M[z][j]; } } } } acharum = 0; controle = 0; } enfim... obrigado mesmo nao tendo entendido xD é porque sou ruim em explicar algo e era algo complexo
  17. @vangodp 1 1 2 8 -1 -2 3 1 3 -7 4 10 encontrar o pivô da primeira coluna. Como o primeiro elemento da coluna 1 é 1, basta zerarmos os demais elementos. multiplica por 1 a primeira linha e soma com a segunda linha. 1*linha 1 + linha 2 ==> linha 2 multiplica a primeira linha por –3 e soma com a terceira. -3*linha 1 + linha 3 ==> linha 3 mostra o conteúdo da matriz B B = 1 1 2 8 0 -1 5 9 0 -10 -2 -14 agora encontrar o pivô da segunda coluna. Para isso, basta multiplicarmos a segunda linha por –1. multiplica a segunda linha por –1. -1*linha 2 ==> linha 2 B = 1 1 2 8 0 1 -5 -9 0 -10 -2 -14 zerar os outros elementos da segunda coluna. multiplica por –1 a segunda linha e soma com a primeira linha. -1*linha 2 + linha 1 ==> linha 1 multiplica a segunda linha por 10 e soma com a terceira linha. 10*linha 2 + linha 3 ==> linha 3 mostra o conteúdo da matriz B. B = 1 0 7 17 0 1 -5 -9 0 0 -52 -10 Encontraremos agora o pivô da terceira linha. Para isso, multiplicaremos a terceira linha por –1/52. multiplica a terceira linha por –1/52. -1/52*linha 3 ==> linha 3 mostra o conteúdo da matriz B. B = 1 0 7 17 0 1 -5 -9 0 0 1 2 Para terminarmos o processo de escalonamento, basta zerarmos os elementos da terceira coluna. multiplica por 5 a terceira linha e soma com a segunda linha. 5*linha 3 + linha 2 ==> linha 2 multiplica a terceira linha por -7 e soma com a primeira linha. -7*linha 3 + linha 1 ==> linha 1 mostra o conteúdo da matriz B. B = 1 0 0 3 0 1 0 1 0 0 1 2 bem... eu só quero saber como posso fazer pra calcular as linhas...
  18. reuter_rjort

    if

    cara... tu ta colocando só ELSE... tenta assim double x; scanf("%lf", &x); if(x>=0 && x<=25) printf("Intervalo [0,25]"); else if (x>25 && x<=50) printf("Intervalo (25,50]"); else if (x>50 && x<=75) printf("Intervalo (50,75]"); else if(x>75 && x<=100) printf("Intervalo (75,100]"); else printf("Fora de intervalo"); nao compilei o codigo, mas se estiver desse jeito que tu postou é quase certeza que é esse o erro... é sem os { } mesmo
  19. @vangodp @CiroboyBR podem da uma olhada? resumindo só estou com dificuldade em realizar as operações com as linhas da matriz
  20. Estou fazendo um codigo pra criar uma matriz em forma de escada porém me encontro empacado no momento que preciso zerar as linhas abaixo do primeiro valor. O pivô são valores iguais a 1 quando 'i == j' dentro de dois laços FOR. Segue o exemplo abaixo de uma transformação de matriz em forma de escada. 1 1 2 8 -1 -2 3 1 3 -7 4 10 passa a ser: 1 1 2 8 0 -1 5 9 0 -10 -2 -14 o que fiz para zerar as linhas: multiplica por 1 a primeira linha e soma com a segunda linha. multiplica a primeira linha por –3 e soma com a terceira. e novamente... a primeira matriz o m[0][0] ja é igual a 1 então não precisei fazer equação alguma, mas quando i == j na segunda (m[1][1]) linha temos o -1, então vou transforma-lo em 1 e depois zerar os valores acima e abaico de m[1][1]. 1 1 2 8 0 1 -5 -9 0 -10 -2 -14 para transformar m[1][1] em 1 eu fiz: multiplica a segunda linha por –1 Enfim... nao vou colocar o exemplo todo pra nao ficar muito grande... segue o codigo abaixo do que ja fiz, ai preciso somenta achar um modo de trabalhar com a equação das linhas. #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #define TRUE 1 #define FALSE 0 //valores definidos aqui apenas para teste, essas variaveis //vão receber seus valores na funcao 'main' atraves de um 'scanf' //que vai definir o tamanho da linha e coluna para a matriz //sao do unsigned para evitar o uso de valores negativos na //criacao da linha e coluna. unsigned linha, coluna; void trocaDeLinha(int **m); void amostraDeMatriz(int **m); void gerarMatrizEmEscada(int **r, int **auxiliar); void preencheMatrizEscada(int **m); //funcao criada apenas para amostrar resultados void amostraDeMatriz(int **m) { int i, j; for(i = 0; i < linha; i++) { printf("\n"); for(j = 0; j < coluna; j++) printf("%d ", m[i][j]); } } //FUNCAO AINDA EM CONSTRUICAO!, mas aqui irei zerar as linhas abaixo do pivô //e tambem calcular linha/coluna para achar os resultados. // void gerarMatrizEmEscada(int **r, int **m_aux) { int aux1 = 0, aux2 = 1; int i, j, l, k = 0; int aux[coluna] = {}; while(k < linha) { for(j = 0; j < coluna; j++) for(i = 0; i < linha; i++) { aux1 = r[i][j]; if(aux1 < ) } ++k; } } void trocaDeLinha(int **m) { int aux; int i, linha_diferente = 1; for(i = 1; i < linha; i++) { if(m[i][0] != 0) { linha_diferente = i; break; } } for(i = 0; i < coluna; i++) { aux = m[0][i]; m[0][i] = m[linha_diferente][i]; m[linha_diferente][i] = aux; } } void preencheMatrizEscada(int **m) { int i, j; for(i = 0; i < linha; i++) { for(j = 0; j < coluna; j++) { m[i][j] = rand()%3; } } } int main(void) { srand(time(NULL)); int **matriz, **resultante, **m_aux; int i, j; scanf("%u %u", &linha, &coluna); matriz = (int **) malloc(linha * sizeof(int *)); for(i = 0; i < linha; i++) matriz[i] = (int *) malloc(coluna * sizeof(int)); if(matriz == NULL) { printf("ERRO 1024\n"); exit(TRUE); } preencheMatrizEscada(matriz); amostraDeMatriz(matriz); printf("\n\nTROCANDO AS LINHAS\n"); memcpy(&resultante, &matriz, sizeof(matriz)); if(matriz[0][0] == 0) trocaDeLinha(resultante); memcpy(&m_aux, &resultante, sizeof(resultante)); gerarMatrizEmEscada(resultante, m_aux); amostraDeMatriz(resultante); printf("\n"); free(m_aux); free(matriz); free(resultante); return EXIT_SUCCESS; } Ignorem variaveis que nao estão sendo usadas e matrizes passada para funções que estão sem uso... Acho que é só isso... Obrigado desde já.
  21. Iniciei os estudos sobre threads na linguagem C, e me surgio uma duvida refente ao tipo de função que é criada... por exemplo: void *uma_thread_aqui (void *argumentos) {} o que significa essa função do tipo ponteiro??? eu queria entender o funcionamento real dela... ficou algo muito abstrato... ou eu sou muito burru mesmo xD obrigado desde já! =D
  22. tenho o seguinte codigo usando apenas pra analisar a funcao 'atexit'.... estou a 1 hora analisando e reanalisando o codigo e nao to sabendo o que fiz de errado T_T #help ao executar-lo o erro é esse: 'segmentation fault (core dumped)' #include <stdio.h> #include <stdlib.h> //numero maximo de callbacks permitidos #define MAX_CALLBACKS 8 //matriz de ponteiros com os callbacks static void *callbacks[MAX_CALLBACKS]; static int callbacks_pos = 0; //implementacao de my_atexit () static int my_atexit ( void (*func) (void) ) { //caso haja posicao disponivel na matriz, guarda o ponteiro if ( callbacks_pos < MAX_CALLBACKS ) { callbacks[callbacks_pos++] = func; return 0; } //caso ja existam funcoes agendadas, retorna um erro return -1; } static void my_exit ( int status ) { void ( *func ) ( void ); //executa todas as funcoes agendadas de tras para frente while ( callbacks_pos != -1 ) if ( (func = callbacks[callbacks_pos--]) != NULL ) func (); exit(status); } static void func0 (void) { fprintf ( stdout, "funcao 0... \n" ); } static void func1 (void) { fprintf ( stdout, "funcao 1... \n" ); } static void func2 (void) { fprintf ( stdout, "funcao 2... \n" ); } static void func3 (void) { fprintf ( stdout, "funcao 3... \n" ); } static void func4 (void) { fprintf ( stdout, "funcao 4... \n" ); } static void func5 (void) { fprintf ( stdout, "funcao 5... \n" ); } static void func6 (void) { fprintf ( stdout, "funcao 6... \n" ); } static void func7 (void) { fprintf ( stdout, "funcao 7... \n" ); } static void func8 (void) { fprintf ( stdout, "funcao 8... \n" ); } static void func9 (void) { fprintf ( stdout, "funcao 9... \n" ); } int main (void) { my_atexit (func0); my_atexit (func1); my_atexit (func2); my_atexit (func3); my_atexit (func4); my_atexit (func5); my_atexit (func6); my_atexit (func7); my_atexit (func8); my_atexit (func9); my_exit (0); //nunca sera executado! return 0; } alguem pra me "helpar"? //deve ser sono ja =D
  23. @Paulo Moraes da Silva o '~' ta sendo colocado se usar a tag 'code' < >' para colocar codigo que é o que o pessoal do forum recomenda
  24. @Mayk.hsm é exatamente por isso cara, se você digitar um caracter em um entrada do tipo int, float (%d, %f) ira ocorrer um erro, você pode criar limitações de entrada usando operadores logicos ' && ' e ' || ' '!' com IF/ELSE e algum laço de repetição para imprimir uma mensagem de erro e retornar a entrada de informação, algo parecido com o que ocorre ai em baixo. ... scanf ( " %c", &decisão) if (decisão == (int)decisão) printf ( "ERRO\n" ); ... Por hora, acho que você nao deve focar em criar um programa livre desses erros, porque seria um pouco mais complexo acredito eu. enfim, se eu estiver errado outras pessoas mais experientes podem responder xD eu só tenho 1 ano estudado essa linguagem... bons estudos =D
  25. Esta lendo sobre Java e C# para ver qual eu iria direcionar meus estudos (também devido ao mercado de C++ para minha cidade que é lamentavel, inexistente praticamente), a principio eu estava considerando muito Java pelo simples fato de não precisar mudar de sistema operacional e voltar ao Windows devido ao C# só funcionar com o framework lá, porém, vi sobre o .Net Core 1.0, que é uma brusca mudança para a familia .Net a tornando-a multiplataforma, bem, meu inglês não é muito bom e a documentação que eu li não deu para eu entender direito e como é algo novo não achei nenhum site Br falando sobre, enfim, minha duvida é: Agora com o .Net Core o C# não precisará mais do Windows como plataforma para que eu possa desenvolver e compilar programas feitos nele?. Acho que eu nao soube me expressar direito mas eu acho que é isso xD

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!