Ir ao conteúdo
  • Cadastre-se

C++ lista encadeada de supermercado


Posts recomendados

preciso montar uma lista encadeada que tenha as seguintes funcoes:

SUPERMERCADO. Para cada produto devem ser cadastrados nome, código, preço e quantidade em estoque. Os dados devem ser armazenados em uma lista simplesmente encadeada que não precisa ser ordenada. As funções desta lista devem ser: - Cadastrar: insere um novo produto no final da lista.

- Retirar: retira um produto da lista, cujo código foi dado pelo usuário

 - Exibir: Exibe todos os dados dos produtos da lista.

- Alterar preço: altera o preço de um produto da lista, cujo código foi dado pelo usuário.

- Alterar quantidade: altera a quantidade de um produto da lista, cujo código foi dado pelo usuário.

- Exibir estoque baixo: Exibe somente o nome e o código de todos os produtos da lista com estoque menor que 10 unidades

  • Obrigado 1
  • Haha 1
  • Triste 1
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

@Rafael Rios

Passei a madrugada toda fazendo isso... ainda não consegui rodar. Quem quiser corrigir fique a vontade, to indo dormir e depois resolvo kkkkkkkkk

 


 

#include <iostream>

#include <stdlib.h>

#include <string>



using namespace std;



typedef struct{

int cod;

int quant;

string nome;

}Lista;



void insere(Lista *ptr){

    Lista *aux;



while(ptr->cod>1){

ptr;

};

if(ptr){

cout<<"Descreva o nome do produto: "<<endl;

cin>>ptr->nome;



cout<<"Descreva a quantidade: "<<endl;

cin>>ptr->quant;



ptr->cod=aux->cod;



cout<<"Codigo eh: "<<ptr->cod<<endl;




}else{

    cout<<"não há mais espaco"<<endl;

   

};



};



void remove(Lista *ptr){

    int cod;



    cout<<"Descreva qual o codigo do produto que deseja remover "<<endl;

    cin>>cod;



while(ptr->cod){



    if(ptr->cod<1){

        cout<<"codigo informado não encontrado"<<endl;

       

        };



    if(cod==ptr->cod){

        ptr->cod=0;

        ptr->nome='0';

        ptr->quant=0;

       

        };



    ptr++;

};




};



void quantidade(Lista *ptr){

int cod,quant;



cout<<"Descreva qual o codigo do produto que deseja alterar"<<endl;

cin>>cod;

cout<<"Descreva a quantidade do item"<<endl;

cin>>quant;



if(quant<1){

cout<<"quantidade invalida"<<endl;

quantidade(ptr);

};



while(ptr->cod){



    if(ptr->cod<1){

        cout<<"codigo informado não encontrado"<<endl;

       

        };



    if(cod==ptr->cod){

        ptr->quant=quant;

       

        };



    ptr;

    };      



};



void lowquant(Lista *ptr){

    int cod;

    cout<<"Descreva qual o codigo do produto que deseja remover "<<endl;

    cin>>cod;



while(ptr->cod>1){



    if(ptr->quant<10){

        cout<<"protudo com baixa quantidade: "<<ptr->cod<<endl;

        };



    ptr;

};

};



void todos(Lista *ptr){

    cout<<"Lista de produtos: \n\n"<<endl;



    while(ptr->cod>1){

        cout<<"Codigo: "<<ptr->cod<<" Nome:  "<<ptr->nome<<" Quantidade:  "<<ptr->quant<<endl;

    ptr;

};



};




int main(){

    Lista oo, *ptr;

    int op,i=1;

    *ptr=oo;



   

   

while(i!=0){

    cout<< "escolha o caso"<< endl;

    cout<<"1: inserir produto"<< endl;

    cout<<"2: remove produto"<< endl;

    cout<<"3: alterar quantidade"<<endl;

    cout<<"4: exibir produtos com baixa quantidade"<<endl;

    cout<<"5: Exibir todos os produtos da lista"<<endl;

    cout<<"Digite qualquer tecla para sair"<<endl;

    cin>>op;

   

    switch(op){

    case 1:

        insere(ptr);

        break;

    case 2:

        remove(ptr);

        break;

    case 3:

        quantidade(ptr);

        break;

    case 4:

        lowquant(ptr);

        break;

    case 5:

        todos(ptr);

        break;

    default:

        cout<<"não vai sair não trouxa"<<endl;

        break;

    };    



    cout<<"Quer continuar? \n\n Sim: digite qualquer tecla \nNao: digite 0"<<endl;    

    cin>>i;  

    };

    return 0;

};

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Rafael Rios @Rafael Rios

Apenas corrigindo meu codigo...

Se ajudei, deixa o likezada ai kkkkk

 

 

#include <iostream>
#include <stdlib.h>
#include <string>

using namespace std;

typedef struct{
int cod;
int quant;
string nome;
}Lista;

void insere(Lista *ptr){
    Lista *aux;

while(ptr->cod>1){
ptr++;
};
if(ptr){
cout<<"Descreva o nome do produto: "<<endl;
cin>>ptr->nome;

cout<<"Descreva a quantidade: "<<endl;
cin>>ptr->quant;

ptr->cod=aux->cod;

cout<<"Codigo eh: "<<ptr->cod<<endl;


}else{
    cout<<"não há mais espaco"<<endl;
    
};

};

void remove(Lista *ptr){
    int cod;

    cout<<"Descreva qual o codigo do produto que deseja remover "<<endl;
    cin>>cod;

while(ptr->cod){ 

    if(ptr->cod<1){
        cout<<"codigo informado não encontrado"<<endl;
        
        };

    if(cod==ptr->cod){
        ptr->cod=0;
        ptr->nome='0';
        ptr->quant=0;
        
        };

    ptr++;
};


};

void quantidade(Lista *ptr){
int cod,quant;

cout<<"Descreva qual o codigo do produto que deseja alterar"<<endl;
cin>>cod;
cout<<"Descreva a quantidade do item"<<endl;
cin>>quant;

if(quant<1){
cout<<"quantidade invalida"<<endl;
quantidade(ptr);
};

while(ptr->cod){ 

    if(ptr->cod<1){
        cout<<"codigo informado não encontrado"<<endl;
        
        };

    if(cod==ptr->cod){
        ptr->quant=quant;
        
        };

    ptr++;
    };      

};

void lowquant(Lista *ptr){
    int cod;
    cout<<"Descreva qual o codigo do produto que deseja remover "<<endl;
    cin>>cod;

while(ptr->cod>1){ 

    if(ptr->quant<10){
        cout<<"protudo com baixa quantidade: "<<ptr->cod<<endl;
        };

    ptr++;
};
};

void todos(Lista *ptr){
    cout<<"Lista de produtos: \n\n"<<endl;

    while(ptr->cod>1){ 
        cout<<"Codigo: "<<ptr->cod<<" Nome:  "<<ptr->nome<<" Quantidade:  "<<ptr->quant<<endl;
    ptr++;
};

};


int main(){
    Lista oo, *ptr;
    ptr = &oo;
    int op;
    int i=1;
    

    cout<< "escolha o caso"<< endl;
    cout<<"1: inserir produto"<< endl;
    cout<<"2: remove produto"<< endl;
    cout<<"3: alterar quantidade"<<endl;
    cout<<"4: exibir produtos com baixa quantidade"<<endl;
    cout<<"5: Exibir todos os produtos da lista"<<endl;
    cout<<"Digite qualquer tecla para sair"<<endl;
    cin>>op;
    
while(i!=0){
    

    switch(op){
    case 1:
        insere(ptr);
    case 2:
        remove(ptr);
    case 3:
        quantidade(ptr);
    case 4:
        lowquant(ptr);
    case 5:
        todos(ptr);
    default:
        cout<<"não vai sair não trouxa"<<endl;
        break;
    }  

    cout<<"Quer continuar? \n\n Sim: digite qualquer tecla \nNao: digite 0"<<endl;    
    cin>>i;   
    };
    return 0;
};

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Breno Busnello Não sei se está errado. Não testei seu programa.

 

Mas é um programa em C. E não há razão para escrever isso em C++. Vai ter muito mais trabalho e vai aprender muito menos, ou nada de C++.

 

Não entendi a razão de tanto espaço em branco. Só dificulta ler o código. Tem quase 1 metro eu acho.

 

Veja o seu código sem aquilo tudo:

 

#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;

typedef struct
{
  int cod;
  int quant;
  string nome;
} Lista;


void
insere(Lista* ptr)
{
  Lista* aux;
  while (ptr->cod > 1) {
    ptr;
  };
  if (ptr) {
    cout << "Descreva o nome do produto: " << endl;
    cin >> ptr->nome;
    cout << "Descreva a quantidade: " << endl;
    cin >> ptr->quant;
    ptr->cod = aux->cod;
    cout << "Codigo eh: " << ptr->cod << endl;
  } else {
    cout << "não há mais espaco" << endl;
  };
};


void
remove(Lista* ptr)
{
  int cod;
  cout << "Descreva qual o codigo do produto que deseja "
          "remover "
       << endl;
  cin >> cod;
  while (ptr->cod) {
    if (ptr->cod < 1) {
      cout << "codigo informado não encontrado" << endl;
    };
    if (cod == ptr->cod) {
      ptr->cod = 0;
      ptr->nome = '0';
      ptr->quant = 0;
    };
    ptr++;
  };
};


void
quantidade(Lista* ptr)
{
  int cod, quant;
  cout << "Descreva qual o codigo do produto que deseja "
          "alterar"
       << endl;
  cin >> cod;
  cout << "Descreva a quantidade do item" << endl;
  cin >> quant;
  if (quant < 1) {
    cout << "quantidade invalida" << endl;
    quantidade(ptr);
  };
  while (ptr->cod) {
    if (ptr->cod < 1) {
      cout << "codigo informado não encontrado" << endl;
    };
    if (cod == ptr->cod) {
      ptr->quant = quant;
    };
    ptr;
  };
};


void
lowquant(Lista* ptr)
{
  int cod;
  cout << "Descreva qual o codigo do produto que deseja "
          "remover "
       << endl;
  cin >> cod;
  while (ptr->cod > 1) {
    if (ptr->quant < 10) {
      cout << "protudo com baixa quantidade: " << ptr->cod << endl;
    };
    ptr;
  };
};


void
todos(Lista* ptr)
{
  cout << "Lista de produtos: \n\n" << endl;
  while (ptr->cod > 1) {
    cout << "Codigo: " << ptr->cod << " Nome:  " << ptr->nome
         << " Quantidade:  " << ptr->quant << endl;
    ptr;
  };
};


int
main()
{
  Lista oo, *ptr;
  int op, i = 1;
  *ptr = oo;
  while (i != 0) {
    cout << "escolha o caso" << endl;
    cout << "1: inserir produto" << endl;
    cout << "2: remove produto" << endl;
    cout << "3: alterar quantidade" << endl;
    cout << "4: exibir produtos com baixa quantidade" << endl;
    cout << "5: Exibir todos os produtos da lista" << endl;
    cout << "Digite qualquer tecla para sair" << endl;
    cin >> op;
    switch (op) {
      case 1:
        insere(ptr);
        break;
      case 2:
        remove(ptr);
        break;
      case 3:
        quantidade(ptr);
        break;
      case 4:
        lowquant(ptr);
        break;
      case 5:
        todos(ptr);
        break;
      default:
        cout << "não vai sair não trouxa" << endl;
        break;
    };
    cout << "Quer continuar? \n\n Sim: digite qualquer "
            "tecla \nNao: digite 0"
         << endl;
    cin >> i;
  };
  return 0;
};

 

Sobre o código como postado, mas sem as linhas em branco:

 

(26): error C4700: uninitialized local variable 'aux' used
(116): error C4700: uninitialized local variable 'ptr' used

 

Meu compilador diz isso. E ele está certo. Corrija.

  • para que tem um include de stdlib? o que estaria usando da biblioteca padrão C? E a convenção não é essa. Deve usar cstdlib.
  • não há razão para usar typedef em C++
  • main deve ser a primeira função do código, se possível em um arquivo separado
  • C++ tem listas. Basta declarar e usar
  • não escreva um programa interativo. É um desastre. Só vai perder MUITO tempo. Teste as coisas primeiro

Sobre uma lista

 

Entenda que uma estrutura de dados é um container. É uma lista de coisas. Quaisquer coisas.

 

A lista é de nós. E cada nó aponta para ou contém uma coisa. No seu caso parece ser algo como um item de estoque com código, quantidade e nome.

 

typedef struct
{
  int cod;
  int quant;
  string nome;
} Lista;

 

Isso que postou não é uma Lista, não é um nó. É apenas um item. Não faz sentido. Tem um livro de estruturas de dados? Seu curso adota um livro? 

 

  Lista oo, *ptr;

 

Que significa? Declarou um ponteiro que não aponta para nada. 

E usa ponteiros no seu programa que não tem nenhum tipo de alocação? 

 

    switch (op) {
      case 1:
        insere(ptr);
        break;
      case 2:
        remove(ptr);
        break;
      case 3:
        quantidade(ptr);
        break;
      case 4:
        lowquant(ptr);
        break;
      case 5:
        todos(ptr);
        break;
      default:
        cout << "não vai sair não trouxa" << endl;
        break;
    };

 

Nunca escreva um programa interativo. Só vai perder MUITO tempo.

 

Note que esse switch aí tem todas essas funções acessando um ponteiro da suposta lista. 

 

Pois é: essa é a diferença maior entre C e C++. Essas funções devem estar DENTRO da struct. Essa é a vantagem (enorme) de representar coisas em C++

 

Você tem um livro sobre C++? 

 

Seu curso é sobre a linguagem ou estruturas de dados?

 

Seu programa está sim errado. Está longe de funcionar e escrito na linguagem errada. 😞 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • 4 meses depois...
Em 06/09/2022 às 22:37, arfneto disse:

@Breno Busnello Não sei se está errado. Não testei seu programa.

 

Mas é um programa em C. E não há razão para escrever isso em C++. Vai ter muito mais trabalho e vai aprender muito menos, ou nada de C++.

 

Não entendi a razão de tanto espaço em branco. Só dificulta ler o código. Tem quase 1 metro eu acho.

 

Veja o seu código sem aquilo tudo:

 

#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;

typedef struct
{
  int cod;
  int quant;
  string nome;
} Lista;


void
insere(Lista* ptr)
{
  Lista* aux;
  while (ptr->cod > 1) {
    ptr;
  };
  if (ptr) {
    cout << "Descreva o nome do produto: " << endl;
    cin >> ptr->nome;
    cout << "Descreva a quantidade: " << endl;
    cin >> ptr->quant;
    ptr->cod = aux->cod;
    cout << "Codigo eh: " << ptr->cod << endl;
  } else {
    cout << "não há mais espaco" << endl;
  };
};


void
remove(Lista* ptr)
{
  int cod;
  cout << "Descreva qual o codigo do produto que deseja "
          "remover "
       << endl;
  cin >> cod;
  while (ptr->cod) {
    if (ptr->cod < 1) {
      cout << "codigo informado não encontrado" << endl;
    };
    if (cod == ptr->cod) {
      ptr->cod = 0;
      ptr->nome = '0';
      ptr->quant = 0;
    };
    ptr++;
  };
};


void
quantidade(Lista* ptr)
{
  int cod, quant;
  cout << "Descreva qual o codigo do produto que deseja "
          "alterar"
       << endl;
  cin >> cod;
  cout << "Descreva a quantidade do item" << endl;
  cin >> quant;
  if (quant < 1) {
    cout << "quantidade invalida" << endl;
    quantidade(ptr);
  };
  while (ptr->cod) {
    if (ptr->cod < 1) {
      cout << "codigo informado não encontrado" << endl;
    };
    if (cod == ptr->cod) {
      ptr->quant = quant;
    };
    ptr;
  };
};


void
lowquant(Lista* ptr)
{
  int cod;
  cout << "Descreva qual o codigo do produto que deseja "
          "remover "
       << endl;
  cin >> cod;
  while (ptr->cod > 1) {
    if (ptr->quant < 10) {
      cout << "protudo com baixa quantidade: " << ptr->cod << endl;
    };
    ptr;
  };
};


void
todos(Lista* ptr)
{
  cout << "Lista de produtos: \n\n" << endl;
  while (ptr->cod > 1) {
    cout << "Codigo: " << ptr->cod << " Nome:  " << ptr->nome
         << " Quantidade:  " << ptr->quant << endl;
    ptr;
  };
};


int
main()
{
  Lista oo, *ptr;
  int op, i = 1;
  *ptr = oo;
  while (i != 0) {
    cout << "escolha o caso" << endl;
    cout << "1: inserir produto" << endl;
    cout << "2: remove produto" << endl;
    cout << "3: alterar quantidade" << endl;
    cout << "4: exibir produtos com baixa quantidade" << endl;
    cout << "5: Exibir todos os produtos da lista" << endl;
    cout << "Digite qualquer tecla para sair" << endl;
    cin >> op;
    switch (op) {
      case 1:
        insere(ptr);
        break;
      case 2:
        remove(ptr);
        break;
      case 3:
        quantidade(ptr);
        break;
      case 4:
        lowquant(ptr);
        break;
      case 5:
        todos(ptr);
        break;
      default:
        cout << "não vai sair não trouxa" << endl;
        break;
    };
    cout << "Quer continuar? \n\n Sim: digite qualquer "
            "tecla \nNao: digite 0"
         << endl;
    cin >> i;
  };
  return 0;
};

 

Sobre o código como postado, mas sem as linhas em branco:

 

(26): error C4700: uninitialized local variable 'aux' used
(116): error C4700: uninitialized local variable 'ptr' used

 

Meu compilador diz isso. E ele está certo. Corrija.

  • para que tem um include de stdlib? o que estaria usando da biblioteca padrão C? E a convenção não é essa. Deve usar cstdlib.
  • não há razão para usar typedef em C++
  • main deve ser a primeira função do código, se possível em um arquivo separado
  • C++ tem listas. Basta declarar e usar
  • não escreva um programa interativo. É um desastre. Só vai perder MUITO tempo. Teste as coisas primeiro

Sobre uma lista

 

Entenda que uma estrutura de dados é um container. É uma lista de coisas. Quaisquer coisas.

 

A lista é de nós. E cada nó aponta para ou contém uma coisa. No seu caso parece ser algo como um item de estoque com código, quantidade e nome.

 

typedef struct
{
  int cod;
  int quant;
  string nome;
} Lista;

 

Isso que postou não é uma Lista, não é um nó. É apenas um item. Não faz sentido. Tem um livro de estruturas de dados? Seu curso adota um livro? 

 

  Lista oo, *ptr;

 

Que significa? Declarou um ponteiro que não aponta para nada. 

E usa ponteiros no seu programa que não tem nenhum tipo de alocação? 

 

    switch (op) {
      case 1:
        insere(ptr);
        break;
      case 2:
        remove(ptr);
        break;
      case 3:
        quantidade(ptr);
        break;
      case 4:
        lowquant(ptr);
        break;
      case 5:
        todos(ptr);
        break;
      default:
        cout << "não vai sair não trouxa" << endl;
        break;
    };

 

Nunca escreva um programa interativo. Só vai perder MUITO tempo.

 

Note que esse switch aí tem todas essas funções acessando um ponteiro da suposta lista. 

 

Pois é: essa é a diferença maior entre C e C++. Essas funções devem estar DENTRO da struct. Essa é a vantagem (enorme) de representar coisas em C++

 

Você tem um livro sobre C++? 

 

Seu curso é sobre a linguagem ou estruturas de dados?

 

Seu programa está sim errado. Está longe de funcionar e escrito na linguagem errada. 😞 

 

 

Devair, o que eu tentei fazer foi:

 

1: criar uma estrutura;

2: alocar essa estrutura em um espaço de memória;

3:inserir dados para essa estrutura no espaço de memória;

4: alocar novamente essa estrutura "Lista" no proximo espaço de memória.

 

 

talvez não seja a melhor forma de fazer isso, estou apenas aprendendo. Mas de fato o programa não está rodando. Assim que eu sair do trabalho eu vou tentar consertar e fazer rodar.

 

sobre os espaços no codigo, eu dei ctrl+c ctr+v no Vscode para o forum, ele fica assim mesmo.

 

 

Sobre o fato de tentar deixa-lo interativo, eu gosto de me colocar em situações complicadas. Me faz pensar e entender algumas coisas.

 

Com esse codigo aprendi muitas coisas, principalmente ao tentar deixar ele interativo ("que não funcionou kkkkk").

 

Agradeço o retorno principalmente por me ajudar a evoluir com meu aprendizado. Bom dia!

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Isso foi o que usou para definir a tal Lista:

 

typedef struct
{
  int cod;
  int quant;
  string nome;
} Lista;

 

Só que não é uma lista. É um item apenas. E typedef em C++ não faz muito sentido.

 

11 horas atrás, Breno Busnello disse:

1: criar uma estrutura;

2: alocar essa estrutura em um espaço de memória;

 

Se sua estrutura é a tal Lista o simples é:

 

	Lista* cria();

 

Uma função que você chama e retorna o endereço de uma lista. Em C++ não se usa assim, basta declarar algo como lista e o construtor é chamado, e lá se coloca o código que cria a Lista e retorna o endereço.

 

12 horas atrás, Breno Busnello disse:

3:inserir dados para essa estrutura no espaço de memória;

 

Então se sua lista é de produtos e você quer inserir nela algo o simples é:

 

	int    insere(Item* item, Lista* lista);

 

Que recebe um ponteiro para um item e insere em uma lista. E retorna um código, como 0 se deu certo ou um outro valor indicando erro.

 

12 horas atrás, Breno Busnello disse:

4: alocar novamente essa estrutura "Lista" no proximo espaço de memória.

 

Provavelmente não é o que quer dizer. Acho que se refere a inserir um outro item na lista. E se for criar outra lista basta chamar criar() de novo.

 

Algo assim funcionaria:

 

#include "Lista.h"
using namespace std;

int main(void)
{
    Lista* pLista = cria();
    Item  um{12, 42, "exemplo"};
    insere(&um, pLista);
    insere(&um, pLista);
    insere(&um, pLista);

    Lista* outra = cria();

    pLista = remove(pLista);
    outra = remove(outra);
    std::cout << "OK!\n";
}

 

Para essa Lista
 

#include <iostream>
#include <string>
using namespace std;

struct Item
{
    int    cod;
    int    quant;
    string nome;
};

struct Node
{
    Item* item;
    Node* ant;
    Node* prox;
};

struct Lista
{
    unsigned size;  // tamanho
    Node*    ini;   // inicio
    Node*    fim;   // fim da lista
};

Lista* cria();
Lista* remove(Lista*);
int    insere(Item* um, Lista* lista);

 

Isso é praticamente C e não se escreve assim em C++. Mas é possível e roda.

 

12 horas atrás, Breno Busnello disse:

sobre os espaços no codigo, eu dei ctrl+c ctr+v no Vscode para o forum, ele fica assim mesmo.

 

Deve ter alguma maneira de evitar isso. Muita gente usa VSCODE e nem sempre os programas aparecem assim no forum.

 

12 horas atrás, Breno Busnello disse:

Sobre o fato de tentar deixa-lo interativo, eu gosto de me colocar em situações complicadas. Me faz pensar e entender algumas coisas.

 

Bem, eis o que eu disse antes:

 

Em 06/09/2022 às 22:37, arfneto disse:

Nunca escreva um programa interativo. Só vai perder MUITO tempo.

 

Não é uma situação complicada. E não vai te ensinar nada. Só vai perder tempo. 

 

Não há nada de especial em escrever um programa interativo. E não há nada de instrutivo ou sábio. 

 

Se você escrever uma função insere() como a que fez e for testar com 10 itens vai precisar digitar 30 campos. Muito bom. De que serve isso? E se fossem 1000? E se não tiver ninguém pra ficar digitando?

 

8 horas atrás, devair1010 disse:

não entendo como funcionam e nem sei programar as listas encadeadas

 

@devair1010 listas encadeadas são só isso: listas de coisas, e encadeadas por ponteiros de modo que um nó aponta para outro. Essas coisas são chamadas nós e cada nó tem ou aponta para um dado. Veja uma declaração no exemplo acima.

 

A vantagem disso é que é trivial de percorrer e remover e inserir no meio disso não mexe na lista toda: só em nós vizinhos.

 

 

@Breno Busnelloposte o código como está agora

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!