Lucas Praxedes Fischer de Mattos Posted November 16, 2021 at 09:59 PM Share Posted November 16, 2021 at 09:59 PM estou fazendo um codigo para somar 2 listas encadeadas de numeros inteiros, porem sempre fica dando "signal: segmentation fault(core dumped)" no repl.it e "runtime error" no compilador da propria faculdade. Com a entrada "12 21" sai o resultado parcial: "O valor é: 2 12 1 1634545454 signal: segmentation fault(core dumped)" Além disso, a funçao "libera" e "retira" também dão o mesmo erro. Isso, porque eu fiz literalmente igual ao codigo exemplo da professora. /* Programa: Exercício 4 Autor: Lucas Praxedes Fischer de Mattos (RA 156697) Turma: IB Concluída em: 16/11/2021*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 100 typedef struct lista{ int digt; struct lista *prox; } reglista; typedef reglista *pont; pont alocacao(pont lista, int val){ pont novo=(pont)malloc(sizeof(reglista)); novo->digt= val; novo->prox= lista; return novo; } pont retira(pont lista, int val){ pont ant= NULL, busca; for(busca=lista; busca!=NULL && busca->digt!=val; busca=busca->prox) ant= busca; if(busca==NULL) return lista; if(ant==NULL) lista=busca->prox; else ant->prox=busca->prox; return lista; } void libera(pont lista){ pont paux=lista, paux2; while(paux!=NULL){ paux2=paux->prox; free(paux); paux=paux2; } } void imprime (pont lista) { pont paux; for (paux = lista; paux != NULL; paux = paux->prox) printf ("%d\n", paux->digt); } pont soma(pont lista1, pont lista2){ pont paux; int val= lista1->digt + lista2->digt; while(lista1->prox != NULL && lista2->prox != NULL){ if(val>9){ paux->prox->digt=1; paux->digt=val-10; } else paux->digt=+val; lista1=lista1->prox; lista2=lista2->prox; paux=paux->prox; val=lista1->digt+lista2->digt; } return paux; } int main(){ pont lista1, lista2, lista3; char string1[MAX], string2[MAX]; int i=0; scanf("%s", string1); scanf("%s", string2); while(i<strlen(string1)){ lista1=alocacao(lista1,atoi(&string1[i])); i++; } i=0; while(i<strlen(string2)){ lista2=alocacao(lista2,atoi(&string2[i])); i++; } printf("O valor é: "); imprime(lista1); return 0; } Quote Link to comment Share on other sites More sharing options...
Administrators Fernando Mercês Posted December 14, 2021 at 03:25 PM Administrators Share Posted December 14, 2021 at 03:25 PM Resolveu já? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.