Ir ao conteúdo
  • Cadastre-se

hobbitzin

Membro Júnior
  • Posts

    6
  • Cadastrado em

  • Última visita

Reputação

0
  1. Estou com uma enorme dificuldade para conseguir criar uma lista encadeada dinamicamente dentro de outra usando estrutura de dados. Sei criar uma lista dinâmica, porém não consigo criar outra dentro dela. Para exemplificar o que quero dizer: Tenho uma lista de Bandas; cada banda é uma lista de albuns; e cada album é uma lista de musica. E no programa o usuário pode incluir musicas e remove-las quando quiser, incluir álbuns e remove-las quando quiser, e incluir bandas e remove-las quando quiser. Meu código está assim: Arquivo.C #include "biblioteca.h"ElemM *lm;ElemA *la;ElemB *lb;//---------------------------MAIN--------------------------------->int main(){ lb = cria_lista_banda(); la = cria_lista_album(); lm = cria_lista_musica(); system("PAUSE"); return 0;} //----------------------------------------------------------------->ElemB *cria_lista_banda(){ ElemB *lb; lb = malloc(sizeof(ElemB)); lb->prox_banda = NULL; return lb;}ElemA *cria_lista_album(){ ElemA *la; la = malloc(sizeof(ElemA)); la->prox_album= NULL; return la;}ElemM *cria_lista_musica(){ ElemM *lm; lm = malloc(sizeof(ElemM)); lm->prox_musica= NULL; return lm;}int incluir_musica(ElemM *lm, ElemA *la, ElemB *lb, int id_m, int tempo, char *nome_m, int id_a, int id_{ int valor1, valor2, valor3, i; valor1 = busca_banda(id_b, lb); valor2 = busca_album(id_b, id_a, lb, la); valor3 = busca_musica(id_b, id_a, id_m, lb, la, lm); if(valor3 == -1) return -1; ElemB *q; q = lb->prox_banda; for(i = 0; i <= valor1; i++){ q = q->prox_banda; } ElemA *p; p = q->albuns_da_banda->prox_album; for(i = 0; i <= valor2; i++){ p = p->prox_album; } ElemM *novo, *novocpy; p->musicas_do_album->novo = malloc( sizeof(ElemM)); novocpy = p->musica_do_album->novo; if(novo == NULL) return 0; novocpy->id_musica = id_m; novocpy->tempo_da_musica = tempo; strcpy(novocpy->nome_musica, nome_m); novocpy->prox_musica = lc->prox_musica; lm->prox_musica = novocpy; return 1;}int busca_banda(int id, ElemB *lb){ int cont = 0; ElemB *p; p = lb->prox_banda; while(p != NULL && p->id_banda != id){ p = p->prox_banda; cont++; } if(p == NULL) return -1; return cont;}int buscar_album(int id_b, int id_a, ElemB *lb, ElemR *la){ int valor_busca = busca_banda(id_b, lb); int i; int cont = 0; if(valor_busca == -1) return -1; ElemB *q; q = lb->prox_banda; for(i = 0; i <= valor_busca; i++){ q = q->prox_banda; } ElemA *p; p = q->albuns_da_banda->prox_album; while(p != NULL && p->id_album != id_a){ p = p->prox_album; cont++; } if(p != NULL) return -1; return cont; }int buscar_musica(int id_b, int id_a, int id_m, ElemB *lb, ElemA *la, ElemM *lm){ int valor_busca1 = busca_banda(id_b, lb); int valor_busca2 = busca_album(id_b, id_a, lb, la); int i; int cont = 0; if(valor_busca1 == -1) return -1; if(valor_busca2 == -1) return -1; ElemB *q; q = lb->prox_banda; for(i = 0; i <= valor_busca1; i++){ q = q->prox_banda; } ElemA *p; p = q->albuns_da_banda->prox_album; for(i = 0; i <= valor_busca2; i++){ p = p->prox_album; } ElemM *k; k = p->musica_do_album->prox_musica; while(k != NULL && k->id_musica != id_m){ k = k->prox_musica; cont++; } if(k != NULL) return -1; return cont; } Arquivo.H (nomeado de biblioteca.h) #include <stdio.h>#include <stdlib.h>#include <string.h>struct musica{ int id_musica; int tempo_musica; char nome_musica[30]; struct musica *prox_musica; }; typedef struct musica ElemM;struct album{ int id_album; char nome_album[30]; struct musica *musica_do_album; struct album *prox_album; };typedef struct album ElemA;struct banda{ int id_banda; char nome_banda[30]; struct album *albuns_da_banda; struct banda *prox_banda; }; typedef struct banda ElemB;ElemB *cria_lista_banda();ElemR *cria_lista_album();ElemC *cria_lista_musica();int incluir_musica(ElemM *lm, ElemA *la, ElemB *lb, int id_m, int tempo, char *nome_m, int id_a, int id_b)int busca_banda(int id, ElemB *lb);int buscar_album(int id_b, int id_a, ElemB *lb, ElemR *la);int buscar_musica(int id_b, int id_a, int id_m, ElemB *lb, ElemA *la, ElemM *lm); Alguem poderia me ajudar? Não consigo encontrar exemplos de uma lista dentro da outra, apenas de uma unica lista. Ficarei muito grato com qualquer ajuda, obrigado.
  2. Entendi, recomenda usar qual amp-op de modo que amplifique o ganho por 10? ( ex: 0.4v no in --> 4v no out)
  3. mroberto98, entendi o que você disse, para isso não ficar acontecendo, vou colocar um led para avisar que parou de aquecer e ser desligado manualmente logo em seguida, e muito obrigado todo mundo que me ajudou. Meu circuito já esta funcionando aqui, mas tem um problema, estava usando um potenciômetro para testar o circuito invés do lm35, porém quando coloco o lm35 nada acontece. Tentei testar o lm35 com um led, e quando ia aumentando a temperatura era para ir aumentando a intensidade da luz, porém isso não aconteceu, na verdade o led nem mesmo acendeu; desconectei o lm35 do gnd deixando apenas conectado no out e no in e acendeu o led, porém a intensidade não variou, alguém sabe dizer o porque? o que estou fazendo de errado?
  4. @aphawk Muito obrigado, deu para dar um base já, como você deve ter percebido estou meio sem chão kk.. Pelo que entendi, ficaria algo assim, como na imagem abaixo?(exemplo do circuito para temperatura de 40ºC), Onde os resistores de 15 e de 30 dividiriam a tensão (i0 =12v) para tensão de 4v ( Vout = (r2/(r1+r2)) x Vin ), que seria comparada pelo lm741 com a tensão de saida do lm35 ( 10mv por 1ºC), e posteriormente quando a tensão de saida do Lm35 chegar a 4v (e 40ºC) começa a passar vcc pelo lm741, que acionaria/polariza o transistor ( ainda não entendi direito essa parte), fazendo passar corrente pela bobina do rele fazendo desligar o "aquecedor"? Desculpe-me, mas não estou entendendo a parte do transistor.
  5. Porque usar ele? Qual a diferença? Estaria certo o que eu fiz?
  6. Bom dia pessoal do forum, tenho um trabalho para a faculdade, mas estou um pouco perdido e gostaria de ajuda. Tenho que fazer um aquecedor de água com temperaturas pre estabelecidas de 40ºC, 60ºC e 80ºC. MInha ideia é usar o lm741 como comparador e chavear resistores para mudar as temperaturas em uma tensão de 12v e 0,5A. Exemplo conectar o lm 35 ao lm741 no -, no + colocar ao vcc com um resistor de 16 ohms para deixar uma tensão de 4v, quando chegar a 40ºC o lm35 vai mandar uma tensão de 4v que vão ligar o lm741 chaveando um rele e desligando o aquecimento da agua. Estaria certo?Alguma melhoria?.. me disseram que teria que colocar um transistor, mas não sei o porque e qual seria. Segue uma imagem abaixo para tentar facilitar o que eu disse. Muito obrigado. Lm741 datasheet -http://newton.ex.ac.uk/teaching/CDHW/Electronics2/DataSheets/LM741.pdf Lm35 datasheet - http://www.ti.com/lit/ds/symlink/lm35.pdf

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