Jump to content

Search the Community

Showing results for tags 'encadeada'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento e Banco de Dados
    • HTML e CSS
    • Java
    • Javascript
    • .NET
    • PHP
    • Python
    • Ruby
    • Mobile
    • Ambientes de Desenvolvimento
    • Arquitetura e Métodos Ágeis
    • Banco de Dados
    • DevOps
    • Desenvolvimento de Games
    • E-Commerce e Pagamentos Online
    • SEO e Otimizações
    • WordPress
    • Algoritmos & Outras Tecnologias
  • Design e Produto
    • Fotografia
    • Photoshop
    • Design de interfaces e UX
    • Edição/Produção de Vídeos
    • Marketing Online
    • Desenho, Ilustração e 3D
  • Entretenimento e uso pessoal
    • Geral
    • Segurança & Malwares
    • Gadgets e wearable
    • Softwares e Apps
    • Entretenimento

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Found 3 results

  1. juliaKrunker

    Lista Encadeada

    1- O comando typedef pode ser utilizado para criar novos comandos, ou simplesmente novas formas de escrever determinados comandos em linguagem C. Por exemplo, toda vez que você quiser criar uma variável do tipo struct declarado acima, terá que escrever o nome completo do tipo, isto é struct lista. Usando o comando typedef, defina um tipo alternativo, chamado Lista, que possa ser usado em lugar de struct lista. 2- Usando o tipo Lista que você criou na questão 3, declare uma variável chamada myList que possa ser utilizada para construir uma lista encadeada. 3- (0,5) Usando o tipo Lista que você criou na questão 3, declare uma variável chamada novo que possa ser utilizada para criar um novo elemento para a lista declarada na questão 4. 4- Escreva uma linha de código que aloque espaço na memória para a variável novo declarada na questão 5, de forma que a variável possa ser utilizada para inserir um novo elemento na lista myList declarada na questão 4. 5 -Considerando a variável myList declarada na questão 4 e a variável novo declarada na questão 5 e alocada na questão 6, atribua os valores 1 para o atributo id e 9.1 para o atributo valor e insira-a na lista myList. 6- O trecho de código apresentado a seguir, refere-se a uma função que receberá como parâmetro um ponteiro para uma lista do tipo Lista e deverá calcular e retornar a média dos valores existentes na lista. Escreva o corpo da função.
  2. matt.valenzza@gmail.com

    Lista Duplamente Encadeada

    Preciso fazer uma lista duplamente encadeada para ela inserir os números, mostrando eles, localizar em qual posição eles estão e excluir. Eu fiz o código, mas preciso que os números mostrem o número atual, o anterior e o próximo. Que na hora de compilar, que ele mostre o numero anterior, o atual e o próximo em um pequeno menuzinho. Segue o código que eu criei até agora. #include <stdio.h> struct Lista{ int num; struct Lista *prox; struct Lista *ant; }; struct Lista* criarNovoElemento(){ struct Lista *novo = NULL; novo = malloc(sizeof(struct Lista)); printf("Informe o numero..: "); scanf("%i", &(*novo).num); (*novo).prox = NULL; return novo; } inserir (struct Lista **a){ if (*a == NULL){ *a = criarNovoElemento(); } else{ struct Lista *aux; aux = *a; while( (*aux).prox != NULL){ aux = (*aux).prox; } (*aux).prox = criarNovoElemento(); } } mostrar(struct Lista **a){ if (*a == NULL){ printf("\n....Cadastro vazio....\n"); } else{ struct Lista *aux; aux = *a; while( aux != NULL){ printf("\nAtual..: %i", (*aux).num); aux = (*aux).prox; } } printf("\n"); system("pause"); } localizar (struct Lista **a){ if (*a == NULL){ printf("\n....Cadastro vazio....\n"); } else{ int num = 0; int achei = 0; int cont = 0; printf("Informe o numero: "); scanf("%i", &num); struct Lista *aux; aux = *a; while( aux != NULL && achei == 0){ cont += 1; if ((*aux).num == num){ achei = 1; } aux = (*aux).prox; } if (achei == 1){ printf("\n.....Achei na posicao: %i.....\n", cont); } else{ printf("\n.....Nao Achei....\n"); } } printf("\n"); system("pause"); } excluir(struct Lista **a){ if (*a== NULL){ // verificar se existe algum elemento na lista printf("\n....Cadastro vazio....\n"); } else{ struct Lista *aux =*a; a= (**a).prox; free(aux); } printf("\n"); system("pause"); } main (){ struct Lista *inicio = NULL; int opcao = 0; while(opcao != 9){ system ("cls"); printf("\n[1] Inserir Elemento"); printf("\n[2] Mostrar Elemento"); printf("\n[3] Localizar Elemento"); printf("\n[4] Excluir "); printf("\n[9] Finalizar"); printf("\nInforme a opcao: "); scanf("%i", &opcao); switch(opcao){ case 1 : inserir(&inicio); break; case 2 : mostrar(&inicio); break; case 3 : localizar(&inicio); break; case 4 : excluir(&inicio); break; case 9 : printf("Programa finalizado"); } } }
  3. Olá, estou com um problema: tenho que ler um arquivo de .csv que contem simulações de jogos entre dois times e/ou consultas ao ranking. Foi especificado que o numero de consultas é muito maior que o numero de simulações de jogos. Para não ficar muito custoso pensei em sempre inserir os times após cada simulação já de maneira ordenada, e se o time já tiver feito algum outro jogo, eu removo e insiro novamente ordenado. /**************************** Estruturas ****************************/ typedef int TipoChave; typedef struct TipoTime { char *nome; int classificacao; int pontos; }TipoTime; typedef struct TipoItem{ TipoChave Chave; TipoTime Time; }TipoItem; typedef struct TipoCelula *TipoApontador; typedef struct TipoCelula{ TipoItem Item; TipoApontador Prox; }TipoCelula; typedef struct TipoLista{ TipoApontador Primeiro, Ultimo; }TipoLista; /**************************** Funcoes ****************************/ void FLVazia (TipoLista *Lista); int Vazia(TipoLista Lista); void Insere (TipoItem x, TipoLista *Lista); void Retira (TipoApontador p, TipoLista *Lista, TipoItem *Item); void Imprime (TipoLista Lista); void ImprimeNoArquivoDeSaida (TipoLista Lista); int pesquisarTime(TipoLista *L , char *nome, TipoCelula *Celula); void inserirOrdenado(TipoLista Lista , TipoItem *Time); void atualizaVitoria(TipoLista Lista, TipoItem *Item, TipoApontador p); void atualizaEmpate(TipoLista Lista, TipoItem *Item, TipoApontador p); /*Função que faz uma lista vazia*/ void FLVazia (TipoLista *Lista){ Lista -> Primeiro = (TipoApontador) malloc (sizeof(TipoCelula)); Lista -> Ultimo = Lista -> Primeiro; Lista -> Primeiro -> Prox = NULL; } int Vazia(TipoLista Lista){ return (Lista.Primeiro == Lista.Ultimo); } /*Insere na lista*/ void Insere (TipoItem x, TipoLista *Lista){ Lista -> Ultimo -> Prox = (TipoApontador) malloc (sizeof (TipoCelula)); Lista -> Ultimo = Lista -> Ultimo -> Prox; Lista -> Ultimo -> Item = x; Lista -> Ultimo -> Prox = NULL; } /*Remove da lista*/ void Retira (TipoApontador p, TipoLista *Lista, TipoItem *Item){ TipoApontador q; if ( (Vazia(*Lista)) || (p == NULL) || (p -> Prox == NULL) ){ printf ("\nErro: lista vazia ou posicao nao existe!!\n"); return; } q = p -> Prox; *Item = q -> Item; p -> Prox = q -> Prox; if (p -> Prox == NULL){ Lista -> Ultimo = p; } free (q); } /*Imprime a lista*/ void Imprime (TipoLista Lista){ TipoApontador Aux; Aux = Lista.Primeiro -> Prox; while (Aux != NULL){ printf ("%d \n" , Aux -> Item.Chave); Aux = Aux -> Prox; } } /*void ImprimeNoArquivoDeSaida (TipoLista Lista){ TipoApontador Aux; Aux = Lista.Primeiro -> Prox; while (Aux != NULL){ fprintf (ArqSaida,"%d, \n" , Aux -> Item.Chave); Aux = Aux -> Prox; } }*/ //pesquisa se já existem o time na lista. int pesquisarTime(tlista *L,char *nome, TipoCelula *Celula){ TipoCelula *p; TipoTime *Time; while (p !=NULL){ Time = L->nome; if (strcmp(nome,Time->nome)==0){ return 1; } } return 0; } /*Esta função faz a inserção na lista de maneira ordenada*/ void inserirOrdenado(TipoLista Lista **p, *Time) { lista *atual, *novo, *anterior; int num; novo = (lista *) malloc(sizeof(lista)); atual = *p; anterior = NULL; novo->valor = Time; if(atual == NULL){ novo->prox = NULL; *p = novo; } else{ while(atual != NULL && atual->valor < num){ anterior = atual; atual = atual->prox; } novo->prox = atual; if(anterior == NULL){ *p = novo; } else{ anterior->prox = novo; } } } /*A função recebe o time vitorioso, copia para um time temporário. chama a função Retira, para remover o item da lista soma os 3 pontos da vitória e insere novamente de maneira ordenada*/ void atualizaVitoria(TipoLista Lista, TipoTime Time, TipoApontador p){ TipoItem ItemTemp; //Copia o time para um TipoTime temporário. ItemTemp.Time.nome = Item.Time.nome; ItemTemp.Time.classificacao = Item.Time.classificacao; ItemTemp.Time.pontos = Item.Time.pontos+3;//Ponteiro ou conteudo ? Retira ( p, *Lista, *Item); inserirOrdenado( Lista **p, *ItemTemp); } /*A função recebe os times que empataram(um por vez), copia para um time temporário. chama a função Retira, para remover o item da lista soma o 1 ponto da vitória e insere novamente de maneira ordenada*/ void atualizaEmpate(TipoLista Lista, TipoItem *Item, TipoApontador p){ TipoItem ItemTemp; ItemTemp.Time.nome = Item.Time.nome; ItemTemp.Time.classificacao = Item.Time.classificacao; ItemTemp.Time.pontos = Item.Time.pontos+3;//Ponteiro ou conteudo ? Retira ( p, *Lista, *Item); inserirOrdenado( Lista **p, *ItemTemp); } int main(){ /************************** VARIAVEIS *****************************/ char buffer[100]; int i = 0; int flag = 1; TipoLista Campeonato; TipoItem ItemAux; char *Acao; char *TipoDaAcao; char *NomeDoTime1; char *NomeDoTime2; /************************ LEITURA ARQUIVOS *******************************/ FILE *ArqEntrada; // leitura dos comandos FILE *ArqSaida; // resultado dos comandos FILE *ArqRanking; // arquivo do ranking ordenado ArqEntrada = fopen("entrada.csv","r"); ArqSaida = fopen("saida.csv", "w"); ArqRanking = fopen("ranking.csv","r"); if (ArqEntrada == NULL) { printf ("\nERRO: Arquivo de entrada incorreto!"); } if (ArqSaida == NULL){ printf("\nERRO: Arquivo de saida incorreto!"); } if (ArqRanking == NULL){ printf("\nERRO: Ranking nao encontrado. Sera gerado um novo."); ArqRanking = fopen("ranking.csv","w"); flag = 0; } /************************ CARREGANDO SIMULAÇÕES ANTERIORES *******************************/ if (flag==1){ fgets (buffer, 100, ArqRanking); while (!feof(ArqRanking)){ printf ("\n"); ItemAux.Time.nome = atoi (strtok (buffer, ",")); printf ("\nNome: %s", ItemAux.Time.nome); ItemAux.Time.classificacao = atoi (strtok (buffer, ",")); printf ("\nClassificacao: %d", ItemAux.Time.classificacao ); ItemAux.Time.pontos = atoi(strtok (NULL, ",")); printf ("\nPontuacao: %d", ItemAux.Time.pontos); fgets (buffer, 100, ArqRanking); } } /************************ LEITURA DA ENTRADA *******************************/ while (!feof(ArqEntrada)){ Acao = strtok (NULL, ","); if (strcmp("CONSULTA", Acao)==0){ TipoDaAcao = atoi (strtok (buffer, ",")); NomeDoTime1 = atoi (strtok (buffer, ",")); //if (pesquisarTime(&Campeonato, *NomeDoTime1, ItemAux )==0){ if (1){ printf("/nERRO: Time nao encontrado para consulta."); } if (strcmp("PONTUACAO", Acao)==0){ fprintf(ArqSaida, "%s,%s,%d", TipoDaAcao, NomeDoTime1, ItemAux.Time.pontos); } else if (strcmp("RANKING", Acao)==0){ fprintf(ArqSaida, "%s,%s,%d", TipoDaAcao, NomeDoTime1, ItemAux.Time.classificacao); } } else if(strcmp("VITORIA", Acao)==0){ NomeDoTime1 = atoi (strtok (buffer, ",")); NomeDoTime2 = atoi (strtok (buffer, ",")); if (1){//*pesquisarTime(*NomeDoTime1, Campeonato, ItemAux )*/){ atualizaVitoria(Campeonato, *Item, p); } else if(1){ //(pesquisarTime(*NomeDoTime1, Campeonato, ItemAux )==0){ //Como somar os 3 pontos para inserir ordenado? inserirOrdenado(Campeonato p, *Time); } if (1){ //(pesquisarTime(*NomeDoTime2, Campeonato, ItemAux )==0){ inserirOrdenado(Campeonato p, *Time); } /* else if(strcmp("EMPATE", Acao)==0){ NomeDoTime1 = atoi (strtok (buffer, ",")); NomeDoTime2 = atoi (strtok (buffer, ",")); /* pesquisarTime retorna 1 se o time for encontrado e 0 se não. if (pesquisarTime(*NomeDoTime1, Campeonato, ItemAux )){ atualizaEmpate(Campeonato, *Item, p); } /* pesquisarTime retorna 1 se o time for encontrado e 0 se não. else if (pesquisarTime(*NomeDoTime1, Campeonato, ItemAux )==0){ //Como somar o 1 ponto para inserir ordenado? inserirOrdenado(Campeonato p, *Time); } /* pesquisarTime retorna 1 se o time for encontrado e 0 se não. if (pesquisarTime(NomeDoTime2, Campeonato, ItemAux )){ atualizaEmpate(Campeonato, *Item, p); } /* pesquisarTime retorna 1 se o time for encontrado e 0 se não. else if (pesquisarTime(*NomeDoTime2, Campeonato, ItemAux )==0){ //Como somar o 1 ponto para inserir ordenado? inserirOrdenado(Campeonato p, *Time); } */ } else{ printf("/nErro: Primeiro argumento invalido."); } } /************************ IMPRIME RANKING *******************************/ ImprimeNoArquivoDeSaida(Campeonato); fclose(ArqEntrada); fclose(ArqSaida); fclose(ArqRanking); return 0; } Fiz o código desta maneira porém estou com muitas duvidas quanto as passagens dos parâmetros para as funções. Vocês podem me ajudar ? Obrigado
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.