Ir ao conteúdo
  • Cadastre-se

Lucas Bispo 150

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

posts postados por Lucas Bispo 150

  1. Bom dia, sou estudante pode ser que não fiz um código estão bonito, mas  gostaria de ajuda referente a passar uma linha de números inteiros dento de um arquivo de txt (teste.txt) para um struct.

    Exemplo de entrada de dados que esta no arquivo. Onde cada numero deve corresponder a uma variável de tipo inteiro dentro de uma struct onde deve ser encadeada uma lista para cada struct preenchida.

    linha 1-> 0 ; 30000.00 ; 60 ; 4 
    linha 2 -> 0 ; 30000.00 ; 60 ; 4 
    linha 3 -> 2 ; 70000.00 ; 70 ; 5 

    Bom eu consigo imprimir os valores separadamente como inteiro mas não consigo jogar na struct, para então direcionar os ponteiros fazendo assim uma lista encadeada e logo apos estará pronta para uso através do menu

    #include<stdio.h>
    #include<stdlib.h>
    #include <string.h>
    
    typedef struct st_no{
      int num;
      struct st_no *prox;
    }NO;
    
    NO *criar_no(){
      NO *novo = (NO*)malloc(sizeof(NO));
      return novo;
    }
    
    NO *inserir_Inicio(NO *lista,int valor){
    
      NO *novo_no = criar_no();
    
      novo_no->num = valor;
    
      if (lista == NULL){
        lista = novo_no;
        novo_no->prox = NULL;
      }
      else{
        novo_no->prox = lista;
        lista = novo_no;
      }
      return lista;
    }
    
    
    NO *inserir_fim(NO *lista,int dado){
    
      NO *no = (NO*)malloc(sizeof(NO));
      no->num = dado;
      
      if(lista == NULL){
        no->prox = NULL;
        lista = no; 
        }
      else{
        NO *aux = lista;
          
        while (aux->prox != NULL){
        aux = aux->prox;
        } 
          
        no->prox = NULL;
        aux->prox = no;
       
      }
      
      return lista;
    }
    
    NO *busca(NO *lista, int valor){
    
      NO *aux = lista;
    
      while(aux->prox != NULL){ 
        
        if(aux->num == valor){
          
          return aux;      
          
        }
      
      aux = aux->prox;
      
      }
    }
    
    NO *deletar(NO *lista,int valor){
      NO *anterior,*proximo;
      proximo = lista->prox;
      anterior = lista;
      
      if (anterior->num == valor){
        lista = proximo;
        
        printf("Valor apagado pois se encontra no inicio da lista.\n");
        free(anterior);
      }
    
      while (proximo != NULL){
        if(proximo->num == valor){
    
          anterior->prox = proximo->prox;
          printf("Valor deletado\n");
          free(proximo);
    
          }
    
          anterior = proximo;
          proximo = proximo->prox;
        }
        return lista;
    
    }
    
    void imprimir_Lista(NO *lista){
      NO *aux;
      
      for (aux = lista; aux != NULL; aux = aux->prox){
        printf("|%d|->",aux->num);
      }
      printf("\n");
    }
    
    void linhaAlinha(NO *li){
      
      FILE *arq;
      int sLp2;
      int contador = 1;
    
      char nome[40], *resultado;
    
      arq = fopen("teste.txt", "r");
    
      if(arq){
    
        while(!feof(arq)){
    
          resultado = fgets(nome, 40, arq);
          
          if(resultado){
            printf( " \n ");
            printf("%s", nome);
            printf( " \n");
    
            const char s[2] = ";";
            char *token;
       
            /* get the first token */
            token = strtok(nome, s);
       
            /* walk through other tokens */
            while( token != NULL ) {
              //printf( " %s\n", token );
                
    
              sLp2 = atoi(token);
                
    
              printf( " \n ");
              printf( " %d ", sLp2 );
              printf( " \n ");
    
              token = strtok(NULL, s);
            } 
          }
        }
      }
    
    }
    
    
    
    
    
    int main() {
      int escolha,valor;
      NO *respostaBusca;
        
      NO *lista = NULL;
    
      linhaAlinha(lista);
        
      do{
        printf("[1]-Inserir elemento\n[2]-Inserir no fim\n[3]-Busca de elementos\n[4]-Deletar elementos\n[5]-Imprimir lista\n[-1]-sair\n");
        scanf("%d",&escolha);
    
        switch (escolha){
    
          case 1:{
           printf("Digite o valor a colocar na lisrta:");
           scanf("%d",&valor);
    
           lista = inserir_Inicio(lista,valor);
            break;
          }
    
          case 2:{
            printf("Digite o valor a colocar na lisrta:");
            scanf("%d",&valor);
            lista = inserir_fim(lista,valor);
            break;
          }
                
          case 3:{
            printf("Digite o valor para buscar:");
            scanf("%d",&valor);
            respostaBusca = busca(lista,valor);
            printf("Valor encontrado %d\n",respostaBusca->num);
            break;
          }
          
          case 4:{
            printf("Digite o valor para deletar:");
            scanf("%d",&valor);
            lista = deletar(lista,valor);
            break;
          }
          
          case 5:{
            imprimir_Lista(lista);
    				break;
    			}
    
          case -1:
            free(lista);
            default:
            break;
        }
    
      }while (escolha != -1);
    
      return 0;
    }

     

    testetxt.png

    • Amei 1
  2. Boa noite, solicito ajuda pois existe um erro de seguimento e não consigo enxergar onde errei,quem pude me ajudar por gentileza?

    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct ponto{
        int x;
        //char nome[]
        struct ponto *proximo;
    }t_ponto;
    
    void inserir(t_ponto *ini_ponto){
        int resp;
    
        t_ponto *proximo_ponto;
    
        if (ini_ponto == NULL)
        exit(1);
    
        printf("Digite x:");
        scanf("%d",&proximo_ponto->x);
    
        proximo_ponto -> proximo = (t_ponto*)malloc(sizeof(t_ponto));
        proximo_ponto = proximo_ponto->proximo;
    
        proximo_ponto->proximo = NULL;
        proximo_ponto = ini_ponto;
    }
    t_ponto *buscar(int valor, t_ponto *ini_ponto){
        
      t_ponto *proximo_ponto;
      proximo_ponto = ini_ponto;
        
      printf("Qaul valor deseja buscar na lista.\n");
      scanf("%d",&valor);
    
      while (proximo_ponto != NULL){
      if (proximo_ponto->x == valor){
        return proximo_ponto;
      }
      else{
        return NULL;
      }
      proximo_ponto = proximo_ponto->proximo; 
      }
    }
    t_ponto *remover(int valor, t_ponto *ini_ponto){
    
     t_ponto *proximo_ponto, *anterior;
    
     proximo_ponto = ini_ponto->proximo;
     anterior = ini_ponto;
    
     printf("Qual valor deseja remover?");
     scanf("%d",&valor);
    
     if (anterior->x == valor){
       ini_ponto = proximo_ponto;
       printf("Valor apagado pois se encontava no inicio da lista.\n");
       free(anterior);
     }
     while(proximo_ponto != NULL){
        if(proximo_ponto->x == valor){
         anterior->proximo = proximo_ponto->proximo;
         printf("Valor deletado.\n");
         free(proximo_ponto);
        }
       anterior = proximo_ponto;
       proximo_ponto = proximo_ponto->proximo;
      }
    }
    int main(){
        t_ponto *ini_ponto, *proximo_ponto, *resposta_funcao_busca;
     int valor, res;
    
     ini_ponto = (t_ponto *)malloc(sizeof(t_ponto));
     proximo_ponto = ini_ponto;
     
     do{
         printf("Digite 1 para inserir elementos a lista.\nDigite 2 para realizar busca de elementos.\nDigite 3 para realizar a remo??o de elementos na lista.\nDigite 4 para listar.\n");
         scanf("%d",&res);
         switch (res){
           case 1:{
             inserir(ini_ponto);
           break;
           }
           case 2:{
             resposta_funcao_busca = buscar(valor,ini_ponto);
             if (resposta_funcao_busca < 0){
             printf("%d\n",resposta_funcao_busca->x);    
             }
             else
               printf("Valor não encontrado.\n");
             
            break;
           }
           case 3:{
             remover(valor,ini_ponto);
            break;
           }
          }
    
     }while((res!=1)||(res!=2)||(res!=3));
        return 0;
    }

     

     

     

     

     

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!