Ir para conteúdo
Fórum Script Brasil

jorgemitsu

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre jorgemitsu

jorgemitsu's Achievements

0

Reputação

  1. Boa tarde! Estou com certas dificuldades em se trabalhar com Pilha, ponteiros e alocação dinâmica: A lógica do programa é receber sequencia de padrões e depois a sequencia final, e contar quantas vezes a sequencia de padrões foram encontradas em sequencia final. Ao debugar este código, na função push o programa trava inesperadamente, a lógica dos restantes do programa não está completa, pois não consigo debugar p/ dar a continuidade... o que tem de errado no código galera? Sou iniciante aqui no forum e qualquer ajuda é bem-vinda! Obrigado. #include <stdio.h> #include <stdlib.h> #include <string.h> struct pilha{ char *valor; int t; }; typedef struct pilha * Pilha; int comparaPadrao (const void* a, const void* b){ Pilha a1 = (Pilha*)a; Pilha b1 = (Pilha*)b; return strcmp(a1->valor, b1->valor); } void push (Pilha p, char *e){ p->valor[(p->t)++] = e; } char pop (Pilha p){ return p->valor[--(p->t)]; } char topo(Pilha p){ return p->valor[(p->t - 1)]; } void destroiPilha(Pilha p){ free(p); } Pilha novaPilha(){ Pilha p; //p = malloc (sizeof (struct pilha)); p = malloc (sizeof (Pilha)); if (p == NULL){ printf ("Algum erro ocorreu !\n"); exit (-1); } p->t = 0; return p; } void detectaPadrao(Pilha p, char *vet, int qtd){ int cont = 0; char* padFinal; char* pad; char espaco = ' '; padFinal = malloc(sizeof(char) * 1000); for(cont = 0; cont < qtd; cont++){ *pad = pop(p); strcat(padFinal, pad); for(cont=0; vet[cont] != ''; cont++){ if(*pad == vet[cont]){ strcat(*padFinal, espaco); strcat(*padFinal,cont); } } } printf("%s", pad); } int main() { int qtd = 0, cont = 0, tamanho = 0, qtdTotal = 0; char *padrão; Pilha p = novaPilha(); printf("\nEntre com quantidade de padrão: "); scanf("%d", &qtd); fflush(stdin); for(cont = 0; cont < qtd; cont++){ printf("\nEntre com o tamanho do %d padrão:", cont+1); scanf("%d", &tamanho); fflush(stdin); qtdTotal += tamanho; padrão = malloc(sizeof(char)*tamanho); if(padrão == NULL){ printf("\nERRO!"); exit(-1); } printf("\nEntre com o %d padrão:", cont+1); gets(padrão); push(p, padrão); } //qtdTotal += printf("\nEntre com o tamanho da sequencia:"); scanf("%d", &tamanho); fflush(stdin); printf("\nEntre com a sequencia:", cont+1); gets(padrão); qsort(p, qtd, sizeof(Pilha), comparaPadrao); detectaPadrao(p, padrão, qtd); return 0; }
×
×
  • Criar Novo...