Ir ao conteúdo
  • Cadastre-se

vashkyo

Membro Júnior
  • Posts

    7
  • Cadastrado em

  • Última visita

Reputação

9
  1. @NELSON BRAGANão sei dizer se é obrigatória, teria que ver com a tutoria. Sei que vale 20% da nota. Se não a fizer e gabaritar todo o resto você fica com média 80 no final. Abs
  2. @NELSON BRAGA Olá, fiz sim, lhe entregar pronto não acho certo, até porque não existem 2 códigos 100% iguais desenvolvidos por alunos diferentes. Isso faria com que você e eu tirássemos zero, pois também estou fazendo essa disciplina agora e nem sei se os meus códigos estarão certos. Mas posso te dar dicas: 1- A primeira questão fiz em cima do que foi aprendido na aula pratica de lista encadeada, inclusive o professor disponibiliza o código que ele fez pra baixar e trabalhar em cima dele. 2- A segunda questão é bem relativa, já que pede pra você escolher uma estrutura de dados eficiente para tal situação. Escolhi a Árvore binária, que também tem um exemplo nas aulas práticas. A maior dificuldade que vai ter é que nas aulas foi aprendido a trabalhar apenas com variáveis inteiras, e nesses casos você precisa trabalhar com "char". Para isso utilize a fica do @Flávio Pedroza, foi indispensável para que conseguisse. Também não tenho muito conhecimento e achei bem confuso de entender os algoritmos, por isso qualquer dúvida poste no fórum, o pessoal aqui foi bem prestativo e rápido em ajudar. Espero ter ajudado com as dicas.
  3. @Flávio Pedroza Obrigado Flávio, implementei as mudanças porém ainda sem sucesso. adicionado 31 minutos depois @Flávio Pedroza Flávio, consegui resultados com sua solução!! Além das alterações que você recomendou, alterei as linhas: //void InserirInicio(char v_nome, char v_artista, int m, int s) void InserirInicio(char v_nome[TAMANHO], char v_artista[TAMANHO], int m, int s) Vou prosseguir com o código agora =D Obrigado a todos. Qualquer dúvida aviso hehe.
  4. @devair1010Na verdade aprendi algo parecido com meu código em aula, porém lidando com variáveis do tipo int, agora transformando-os em char os resultados ficaram errados. Uso a alocação dinâmica na lista encadeada pra acumula um valor e depois fazer ele apontar pro próximo. O exercício é o seguinte: Postei o exercício mais pra entenderem o porque de algumas coisas. Hoje vou começar a tentar inserir os dados via documento de texto. Em paralelo tento via teclado.
  5. @devair1010 Estou fazendo em C, com as bibliotecas stdio.h e stdlib.h. adicionado 7 minutos depois O problema em execução: Cadastrando os dados: Listando:
  6. @Limaoz1n Oi, usei como um while infinito (loop). Pro menu() voltar na tela após eu realizar uma operação. Se copiar e executar o código da pra ver melhor.
  7. Olá pessoal, Sou leigo em programação e estou com problemas no meu código pra criar uma playlist de músicas (basicamente uma lista encadeada). O código compila e funciona, o problema é quando insiro os dados do tipo char ele não os transfere para a função corretamente, tanto é que quando peço pra imprimir fica tudo errado. Também não estou conseguindo usar o %s, pois gera um erro. Estou criando a parte de inserir musicas e não estou obtendo sucesso, se alguém puder me ajudar agradeço. #include <stdio.h> #include <stdlib.h> #define TAMANHO 30 int menu(); void InserirInicio(char v_nome, char v_artista, int m, int s); void Listar(); struct Musicas { char nome[TAMANHO]; char artista[TAMANHO]; int min, seg; struct Musicas *prox; } *Head; int main() { int op, pos, c, m, s; char v_nome[TAMANHO]; char v_artista[TAMANHO]; Head = NULL; while (1) { op = menu(); switch (op) { case 1: printf("Digite o nome da musica: "); gets_s(v_nome); while ((c = getchar()) != '\n' && c != EOF) {} //USADO PRA LIMPAR OS DADOS printf("Digite o nome do artista: "); gets_s(v_artista); while ((c = getchar()) != '\n' && c != EOF) {} printf("Digite a duracao da musica (mm ss): "); scanf_s("%d %d", &m, &s); while ((c = getchar()) != '\n' && c != EOF) {} InserirInicio(v_nome[TAMANHO], v_artista[TAMANHO], m, s); break; case 5: Listar(); break; case 6: return 0; default: printf("Invalido\n"); } } return 0; } int menu() { int op, c; system("Cls"); printf("1.Inserir musica no inicio da lista\n"); printf("2.Inserir no fim da lista encadeada simples\n"); printf("3.Inserir no meio da lista encadeada simples\n"); printf("4.Remover da lista encadeada simples\n"); printf("5.Listar a lista encadeada simples\n"); printf("6.Sair\n"); printf("Digite sua escolha: "); scanf_s("%d", &op); while ((c = getchar()) != '\n' && c != EOF) {} system("Cls"); return op; } void InserirInicio(char v_nome, char v_artista, int m, int s) { Musicas *NovoElemento; NovoElemento = (struct Musicas *)malloc(sizeof(struct Musicas)); NovoElemento->nome[TAMANHO] = v_nome; NovoElemento->artista[TAMANHO] = v_artista; NovoElemento->min = m; NovoElemento->seg = s; if (Head == NULL) { Head = NovoElemento; Head->prox = NULL; } else { NovoElemento->prox = Head; Head = NovoElemento; } } void Listar() { Musicas *ElementoVarredura; ElementoVarredura = (struct Musicas *)malloc(sizeof(struct Musicas)); ElementoVarredura = Head; if (ElementoVarredura == NULL) { return; } while (ElementoVarredura != NULL) { printf("Nome da música: %c\n", ElementoVarredura->nome); // AQUI TAMBÉM NÃO CONSIGO USAR O %s POIS RETORNA ERRO printf("Artista: %c\n", ElementoVarredura->artista); printf("Duracao: %d:%d\n\n", ElementoVarredura->min, ElementoVarredura->seg); ElementoVarredura = ElementoVarredura->prox; } printf("\n"); system("pause"); return; }

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!