Ir ao conteúdo
  • Cadastre-se

Lucas Bispo 150

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Tudo que Lucas Bispo 150 postou

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