Ir ao conteúdo
  • Cadastre-se

C NÂO consigo FAZER O SISTEMA DE LOGIN FUNCIONOR


marcos holanda12

Posts recomendados

#include<stdio.h>
#include<locale.h>
#include<string.h>
int login(){
    char login[15] = "teste"; //Tem que ter mais espaço que a string. Pelo menos 1 a mais que a palavra.
    char login1[15]; //Pode ser do mesmo tamanho que o login
    char senha[15] = "teste";
    char senha1[15];

    printf("LOGIN: ");
    scanf("%s",login1); //String se lê com %s
    if (strcmp(login, login1) == 0) //strcmp() é uma função da biblioteca string.h que compara 2 strings. Se for igual a 0 é porque as duas são iguais.
    {
    	printf("Logado\n");
    }
    else
    {
    	printf("error\n");
    }

    return 0;
}
struct cadastro
{
    char CPF[200];
    char telefone[200];
    char nome[200];
    char endereco[200];
    char data[200];
    char Email[200];
    char dataDiaginostico[200];
    char comobidade[200];
    char datanacimento[200];
    char idade[200];
    int vazio,cod;

}log[200];
//AQUI DECLARO AS FUNÇÕES A SEREM USADAS
int verifica_pos(void);
int verifica_cod( int cod );
int opt;
void cadastroP(int cod,int pos);
void list();
void consultaCod (void);
void excluirPaciente (void);

int main(void){//INICIO DO MAIN
    int i,Opcao,OpcaoPaciente,posicao,retorno;
    int codaux;
    do
    {
        printf("1 - Cadastrar Novo Paciente\n");
        printf("2 - Pacientes Cadastrados\n");
        printf("3 - Alterar Dados do Paciente\n");
        printf("4 - Excluir Dados do Paciente\n");
        printf("5 - Sair\n");
        printf(" Selecione uma opcao por favor: ");
        scanf("%d", &Opcao);
        getchar();
        if (Opcao == 1)
        {
            printf("voce selecionou a opcao 1 - Cadastrar Novo Paciente\n");
            posicao=verifica_pos();

                if ( posicao != -1 )
                {

                    printf("\nNumero para cadastro do paciente: \n");
                    scanf("%d",&codaux);fflush(stdin);

                    retorno = verifica_cod( codaux );

                    if ( retorno == 1 )
                        cadastroP( codaux, posicao );
                    else{
                        printf("\nCodigo ja existente ou invalido pressione enter para voltar ao menu principal\n");
                        getchar();
                        system("cls");
                        main();
                    }

                }
                else
                    printf("\nNao e possível realizar mais cadastros!\n");

                break;

        }
        else if (Opcao == 2)
        {
            system("cls");
            do{
            printf("voce selecionou a opcao 2 - Pacientes\n\n");
            printf("1 - Pesquisar Paciente por codigo\n");
            printf("2 - Listar todos os Pacientes\n");
            printf("3 - Voltar ao menu principal\n");
            printf("Selecione uma opcao por favor: ");
            scanf("%d", &OpcaoPaciente);
            getchar();
                 if(OpcaoPaciente == 1){
                    consultaCod();
                }
                else if(OpcaoPaciente == 2){
                    list();
                }
                else if(OpcaoPaciente == 3){
                    printf("voce selecionou voltar ao menu principal, pressione ENTER para continuar");
                    getchar();
                    system("cls");
                }
                else
                    printf("Opcao Invalida\n\n");
    }while(OpcaoPaciente =!3 || OpcaoPaciente > 3 || OpcaoPaciente < 0 || OpcaoPaciente == 0);
        }
        else if (Opcao == 3)
        {
            printf("voce selecionou a opcao 3 - Alterar Paciente\n");
        }
        else if (Opcao == 4)
        {
            printf("voce selecionou a opcao 4 - Excluir Paciente\n");
            excluirPaciente();
        }

        else if (Opcao == 5)
        {
            printf("voce selecionou a opcao 5 - Sair\n");
        }
        else{
            printf("Opcao invalida, favor pressione enter para voltar ao menu principal");
            getchar();
            system("cls");
        }
        }    while (Opcao != 5 || Opcao < 5);

} // FIM DO MAIN
void list(){ // Lista os usuarios cadastrados.
    int i,j;
    for(i=0;i<200;i++){
        if(log[i].cod!=NULL){
            printf("\nCodigo: %d \nNome: %s\nCPF: %s\nIdade: %s\nDatadenacimento: %s\nEndereco: %s\nTelefone: %s\nEmail: %s\ncomorbidade: %s\n\n", log[i].cod,
                   log[i].nome,
                   log[i].CPF,log[i].idade,log[i].datanacimento,
                   log[i].endereco,log[i].telefone,log[i].Email,log[i].comobidade);
    }
}
    printf("Pressione enter para volta ao menu principal");
    getchar();
    system("cls");

} //FIM DO LIST
void cadastroP(int cod, int pos){ //Cadastro das pessoas
    int i;
    do{
    pos = verifica_pos();
    log[pos].cod = cod;
        printf("\nDigite o nome do Paciente: ");
        gets(log[pos].nome);
        printf("\nDigite o CPF do Paciente: ");
        gets(log[pos].CPF);
        printf("\nDigite a Idade do Paciente: ");
        gets(log[pos].idade);
        printf("\nDigite a Data de nacimento do Paciente: ");
        gets(log[pos].datanacimento);
        printf("\nDigite o Endereco do Paciente: ");
        gets(log[pos].endereco);
        printf("\nDigite o Telefone do Paciente: ");
        gets(log[pos].telefone);
        printf("\nDigite o Email do Paciente: ");
        gets(log[pos].Email);
        printf("\nDigite a comobidade do Paciente: ");
        gets(log[pos].comobidade);
        log[pos].vazio = 1;
        //printf("\nDigite enter para efetuar novo cadastro ou qualquer outra tecla para volar ao menu principal");
        //scanf("%d", &opt);
        opt ==1;
        getchar();
    }while(opt==1);
    system("cls");
    main();

} // FIM DO CADASTRO DE PESSOAS
int verifica_pos( void ) //VERIFICADOR DA POSIÇÃO
{
    int cont = 0;

    while ( cont <= 200 )
    {

        if ( log[cont].vazio == 0 )
            return(cont);

        cont++;

    }

    return(-1);

} // FIM DO VERIFICADOR
int verifica_cod( int cod ) // VERIFICADOR DE CÓDIGO
{
    int cont = 0;

    while ( cont <= 200 )
    {
        if ( log[cont].cod == cod )
            return(0);

        cont++;
    }

    return(1);

} // FIM DO VERIFICADOR

void consultaCod (void) // CONSULTAR 1 CADASTRADO QUALQUER VIA CÓDIGO DADO POR USUÁRIO.
{
    int cont = 0, cod;

    printf("\nEntre com o codigo\n");
    scanf("%d",&cod);
    fflush(stdin);
    system("cls");

    while ( cont <= 200 )
    {

        if (log[cont].cod==cod)
        {
            if (log[cont].vazio==1)
            {

                printf("\nCodigo: %d \nNome: %s\nCPF: %s\nIdade: %s\nDatadenacimento: %s\nEndereco: %s\nTelefone: %s\nEmail: %s\ncomorbidade: %s\n\n",
                       log[cont].cod,
                       log[cont].nome,log[cont].CPF,log[cont].idade,log[cont].datanacimento,log[cont].endereco,log[cont].telefone,log[cont].Email,log[cont].comobidade);


                system ("pause");

                system("cls");

                break;

            }
        }

        cont++;

        if ( cont > 200 ){
            printf("\nCodigo não encontrado, pressione enter para volar ao menu principal\n");
            getchar();
            system("cls");
        }

    }
} // FIM DA FUNÇÃO CONSULTAR
void excluirPaciente(void)  // EXCLUI Paciente
{
    int cod, cont = 0;
    char resp;
    printf("\nEntre com o codigo do registro que deseja excluir: \n");
    scanf("%d", &cod );

    while ( cont <= 200 )
    {

        if ( log[cont].cod == cod )
        {

            if (log[cont].vazio == 1 )
            {
                printf("\nCodigo: %d \nNome: %s\nCPF: %s\nIdade: %s\nDatadenacimento: %s\nEndereco: %s\nTelefone: %s\nEmail: %s\ncomorbidade: %s\n\n", log[cont].cod,log[cont].nome,log[cont].CPF,log[cont].endereco,log[cont].telefone);
                getchar();
                printf("\nDeseja realmente exlucir? s/n: ");
                scanf("%s",&resp);

                if ( ( resp == 'S' ) || ( resp == 's' ) )
                {
                    log[cont].vazio=0;
                    log[cont].cod = NULL;
                    printf("\nExclusao feita com sucesso\n");
                    break;
                }
                else
                {
                    if ( ( resp == 'N' ) || ( resp == 'n' ) )
                    {
                        printf("Exclusao cancelada!\n");
                        break;
                    }
                }

            }

        }

        cont++;

        if ( cont > 200 )
            printf("\nCodigo não encontrado\n");

    }

    system("pause");
    system("cls");

}

#include<stdio.h>
#include<locale.h>
#include<string.h>
int login(){
    char login[15] = "teste"; //Tem que ter mais espaço que a string. Pelo menos 1 a mais que a palavra.
    char login1[15]; //Pode ser do mesmo tamanho que o login
    char senha[15] = "teste";
    char senha1[15];

    printf("LOGIN: ");
    scanf("%s",login1); //String se lê com %s
    if (strcmp(login, login1) == 0) //strcmp() é uma função da biblioteca string.h que compara 2 strings. Se for igual a 0 é porque as duas são iguais.
    {
        printf("Logado\n");
    }
    else
    {
        printf("error\n");
    }

    return 0;
}
struct cadastro
{
    char CPF[200];
    char telefone[200];
    char nome[200];
    char endereco[200];
    char data[200];
    char Email[200];
    char dataDiaginostico[200];
    char comobidade[200];
    char datanacimento[200];
    char idade[200];
    int vazio,cod;

}log[200];
//AQUI DECLARO AS FUNÇÕES A SEREM USADAS
int verifica_pos(void);
int verifica_cod( int cod );
int opt;
void cadastroP(int cod,int pos);
void list();
void consultaCod (void);
void excluirPaciente (void);

int main(void){//INICIO DO MAIN
    int i,Opcao,OpcaoPaciente,posicao,retorno;
    int codaux;
    do
    {
        printf("1 - Cadastrar Novo Paciente\n");
        printf("2 - Pacientes Cadastrados\n");
        printf("3 - Alterar Dados do Paciente\n");
        printf("4 - Excluir Dados do Paciente\n");
        printf("5 - Sair\n");
        printf(" Selecione uma opcao por favor: ");
        scanf("%d", &Opcao);
        getchar();
        if (Opcao == 1)
        {
            printf("voce selecionou a opcao 1 - Cadastrar Novo Paciente\n");
            posicao=verifica_pos();

                if ( posicao != -1 )
                {

                    printf("\nNumero para cadastro do paciente: \n");
                    scanf("%d",&codaux);fflush(stdin);

                    retorno = verifica_cod( codaux );

                    if ( retorno == 1 )
                        cadastroP( codaux, posicao );
                    else{
                        printf("\nCodigo ja existente ou invalido pressione enter para voltar ao menu principal\n");
                        getchar();
                        system("cls");
                        main();
                    }

                }
                else
                    printf("\nNao e possível realizar mais cadastros!\n");

                break;

        }
        else if (Opcao == 2)
        {
            system("cls");
            do{
            printf("voce selecionou a opcao 2 - Pacientes\n\n");
            printf("1 - Pesquisar Paciente por codigo\n");
            printf("2 - Listar todos os Pacientes\n");
            printf("3 - Voltar ao menu principal\n");
            printf("Selecione uma opcao por favor: ");
            scanf("%d", &OpcaoPaciente);
            getchar();
                 if(OpcaoPaciente == 1){
                    consultaCod();
                }
                else if(OpcaoPaciente == 2){
                    list();
                }
                else if(OpcaoPaciente == 3){
                    printf("voce selecionou voltar ao menu principal, pressione ENTER para continuar");
                    getchar();
                    system("cls");
                }
                else
                    printf("Opcao Invalida\n\n");
    }while(OpcaoPaciente =!3 || OpcaoPaciente > 3 || OpcaoPaciente < 0 || OpcaoPaciente == 0);
        }
        else if (Opcao == 3)
        {
            printf("voce selecionou a opcao 3 - Alterar Paciente\n");
        }
        else if (Opcao == 4)
        {
            printf("voce selecionou a opcao 4 - Excluir Paciente\n");
            excluirPaciente();
        }

        else if (Opcao == 5)
        {
            printf("voce selecionou a opcao 5 - Sair\n");
        }
        else{
            printf("Opcao invalida, favor pressione enter para voltar ao menu principal");
            getchar();
            system("cls");
        }
        }    while (Opcao != 5 || Opcao < 5);

} // FIM DO MAIN
void list(){ // Lista os usuarios cadastrados.
    int i,j;
    for(i=0;i<200;i++){
        if(log[i].cod!=NULL){
            printf("\nCodigo: %d \nNome: %s\nCPF: %s\nIdade: %s\nDatadenacimento: %s\nEndereco: %s\nTelefone: %s\nEmail: %s\ncomorbidade: %s\n\n", log[i].cod,
                   log[i].nome,
                   log[i].CPF,log[i].idade,log[i].datanacimento,
                   log[i].endereco,log[i].telefone,log[i].Email,log[i].comobidade);
    }
}
    printf("Pressione enter para volta ao menu principal");
    getchar();
    system("cls");

} //FIM DO LIST
void cadastroP(int cod, int pos){ //Cadastro das pessoas
    int i;
    do{
    pos = verifica_pos();
    log[pos].cod = cod;
        printf("\nDigite o nome do Paciente: ");
        gets(log[pos].nome);
        printf("\nDigite o CPF do Paciente: ");
        gets(log[pos].CPF);
        printf("\nDigite a Idade do Paciente: ");
        gets(log[pos].idade);
        printf("\nDigite a Data de nacimento do Paciente: ");
        gets(log[pos].datanacimento);
        printf("\nDigite o Endereco do Paciente: ");
        gets(log[pos].endereco);
        printf("\nDigite o Telefone do Paciente: ");
        gets(log[pos].telefone);
        printf("\nDigite o Email do Paciente: ");
        gets(log[pos].Email);
        printf("\nDigite a comobidade do Paciente: ");
        gets(log[pos].comobidade);
        log[pos].vazio = 1;
        //printf("\nDigite enter para efetuar novo cadastro ou qualquer outra tecla para volar ao menu principal");
        //scanf("%d", &opt);
        opt ==1;
        getchar();
    }while(opt==1);
    system("cls");
    main();

} // FIM DO CADASTRO DE PESSOAS
int verifica_pos( void ) //VERIFICADOR DA POSIÇÃO
{
    int cont = 0;

    while ( cont <= 200 )
    {

        if ( log[cont].vazio == 0 )
            return(cont);

        cont++;

    }

    return(-1);

} // FIM DO VERIFICADOR
int verifica_cod( int cod ) // VERIFICADOR DE CÓDIGO
{
    int cont = 0;

    while ( cont <= 200 )
    {
        if ( log[cont].cod == cod )
            return(0);

        cont++;
    }

    return(1);

} // FIM DO VERIFICADOR

void consultaCod (void) // CONSULTAR 1 CADASTRADO QUALQUER VIA CÓDIGO DADO POR USUÁRIO.
{
    int cont = 0, cod;

    printf("\nEntre com o codigo\n");
    scanf("%d",&cod);
    fflush(stdin);
    system("cls");

    while ( cont <= 200 )
    {

        if (log[cont].cod==cod)
        {
            if (log[cont].vazio==1)
            {

                printf("\nCodigo: %d \nNome: %s\nCPF: %s\nIdade: %s\nDatadenacimento: %s\nEndereco: %s\nTelefone: %s\nEmail: %s\ncomorbidade: %s\n\n",
                       log[cont].cod,
                       log[cont].nome,log[cont].CPF,log[cont].idade,log[cont].datanacimento,log[cont].endereco,log[cont].telefone,log[cont].Email,log[cont].comobidade);


                system ("pause");

                system("cls");

                break;

            }
        }

        cont++;

        if ( cont > 200 ){
            printf("\nCodigo não encontrado, pressione enter para volar ao menu principal\n");
            getchar();
            system("cls");
        }

    }
} // FIM DA FUNÇÃO CONSULTAR
void excluirPaciente(void)  // EXCLUI Paciente
{
    int cod, cont = 0;
    char resp;
    printf("\nEntre com o codigo do registro que deseja excluir: \n");
    scanf("%d", &cod );

    while ( cont <= 200 )
    {

        if ( log[cont].cod == cod )
        {

            if (log[cont].vazio == 1 )
            {
                printf("\nCodigo: %d \nNome: %s\nCPF: %s\nIdade: %s\nDatadenacimento: %s\nEndereco: %s\nTelefone: %s\nEmail: %s\ncomorbidade: %s\n\n", log[cont].cod,log[cont].nome,log[cont].CPF,log[cont].endereco,log[cont].telefone);
                getchar();
                printf("\nDeseja realmente exlucir? s/n: ");
                scanf("%s",&resp);

                if ( ( resp == 'S' ) || ( resp == 's' ) )
                {
                    log[cont].vazio=0;
                    log[cont].cod = NULL;
                    printf("\nExclusao feita com sucesso\n");
                    break;
                }
                else
                {
                    if ( ( resp == 'N' ) || ( resp == 'n' ) )
                    {
                        printf("Exclusao cancelada!\n");
                        break;
                    }
                }

            }

        }

        cont++;

        if ( cont > 200 )
            printf("\nCodigo não encontrado\n");

    }

    system("pause");
    system("cls");

}
 

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

Seu programa está muito grande para o que precisa escrever e está indo por um caminho incrivelmente complicado. Faça o simples. Teste as coisas aos poucos e escreva em torno dos dados.

 

Sobre o código tem muitos dos "erros"  comuns que se vê nesses forums e deve ser pela aparente maneira tosca que ensinam isso. Ou livros e apostilas ruins, não sei. Tenho uma lista e vou copiar dela os problemas comuns:

 

  •  Não use system() para nada. Não estará fazendo nada. Não há praticamente nada que possa fazer com system() que não possa fazer em C ou C++. system() foi escrita em C e o sistema quase todo também. E em geral é proibido em empresas e escolas afinal: é um risco grande de segurança. E se tem algo que você não possa inicialmente fazer em C ou C++ talvez não deva mesmo fazer.

  •  main() deve ser a primeira função de seu programa. Se possível em um arquivo separado. Há muitas razões para isso, mas em especial vai gostar de começar a ler seus programas e os de outros a partir de main() E a partir do início do texto. Ao mesmo tempo. E ao usar protótipos fica trivial passar as declarações todas para um arquivo .h que é o mais prático afinal.

  • evite retornar void de funções: em geral é um desperdício. E muitas vezes um erro. Use argumentos nas funções, e retorne algo delas. É mais esperto e expressivo.não use gets(). Nunca. Não há nenhuma razão. fgets() é muito mais prática e segura e você não precisa se preocupar em seu programa cancelar porque o cara digitou além do que cabia no campo. E em geral o uso de gets()  é proibido mesmo, pela empresa ou pela escola. Foi marcada como obsoleta há décadas e alguns compiladores nem aceitam mais.

  • Use alguma ordem em suas funções, como a ordem alfabética por exemplo. Vai gostar disso quando seu programa tiver 50 funções ao invés de umas poucas. Muitos IDE mostram uma lista das funções, em geral na ordem em que foram declaradas, de modo que você pode clicar no nome e o editor vai direto para o código, mas se estiverem em ordem é claro que você só ganha.

  • Nunca use variáveis globais. Isso é um pesadelo e sempre vai cair na sua cabeça. Em geral é proibido em empresas e escolas. Não declare NADA que use memória  fora de main().

  • Não declare mais que uma variável por linha. Não acrescenta nada e só dificulta a leitura. Inicialize todas as variáveis.

  • Nunca leia valores do teclado para alimentar seu programa antes dele estar rodando. Só vai te atrasar e não acrescenta absolutamente nada. Use constantes, use funções que retornam a estrutura preenchida. Leia de arquivos: é trivial em C. Ao terminar os  testes aí sim incorpore a leitura. Um programa interativo é chato para testar. Durante o desenvolvimento ninguém quer interagir com o programa. Nunca escreva um programa interativo, mesmo que seja o objetivo final.

  •  Use nomes significativos para as variáveis e fuja de coisas como aux, aux1 e aux2. E não use nomes de variáveis enormes porque em uma expressão fica muito difícil de ler.

  • Se seu programa tem um menu, entenda que o menu() deve mostrar as opções e ler e retornar a opção. Um void menu() é um desperdício.

  • scanf() foi escrita para ler entrada formatada. Não use para ler do teclado, que claramente não é entrada formatada. Só vai dar mais trabalho. Muito mais trabalho.

  • Ao usar scanf() ou alguma função da família, como fscanf() entenda que ela retorna um valor. E teste. É ingênuo deixar o programa seguir sem testar. TESTE sempre. Exemplo: para 5 especificadores --- aquelas coisas com % na frente e que não tem um asterisco nem outro '%' --- como "%d %d %f %f %d" scanf() pode ler de 0 a 5 itens ou dar erro e retornar -1. Então teste o retorno que vai estar entre -1 e 5...

  • Não existe "lixo de teclado": necessidades como de flush() na entrada indicam apenas que não entendeu bem o que está lendo e o que é a entrada via teclado, free form: o usuário pode digitar qualquer coisa e é o seu programa que tem que se virar O teclado tem ao menos 105 teclas de liberdade e o usuário pode digitar qualquer coisa em qualquer ordem.

  • Nunca escreva um programa interativo. Não vai aprender nada. Não vai ganhar nada. Escreva e teste todas as funções. DEPOIS de tudo testado coloque a parte interativa. isso inclui claro o eventual menu.

  • evite ler do teclado a menos que seja o objetivo do problema. Ler de arquivos é muito mais simples, seguro e fácil de reproduzir. Não há razão para ficar parado em frente a tela minutos inventando nomes de campos e coisas assim: o efeito é que vai acabar não testando direito porque é difícil controlar e repetir testes.

  • Não misture entrada de dados ou formatação com a apresentação dos dados ou a lógica do programa, Isso é um desastre para manutenção e desenvolvimento

  • Um printf() de 6 linhas é muito, mas muito melhor que 6 printf() de 1 linha. E se só vai mostrar o texto puts() é ainda melhor e dezenas de vezes mais rápido que uma série de printf().

  • Ao usar uma estrutura de dados como uma lista, uma pilha ou fila entenda que ela é um container e nada tem a ver com os dados. Não misture NUNCA os dados com a estrutura porque só via complicar tudo. Em especial vai ficar muito mais difícil aproveitar a estrutura em outros programas, e essa é toda a razão de escrever um programa.

 

 

Alem dessa lista:

 

Entenda que não deve comparar coisas como cod que é int com NULL que é outra coisa. Use o simples: 0 zero

 

Entenda que sua struct cadastro tem um item só. Pra que isso? Não é o cadastro.

 

E é global um vetor de itens que você chama de cadastro CADA UM.

 

Evite comentários tipo "essa é a função main()": não acrescentam nada. Comente o que está fazendo, porque está fazendo.

 

 

 

 

 

 

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

@marcos holanda12     a função de login está , sim ,funcionando ,   e pode ser também de outras formas 

#include<stdio.h>
#include<locale.h>
#include<string.h>
int login(){
    char login[15] = "teste"; //Tem que ter mais espaço que a string. Pelo menos 1 a mais que a palavra.
    char login1[15]; //Pode ser do mesmo tamanho que o login
    char senha[15] = "teste";
    char senha1[15];

    printf("LOGIN: ");
    scanf("%s",login1); //String se lê com %s
    if (strcmp(login, login1) == 0) //strcmp() é uma função da biblioteca string.h que compara 2 strings. Se for igual a 0 é porque as duas são iguais.
    {
    	printf("Logado\n");
    }
    else
    {
    	printf("error\n");
    }

    return 0;
}

 

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!