Ir ao conteúdo

Ansi C

Membro Pleno
  • Posts

    3.284
  • Cadastrado em

  • Última visita

posts postados por Ansi C

  1. Boa noite!

     

    RÓTULOS GRÁFICOS

    Aquele menu é, supostamente, uma composição textual de 5 caracteres; (+),  (-), ( | ) e espaços, parte é constante, ou seja, existe literalmente no código-fonte, e a outra parte se produz num laço (repetição) pela computação. Por exemplo, a tabela "Exibir a fila geral", nela há texto constante como titulo, bordas e os rótulos nas colunas.

     

    Uma exemplificação de texto:

     

    	
        +-------------------------+
        |    Exibir fila geral    |
        +-------------------------+
        
        +--------+--------------------+---------+---------------------+---------------------+
        |  Fase  |  Nome              |  Idade  |  Profissão (grupo)  |  Comobirdade (1|0)  |
        +--------+--------------------+---------+---------------------+---------------------+
    

    Tudo isso é capaz de existir numa variável.

    Assim:

    C'11 12.4.0

    #include <stdio.h>
    
    char *cabecalho_fila_geral =
            "+-------------------------+\n"
            "|    Exibir fila geral    |\n"
            "+-------------------------+\n"
            "\n"
            "+--------+--------------------+---------+---------------------+---------------------+\n"
            "|  Fase  |  Nome              |  Idade  |  Profissão (grupo)  |  Comobirdade (1|0)  |\n"
            "+--------+--------------------+---------+---------------------+---------------------+\n\n";
    
    int exibir_fila_geral (void *tela);
    int main (void)
      {
        printf ("%s", cabecalho_fila_geral);
        /*^~~~ produz esse texto apontado no simulador de terminal */
      }

     

    Todos os gráficos e rótulos, portanto, tabelas aparentemente, seguem o mesmo princípio que tetei elucidar.

    Se duvida disto, pergunte por favor.

     

    Você consegue construir essas strings (texto como valor) no código-fonte, num arquivo externo ou até mesmo na computação.

    A escolha é sua! Entendeu.

    • Obrigado 1
  2. @Dark_Yoshi

    Seja bem-vindo no fórum CdH!

     

    Bom Dia!

    Habilite todos os alerta no compilador, em seguida, experimente compilar tua programação, por último escute todos os alerta (se houver).

     

    O Jogo

    Essa tua expressão inspira a brinca “tá quente ou tá frio”? Uma variação dessa atividade dos jogos infantis consiste na orientação por meio de 2 palavras, QUENTE e FRIO: quando o buscador se oriente na direção do objeto, diz-se está quente, do contrário, está frio. Na reta real dos números, dado um ponto, todo palpite no ponto está quente, todo palpite longe do ponto está frio, sendo sempre o primeiro palpite QUENTE quando não exato.

     

    Por exemplo

    Dado um número, e um palpite X, se |NUMERO-X|≠ 0, então espera-se que o absoluto da diferença do número e o próximo palpite (X') seja menor que a atual, por isso QUENTE, do contrário, será FRIO.

     

    Acertei?

    • Obrigado 1
  3. 18 horas atrás, Jaovitorlm disse:

    dica em mudanças na forma de escrever são bem vindas!!

    Suponho que não haja muitas formas de escrever, e se existem são análogas.

     

    Bom Dia @Jaovitorlm

    Por exemplo, pense numa progressão aritmética de razão 2... para cada par (x, y | x < y) , tem-se

     

    Sn = n * (a1 + an)

     

    Onde

    n  ?      é metade do número de valores ímpares no intervalo x, y

    a1?      é menor ímpar maior que x

    an?      é maior ímpar menor que y

    Sn?      é n Vezes (a1 mais an) a soma de uma P. A.

     

    Neste caso que imagino para você, a programação ler x e y para determinar valores de n, a1, a2 e por fim Sn.

    Suponho que assim tem uma outra forma de escrever.

    • Curtir 1
  4. @DaviFonsecx

    Boa noite,

            Aparentemente, não há erro e/ou alerta durante compilação.

    Usei gcc 11.4 e compilou.

     

    Em 02/06/2024 às 20:54, DaviFonsecx disse:

    Copiei o seu código, e no meu compilador ainda não exibe os resultados corretos.

    Defina-nos qual é o resultado.

     

    Por exemplo:

    Essa programação|construção|expressão determina 3 a 3 segmentos

    com valores arranjados entre 1 e 500, que correspondem a um triangulo

    retângulo por meio da relação a^2 = b^2 + c^2 tal que o segmento b itera sobre c

    em a no intervalo dos inteiros.

     

    Então, a entrada é as triplas do arranjo (b, c, a)

    e o resultado é as triplas cujo relacionamento é verdadeira.

     

    • Obrigado 1
  5. Em 20/04/2023 às 14:23, bngomes disse:

    não tem como saber a quantidade primeiro pra depois imprimir o nome... a não ser que voce crie um segundo array com os indices do que passaram do peso e depois desse o print desse array

     

                                                                                                                   MATRIZES

    Também pensei isso!

     

    Declarar o arranjo onde o comprimento e os elementos são, respectivamente, a

    quantia e os índices doutro; conforme um ou mais filtros e/ou requisitos.

     

    Expresso:

    Indice grupo_acima_da_media[PACIENTE], incluir = 0;
    for (Indice paciente = 0 ; paciente < PACIENTE ; ++paciente)
       if (dados[paciente].peso > media)
          grupo_acima_da_media[incluir] = paciente ,
          ++incluir;

     

    • Curtir 1
  6. Bom dia,

     

            Tem-se, aparentemente, aqui soluções em que todas me inspiram uma

    ordenação crescente dos segmentos (a, b e c). Com isso determinar o

    segundo maior segmento (b) e o primeiro (a) e o menor (c), todos maiores

    que 0.

     

    Logo, se há condição para a existência de um triangulo retângulo, então

    a² == b² + c² será verdade, em seguida:

    b altura

    c base

    Area = (1/2)cb

    • Curtir 1
  7. 1#

    Em 14/05/2024 às 23:38, devair1010 disse:
    typedef struct
    {
      int  sequencial;
      char nome    [30];
      char email   [30];
      ///long int telefone; /// esse nUmero gigante não servirAh para nada
      char telefone[15];    /// melhor que seja string
    } ContatoProfissional;
    
    ContatoProfissional Contato;
    

     

    #2

    Em 14/05/2024 às 23:38, devair1010 disse:
    fgets(Contato.nome, 50, stdin);
    Contato.nome[strlen(Contato.nome)-1] = 0;/// remove o newLine pego por fgets
    

     

    No #1 recorte, há declaração dum dado composto e uma variável deste dado. O

    dado composto tem 4 campos, um deles é o nome do tipo char [30]: um arranjo

    com capacidade para 30x caracteres.

     

    Em seguida, @devair1010, expressa-se, no segundo argumento da função

    fgets, como se aquele campo fosse para 50x caracteres. E mais abaixo ainda no

    #2 recorte, insinua-me que não conhece a capacidade do nome ao utilizar

    'strlen' para determinar o tamanho de sua string.


    😄 

    *** Capacidade é de 30x 

    Curiosamente, reforça o caso do autor da pergunta, que também expressa

    variáveis além da definição.

     

  8. Em 14/05/2024 às 23:38, devair1010 disse:

    está lendo dois blocos e sendo que no "fwrite" gravou apenas um bloco de cada vez

    É isso ai; ela acessa 2 variáveis a partir do endereço de somente uma.

     

     

    Em 14/05/2024 às 18:41, higor7 disse:
    	ContatoProfissional LerContatos;
    	FILE *arquivoContatos = fopen("contatos.dat", "rb");
    
    	if (arquivoContatos)
    	{
    		while (fread(&LerContatos, sizeof(Contato), 2, arquivoContatos))

     

     

    Erro no Fread que imprimi de um arquivo apenas um contato é não o restante

    Por que o programa encerra logo em seguida?

     

    Olhe lá, declarou-se LerContatos, sendo 1x ContatoProfissional, depois, expressa-se nos argumentos 2x, assim a fread escreve 1x variável além da definição; escreve em bytes indefinidos ou definidos, porém não para essa operação.

     

    ERRO NA DIGITACAO 🙂

    • Obrigado 1
  9. 3 horas atrás, arfneto disse:

    Ativar todos os alertas ou mesmo tratar qualquer alerta como erro é interessante numa primeira compilação ou se sua empresa ou escola assim exige, mas não é essencial. Um erro é um erro e não gera código algum. Variável não declarada é um erro.

     

    E daí? Ative todos os alerta e se dê a oportunidade de aprender com eles!

    ISSO É BOM!

     

    A propósito, aquela programação não compilou.  

    a.c: In function main’:
    a.c:2:14: error: parâmetro não utilizado argc [-Werror=unused-parameter]
        2 | int main(int argc, char* argv[])
          |          ~~~~^~~~
    a.c:2:26: error: parâmetro não utilizado argv [-Werror=unused-parameter]
        2 | int main(int argc, char* argv[])
          |                    ~~~~~~^~~~~~
    cc1: todos os avisos sendo tratados como erros

     

    • Curtir 1
  10. Bom dia,

     

            Essa programação não compilou!

    ...

    a.c: Na função 'main':
    a.c:48:23: erro: 'b' não declarado (primeiro uso nesta função)
       48 | if(C>A && C>b)
          |             ^
    a.c:48:23: nota: cada identificador não declarado é relatado apenas uma vez para cada função em que aparece
    a.c:9:14: erro: parâmetro não utilizado 'argc' [-Werror=unused-parameter]
        9 | int main(int argc, char* argv[] )
          |          ~~~~^~~~
    a.c:9:26: erro: parâmetro não utilizado 'argv' [-Werror=unused-parameter]
        9 | int main(int argc, char* argv[] )
          |                    ~~~~~~^~~~~~
    cc1: todos os avisos sendo tratados como erros

    c11 - gcc11.4

    • Obrigado 1
  11. Agora 😄 não mais ... o programminha compila!

    codigo_em_C_esta_apresentando_alguns_erros_quando_tento_compila-lo.c

    /*                               EXERCICIO
     ---------------------------------------------------------------------------
    */#include <stdio.h>
      #define PACIENTE 0x1
      struct Paciente
         {
          char    nome[30];
          float   peso;
         };
      int
      main (void)
      {
       float media = 0;
       unsigned cant = 0;
       struct Paciente grupo[PACIENTE];
       for (unsigned paciente = 0 ; paciente<PACIENTE ; ++paciente)
          {
           printf ("\nNome: ");
           gets ((grupo + paciente)->nome);
           printf("\nPeso: ");
           scanf ("%f",&(grupo + paciente)->peso);
           media += (grupo + paciente)->peso;
          }
       media = media / PACIENTE;
       for (unsigned paciente = 0 ; paciente<PACIENTE ; ++paciente)
          if((grupo + paciente)->peso > media)
             {
              printf("%s está acima do peso médio\n", (grupo + paciente)->nome);
              ++cant;
             }
       printf("%d pessoas estão acima do peso médio", cant);
      }

    c'11 - gcc'11.4

    • Curtir 1
  12. Sistema de Numeração Decimal

                                           ^

       + neste estilo - - - - (±9999)

        |

    %d 

       ^~~ especificamente para converter inteiro de base10.

     

    . . . . . . . . . . . . . . . .

    0 1 2 3 4 5 6 7 8 9 | 

    ´´´´´´´´´´´´´´´´´´´´´´´´´´

    • Curtir 1
  13. Boa dia!

     

    Quando essa pergunta aconteceu ninguém recomendou ativas todos os alertas do compilador:

    a.c: In function main’:
    a.c:13:10: parênteses em torno da comparação no operando de ‘&’ [-Werror=parentheses]
       13 |    if (A < (B+C) & B < (A+C) & C < (A+B))
          |        ~~^~~~~~~
    a.c:13:34: erro: sugira parênteses em torno da comparação no operando de ‘&’ [-Werror=parentheses]
       13 |    if (A < (B+C) & B < (A+C) & C < (A+B))
          |                                ~~^~~~~~~
    a.c:15:12: erro: sugira parênteses em torno da comparação no operando de ‘&’ [-Werror=parentheses]
       15 |       if (A==B & B==C)
          |           ~^~~
    a.c:17:10: erro: ‘área não declarada (primeiro uso nesta função)
       17 |          area=(B*C)/2;
          |          ^~~~
    a.c:17:10:nota: cada identificador não declarado é relatado apenas uma vez para cada função em que aparece 

     

    A,B e C são flutuantes (float)***

    area não existe!***

     

    Com essas correções, o programminha compilou

    Leia-os-3-lados-de-um-triângulo-retângulo-e-imprimir-a-maior-altura-e-a-sua-área.c

    /*                                EXERCICIO
     ---------------------------------------------------------------------------
    */#include <stdio.h>
      int main ()
      {
       float A,B,C;
       printf("Digite o tamanho do lado A do triangulo retangulo: ");
       scanf("%f",&A);
       printf("Digite o tamanho do lado B do triangulo retangulo: ");
       scanf("%f",&B);
       printf("Digite o tamanho do lado C do triangulo retangulo: ");
       scanf("%f",&C);
       if ((A < (B+C)) & (B < (A+C)) & (C < (A+B)))
         {
    ///   if ((A==B) & (B==C))
    ///     {
          float area=(B*C)/2.0f;
          printf("\n\nO valor da area do triangulo é igual a: %f\n\n",area);
    ///     }
         }
       return 0;
      }

    C11 - gcc11.4

    • Curtir 1
  14. Boa dia!

     

    Observe a pergunta, depois, observa-se a resposta. Com essas coisas em mente,

    facilita-se a compreensão do como ir da pergunta à resposta.

     

                                                                                                                 PERGUNTA.

    O que entra [argumentos]

     

    Em 31/05/2021 às 14:36, tibia8921 disse:

    as  temperaturas máxima e minima do dia

    São composições com dois valores numéricos, digamos que teclados pelo usuário,

    sendo que, para expressar uma entrada intuitiva, escolho dois-a-dois numa linha.

     

    Atenção

    Assumo entradas ideais: não há

    nenhuma categoriade erros e falhas.

     

    Expresse-se

     

            a aocação de inteiro como dia= 0;

            a alocação de real como minima, maxima;

            a impressão: Quais foram as temperaturas do dia {dia};

            a impressão: [A Minima Maxima escalares]?

            a extração: minima, maxima;

            a impressãio: minima, maxima;

     

    Fim da expressão.

     

    C'11

    /*
                                       EXERCICIO
     -----------------------------------------------------------------------------
    */#include <stdio.h>
      int main(void)
      {
       unsigned dia= 0;
       float minima , maxima;
       printf("%s%u%c","Quais foram as temperaturas do dia ",dia,'\n');
       printf("%s","[A minima maxima escalares]? ");
       scanf("%f%f",&minima,&maxima);
    ///printf("%f%f",minima,maxima);
      }

    image.png.c632a5fda545712fd819dac967a95d27.png

     

     

     

    Veja

    https://en.cppreference.com/w/cpp/language/type float unsigned int

    https://en.cppreference.com/w/c/io/fprintf printf

    https://en.cppreference.com/w/c/io/fscanf scanf

    ...

    • Curtir 1
  15. Em 30/09/2021 às 14:35, Midori disse:

    Seria assim no caso da passagem por valor quando a função recebe apenas uma cópia do valor passado como argumento. Mas como esses dois parâmetros são ponteiros, a função vai receber o endereço das variáveis (declaradas em main) e portanto qualquer atribuição que fizer a elas dentro de calc_hexa terá efeito efetivo nelas e por isso terão seus valores alterados após a chamada da função.

    São tipos com aritmética especifica.

     

    Ponteiro é um tipo como int, só que derivado de int, não somente de int, de

    todas as primitivas e dos tipos que o programador definir e construir a partir

    do que já existe.

     

    O valor de um ponteiro precisa ser sempre, sempre um endereço, porque

    desta maneira será avaliado, senão tem algo errado.

     

    [Filosofia]
    int *p, p é uma variável 
          , sendo que 'p' pode aponta para outra
          , porque seu valor é também um endereço

     

    • Curtir 1
  16. Não siga esta recomendação:

    7 horas atrás, arfneto disse:
    • Ao invés de
    	if (sexo == 'f')
            {
                if (resp == '1') femsim++;
                if (resp == '2') femnao++;
            }
            else if (sexo == 'm')
            {
                if (resp == '1') mascsim++;
                if (resp == '2') mascnao++;
            }
            else
                outros++;

     

    Prefira por exemplo

     

            if ((resp == 's') || (resp == 'S'))
            {
                if ((sexo == 'f') || (sexo == 'F'))
                    ++i, ++sim, ++fem_sim;
                else if ((sexo == 'm') || (sexo == 'M'))
                    ++i, ++sim;
            }
            else
            {
                if ((resp == 'n') || (resp == 'N'))
                {
                    if ((sexo == 'm') || (sexo == 'M'))
                        ++i, ++não, ++masc_nao;
                    else if ((sexo == 'f') || (sexo == 'F'))
                        ++i, ++não;
                }
            }

     

    Nem um e nem o outro: prefira sempre o seu, PORQUE ELE é SEU.

    Seja honesto consigo mesmo, corrija o que achar errado, somente isso.

    Em 14/06/2022 às 10:58, ningumx disse:
    if(resp == 1)
         resps++;
        else 
         if(resp == 2)
          respn++;
         else
          if(sexo == 1)
           fem++;
          else
           if(sexo == 2)
            masc++;
           else
            if(sexo == 1 && resp == 1)
             femsim++;
            else
             if(sexo == 2 && resp == 2)
              mascnao++;
          

     

    Para mim, isso foi o mais IMPORTANTE!

     

     

    • Curtir 1
  17. Porque supostamente ele é a junção de dois outros:

    Leia um número inteiro positivo, depois mostre quantos dígitos tem o número;

    Leia um número inteiro positivo, depois mostre a potência da base 2 com esse número.

     

    Junta-se os dois no liquidificador e tem-se:

    Em 18/06/2020 às 16:29, Matheus Freitas disse:

    Leia um número inteiro que representa um número binário (formado de zeros e uns). Imprima esse número convertido para base decimal.

     

    Parece fácil?

    É SÓ NÃO PENSAR D+

     

    Expressa-se

    ...  a alocação dum inteiro;

    ...  a extração de um inteiro;

    ...  a alocação doutro inteiro como decimal;

    ...  a alocação doutro inteiro como potência;

    ...  uma repetição que, se o inteiro difere de zero, faça-se,

    ...  o modulo daquele inteiro por 10 e se diferente de 0, então,

    ...  adicione potência ao valor de decimal;

    ...  eleve a potência;

    Fim da expressão.

     

    ler_um_numero_inteiro_por_binario_(1011)_e_converter_para_base_decimal.c

    /* ler um numero inteiro por binário (1011) e converter para base decimal   */
    /*=================================[ 0-0 ]==================================*
                                      EXERCICIO
    
     Leia um número inteiro que representa um número binário
     (formado de zeros e uns). Imprima esse número convertido para base decimal.
                                                                 17:34 07/05/2024
      *==========================================================================*/
     #include <stdio.h>
    
     int main (void)
     {
      printf ("%s","Entre uma configuração[ max. 10 digitos ]?>");
      int inteiro= 1111111111;
      scanf ("%10d",&inteiro);
      int decimal= 0;
      int potencia= 1;
      do
        {
         if (inteiro% 10)
            decimal+= potencia;
         potencia*= 2;
        }
      while (inteiro/= 10);
      printf ("%s%d","!>",decimal);
      putchar ('\n');
     }
    /*===========================================================================*/

    c'11 - gcc11.4

     

    😉 — Somente isso, inicialmente, fica o file.

    • Curtir 1
  18. Boa dia!

     

    Pelo que me insinua, a pergunta do enunciado era desse jeitinho, por exemplo:

    1101
    ~~~^ Isto é o valor para um inteiro, 
    ele é decimal e vale mil cento e um, 
    será escaneado e salvo numa variável 
    do seu tipo (int, long tanto faz)

     

                                                                                                              O EXERCICIO

    Convertam-se os dígitos no VALOR daquele inteiro para binário, depois...

    Mostre: 1 + 0 + 4 + 8

    Em 18/06/2020 às 16:29, Matheus Freitas disse:

    Imprima esse número convertido para base decimal.

                                                                                                    E como resposta: 13

     

    Ou seja, mil cento e um (1101) configurava|configura 13.

     

     

    *** Às vezes o enunciado parece isso, às vezes não, então…

    Quando assim, consulta-se o professor, né? 🙂 

    • Curtir 1
  19. Boa dia.

     

    Esse programa compila e faz sua programação, porém, ele não pergunta e não responde conforme enunciado:

    Em 14/07/2022 às 21:33, luizpx41 disse:

    Faça um programa que leia um número inteiro positivo N e imprima todos os números naturais de 0 até N em ordem crescente.

     

                                                                                                             Comando FOR

    iteração | repetição de comandos num bloco

     

    Como enunciado, quero escanear um número inteiro positivo N (...)

     

    Notei que sua programação quase não escaneia, e por cima disso, chama-a por

    2x, ou seja, pelo certo serão 2 valores, quando o problema é de 1 valor:

     

                                                                                               UM INTEIRO POSITIVO!

     

    Parece fácil? Veja!

    Expressa-se

     

         a alocação da variável N como inteiro;

         a extração de uma decimal;

         a alocação de um contador como número natural de valor inicialmente 0;

         a repetição que, para o contador  menor que  N, faça-se  aumentá-lo,

         e escrever o contador;

     

    Fim da expressão.

    numero_inteiro_positivo_N_e_imprima_todos_os_numeros_naturais_de_0_ate_N.c

    /* Número inteiro positivo N e imprima todos os números naturais de 0 até N */
    
    #include <stdio.h>
    #include <limits.h>
    
    int main (void)
    {
     int N= -1;
     printf("%s%u%s","Entre um número inteiro positivo [max. ",INT_MAX,"]: ");
     scanf("%d",&N);
     for (int n= 0 ; n<N ; n++)
       {
        printf("%d ",n);        
       }
     putchar ('\n');
    }

    c'11 - gcc'11.4

     

    O pai fica satisfeito 🙂 

    só confia!

  20. Boa noite!

     

    Refatorarei essa solução, é somente isso mesmo, embelezei o máximo que pude!

     

    Veja que lindinho:

    erro_em_exercicio_de_algoritmo_de_uma_entrevista.c

    /* erro em exercício de algoritmo de uma entrevista. */
    
    #include <stdio.h>
    #include <limits.h>
    
    int main ()
    {
     printf ("%s%d%s","Digite a quantidade de pessoas [max.",INT_MAX,"]: ");
     int n= -1; /* valor negativo sendo uma não quantidade */
     scanf ("%d",&n);
     if (n<=0) return 1;
     int outros= 0;
     int femnao= 0 , mascnao= 0; 
     int femsim= 0 , mascsim= 0;
     char sexo , resp;
     for (int i= 0 ; i<n ; i++)
       {
        int r= scanf (" %c %c",&sexo,&resp);
        if (r==EOF) break;
        if (sexo=='f')
          {
           if (resp=='1') femsim++;
           if (resp=='2') femnao++;
          }
        else  
        if (sexo=='m')
          {   
           if (resp=='1') mascsim++;
           if (resp=='2') mascnao++;
          }
        else
           outros++;
       }
     putchar ('\n');
     int resps= mascsim+ femsim;
     int respn= mascnao+ femnao;
     int fem  = femsim + femnao;
     int masc = mascsim+ mascnao;
     printf ("O número de pessoas que responderam sim e: %d.\n"
             "O número de pessoas que responderam não e: %d.\n"
             "A percentagem de pessoas do sexo feminino que responderam sim e: %f.\n"
             "A percentagem de pessoas do sexo masculino que responderam não e: %f.\n" ,
             resps ,
             respn ,
             (femsim*100.0)/ (fem>0?fem:1) ,
             (mascnao*100.0)/ (masc>0?masc:1));
     putchar ('\n');
    }

    c'11 - gcc'11.4

     

    Uma belezinha assim, inicialmente, já me satisfaz!

    • Curtir 1
  21.  @arfneto

    Pedi, por favor, que cite a fonte de:

    3 horas atrás, arfneto disse:

    Não funciona assim. 0xff não é um inteiro.

    Só isso: A Fonte?

     

     

    São essas as minhas dúvidas:

    1. Uma fonte daquela afirmação;
    2. Um programa conforme o enunciado com mesma pergunta e resposta;
    3. E que compila.

     

     

    Se puder responder acertadamente com o texto do enunciado, responda,

    senão tudo bem!

    Em 13/06/2022 às 20:07, DanielC4 disse:

    Peça ao usuário que informe dois inteiros, sendo um valor inicial e uma razão. Preencha um vetor de 10 posições começando pelo valor inicial e incrementando-o com a razão (progressão aritmética - PA). Depois peça um número para que seja verificado se ele pertence à PA e informe o resultado na tela."

     

     

    ***

    Desde agora, obrigado 🙂  

    Antecipadamente!

    • Amei 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!