Ir ao conteúdo
  • Cadastre-se

MadroxD

Membro Pleno
  • Posts

    24
  • Cadastrado em

  • Última visita

Tudo que MadroxD postou

  1. Pessoal to com um problema aqui, eu precisava criar uma lista q ficasse removendo os seus elementos de 2 em 2, por exemplo se minha lista tiver 6 elementos (1,2,3,4,5,6) e fosse definido que ela comece as eliminacoes pelo numero 1, o primeiro elemento a sair seria o 3 em seguida o 5. criei a função que insere, remove,imprime e conta quantos elementos tem a lista. no main eu criei pra testar: int i; int m=6, p=1, n=2; for(i=p; i<=m; i++){ Inserir(&cabeca,i); } printf("a lista tem %d elementos\neles:",qtd); Listar(cabeca); for(i=p+n; i<=m; i=i+n){ printf("\nFOI REMOVIDO %d DA LISTA\n",i); Remover(&cabeca,i); } printf("\na lista tem %d elementos\neles:",qtd); Listar(cabeca); for(i=p+n; i<=qtd; i=i+n){ printf("\nFOI REMOVIDO %d DA LISTA\n",i); Remover(&cabeca,i); } no primeiro for ele fez certinho removeu o numero 3 e 5, a lista que possuía 6 elementos agora tem 4 { 1,2,4,6} . Então no segundo for era para ser removido o numero 4 e voltar para o laço, 4 porque é ele q esta na posição 3. mas o problema é que esta removendo os mesmo numeros da anterior ... gostaria q vocês me ajudasse nessa!!
  2. @arfneto mandei o codigo completo, obrigado pela atenção esta ajudando muito ! massadajudeu.pdf
  3. @arfneto EstaVazia() funciona? sim Listar() esta retornando o que? ou dá erro? não esta retornando nada, se eu colocar um printf('%d", cabeca->proximo;) no while ela vai imprimir todos os elementos q eu digitei Está certo de que devia somar também no return? não eu ja corrigi o objetivo da funcao Listar() é apenas contar os elementos da lista
  4. @arfneto Estou usando C, inclusive vi agora que marquei tag errada ... enfim, estou aprendendo ainda a trabalhar com estrutura algumas coisa é como se fosse falar grego não entendo porque ela não retorna o qtd int Listar(Item *cabeca) { int qtd; if (EstaVazia(cabeca)){ printf( "Vazia\n" ); } else{ while(cabeca != NULL) { cabeca = cabeca->proximo; qtd++; } } return qtd++; }
  5. @arfneto não sei fazer desse jeito, mas obrigado
  6. @KXSY entao mano, a função para adicionar na lista, remover da lista esta certo o unico problema é que eu preciso de uma função q possa me retornar um dado (quantos elementos tem na lista), porque a ideia é tipo de uma roleta russa, que vai eliminando os dados até que sobre 1 elemento. Então eu criei um while(Remover(&cabeca)!= 1), ou seja enquanto tiver mais de um elemento ele vai ficar removendo e dentro do while eu coloquei um for(i=1; i<=6; i=i+2){ Remover(&cabeca,i-1); que é para remover de dois em dois: olha esse desenho para entender melhor
  7. @KXSY obrigado pela atenção, eu acho q me expliquei mal, essa funcao "void" esta errada eu preciso trabalhar com o valor no programa tem um while q trabalha enquanto ela tem mamanho, quando ela chegar a 1 elemento dentro da lista ela tem q para ou seja a ideia é executar ate ela ficar com 1 elemento segue o codigo completo em anexo; massadajudeu.rar adicionado 2 minutos depois @Mazze Obrigado pela atenção, sim ele tem q passar para int porque vou precisar trabalhar com o valor vou deixar o codigo aqui #include <stdio.h> #include <stdlib.h> struct Item { int numero; struct Item *proximo; }; bool Inserir(Item **cabeca, int valor) { Item *novo, *anterior, *atual; // -> Aloca memória para o novo item novo = (Item *)malloc(sizeof(Item)); // -> Checa se foi alocado memória corretamente. if (novo != NULL) { // -> Define e inicializa os valores. novo->numero = valor; novo->proximo = NULL; anterior = NULL; atual = *cabeca; // -> Atual é o ponteiro para o item da cabeça // -> Ordenação // Verifica se a posição atual não é nula (início ou fim) // Verifica se o valor é maior do que o número do item. while (atual != NULL && valor > atual->numero) { anterior = atual; atual = atual->proximo; } // -> Se não há posição anterior, então o novo item será a cabeça. if (anterior == NULL) { novo->proximo = *cabeca; // -> recebe o que já tem na cabeça. *cabeca = novo; // -> cabeça nova. } else // -> Arranjando posição no meio da lista... Remanejando. { // -> Elemento anterior aponta para o novo. anterior->proximo = novo; // -> Novo elemento aponta para o resto da lista. novo->proximo = atual; } return true; } else { return false; } } bool Remover(Item **cabeca, int valor) { Item *anterior, *atual, *itemRemover; anterior = NULL; atual = *cabeca; // -> Procura o valor. while(atual != NULL && atual->numero != valor) { anterior = atual; atual = atual->proximo; } // -> Quando encontra o valor. if(atual != NULL) { itemRemover = atual; if(anterior != NULL) { // -> Encurta o caminho. anterior->proximo = atual->proximo; } else // -> Quando o item é a cabeça. { // -> Ela recebe o próximo do primeiro item. *cabeca = (*cabeca)->proximo; } // -> Libera da memória o item excluído. free(itemRemover); return true; } return false; } bool EstaVazia(Item *cabeca) { return cabeca == NULL; } void Listar(Item *cabeca) { if (EstaVazia(cabeca)) { printf( " A lista esta vazia.\n\n" ); } else { printf( "Listando... \n"); while(cabeca != NULL) { printf("%i ", cabeca->numero); cabeca = cabeca->proximo; } } } main() { Item *cabeca = NULL; int i; int m=6, p=1, n=2; for(i=p; i<=m; i++){ Inserir(&cabeca,i); } //while(Remover(&cabeca)!= 1){//numero de elementos dentro da lista // for(i=1; i<=6; i=i+n){//tem q andar pela lista de 2 em 2 eliminando os numeros em q ele cair // Remover(&cabeca,i-1); // } //} Listar(cabeca); }
  8. Quero saber como faço para retornar na tela o numero total de elementos em uma fila, por exemplo: tenho uma fila dinamica que pelo meu codigo recebe 6 elementos, ela tem q me retornar o numero de elementos para q eu possa trabalhar com ele no main criei essa funcao que emprime os elementos: void Listar(Item *cabeca) { int i; if (EstaVazia(cabeca)) { printf( " A lista esta vazia.\n\n" ); } else { while(cabeca != NULL) { printf("%i ", cabeca->numero); cabeca = cabeca->proximo; } } }
  9. @arfneto seria uma estrutura que armazena de forma alinhada, estatica porque tem que ser pre definido o tamanho da capacidade de memoria, enfim, o problema desse meu codigo é que é necessario retirar elementos especificos não só removelo subistituindo por 0 mas remover até o espaco de memoria ou seja devo fazer uma fila dinamica. obrigado pela atenção @arfneto
  10. é possivel remover um elemento especifico dentro de uma lista estatica? listar.rar
  11. Boa tarde, estava tentando incrementar uma pilha em um programa mas esta dando erro na propria funcao sendo que peguei de um livro trab.rar
  12. MadroxD

    C manter dados de um vetor

    @devair1010 sua ideia deu certo, ajudou muito !! tinha ate me esquecido de agradecer, vou deixar o codigo pronto aqui alocamento swap.rar
  13. @Mazze @BEZERRA_BRITO o programa deu certo galera, mas uma coisa em que eu reparei foi que em alguns casos a saida n sai o valor exato e sim um aproximado ... segue o meu codigo para vocês euclidiana.pdf
  14. galera estou queria saber como q faz para ficar atualizando os dados de um vetor. ex, tenho um caso em q le os dados do ver, em outra condicional eu preciso usar esse dado q foi atribuido mas n esta indo. memoria.txt
  15. Boa tarde! to com dificuldades para interpretar esse exercício, não sou muito bom de matematica ainda para ajudar, se alguem puder me dar uma norte para prosseguir com esse exercicio. segue o exercicio:
  16. Boa tarde estava realizando um exercício onde pede para ler um numero N tal que N<=10000 e imprimir a sequencia fibonacci dele ex N =10 | saida = 55; realizei usando uma funcao recursiva como solicitado, mas isso ocupa muita memoria consequentemente acaba demorando mt para fazer a contagens de numeros altos pensei em usar o sistema de ponteiros para limitar a memoria e limpar dep de um tempo, mas sou muito leigo nessa area. fibonacci.txt
  17. Preciso de ajuda para inverter um vetor usando o ponteiro *p, meu programa esta executando mas ele imprime um numero aleatorio no meio e eu n sei de onde vem. codigo disponivel no http://dontpad.com/madrox
  18. MadroxD

    C++ contar print no vetor

    @Flávio Pedroza Obrigado pela atencao mas em questao do loop esta tudo certo, o problema é q no primeiro loop ele imprime 5x, no segundo 4, dep segue de 4 em 4 impressoes, eu preciso q ele pare de imprimir de acordo com o numero N digitado.
  19. MadroxD

    C++ contar print no vetor

    Preciso de ajuda de vocês para contar quantas vezes o printf imprime um numero dos meus vetores ( sao 2 um deles q conta ate 5 e o outro q volta). codigo disponivel: http://dontpad.com/madrox
  20. @isrnick deu CERTINHO !! muito obrigado amigão, tudo de bom
  21. @isrnick Obrigado dnv pela atenção. fiz os passos para testar mas n saiu como o esperado
  22. @isrnick ja te agradeço pela atenção. Esse sábado n tem como alterar porque segundo equação o final da operacao correspondente a sábado seria o 0 mesmo. vou deixar o codigo completo para melhorar a visualização. Codigo do calendario: CALENDARIO.txt Codigo para saber o dia da semana: como-descobrir-o-dia-da-semana.txt
  23. Estou desenvolvendo um calendario em C, só que estou tendo dificuldade na otimização da exibição do calendario em si (os numeros), o programa ja esta pronto só que como eu fui colocar o sistema de dias da semana nele. resumidamente preciso de ajuda para poder alterar o inicio do mes, no meu caso o mes sempre comeca no domingo. OBS: Ja tenho o algoritmo que responde onde comeca o mes ex: 0= sábado | 6= sexta | 5=quinta | 4=quarta | 3=terca | 2= segunda | 1=domingo. int mes29(int a){ int i,j,mes[5][7],k=1; for(i=0; i<5; i++){ for(j=0; j<7; j++){ if(k<30){ mes[j]=k++; } else mes[j]=0; } } printf("Dom Seg Ter Qua Qui Sex Sab\n\n"); for(i=0; i<5; i++){ for(j=0; j<7; j++){ printf("%3d ",mes[j]); } printf("\n"); } } Obrigado pela atenção

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!