
ISA.Fernandes
Membros-
Total de itens
2 -
Registro em
-
Última visita
Sobre ISA.Fernandes

ISA.Fernandes's Achievements
0
Reputação
-
Boa Noite ! Preciso de uma ajudinha, estou tentando montar uma estrutura que ordene os caracteres de um arquivo.txt , some a quantidade de cada um e imprima na tela, mas não consigo finalizar este código, alguém poderia me ajudar por favor...Preciso para no máximo daqui a dois dias.. O Arquivo que irá puxar é este: Em comemoração ao 25o. aniversário do filme De Volta para o Futuro, haverá um relançamento no cinema do "clássico" dos anos 1980 em cópia digital. E foi divulgado nesta quarta-feira (11) a capa do pôster dessa versão restaurada do filme, que será lançada em Blu-Ray. Confira no link abaixo a imagem ampliada. tem que sair desse jeito na tela: Char: ( Freq: 1 Char: ) Freq: 1 Char: 0 Freq: 1 Char: 2 Freq: 1 Char: 5 Freq: 1 Char: 8 Freq: 1 Char: 9 Freq: 1 Char: B Freq: 1 Char: C Freq: 1 Char: D Freq: 1 Char: F Freq: 1 ... ________________________________________________________________________________ __________________________________________________ código que tenho: CODE #include<stdio.h> #include<stdlib.h> #include<string.h> //DECLARANDO AS ESTRUTURAS------------------------------------------------------------------------------- typedef struct dado { int peso; char caracter; struct dado *esq; struct dado *dir; }Dado; typedef struct nodelista { struct dado *node; struct nodelista *prox; }NodeLista; //------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------ //CRIANDO A PRIMEIRA FUNÇÃO------------------------------------------------------------------------------ NodeLista *NovaNodeLista() //função que cria uma nova lista. { return NULL; } //------------------------------------------------------------------------------------------------------------------ //CRIANDO A SEGUNDA FUNÇÃO - CRIAÇÃO DO ENDEREÇO DE MEM / ORDENAÇÃO------------------- NodeLista *PushOrdenada(NodeLista *nd, int p, char l) { //Criando a caixinha Dado *novodado=(Dado*)malloc(sizeof(Dado)); novodado->peso=p; novodado->caracter=l; novodado->esq=NULL; novodado->dir=NULL; NodeLista *novanodelista=(NodeLista*)malloc(sizeof(NodeLista)); novanodelista->node=novodado; novanodelista->prox=NULL; //no caso se listIver estar vazia if(nd==NULL) { return novanodelista; } // no caso se lista tive apenas um elemento else if(nd->prox==NULL) { if(nd->node->peso>=novanodelista->node->peso) { novanodelista->prox=nd; return novanodelista; } else { nd->prox=novanodelista; novanodelista->prox=NULL; return nd; } } // no caso se lista tiver mais de um elemento else { if(nd->node->peso>=novanodelista->node->peso) { novanodelista->prox=nd; return novanodelista; } NodeLista *aux=(NodeLista*)malloc(sizeof(NodeLista)); aux=nd; while(aux->prox!=NULL && novanodelista->node->peso > aux->prox->node->peso) { aux=aux->prox; } if(aux->prox==NULL) { aux->prox=novanodelista; novanodelista->prox=NULL; return nd; } novanodelista->prox=aux->prox; aux->prox=novanodelista; return nd; } } //------------------------------------------------------------------------------------------------------------------- //FUNÇÃO QUE IMPRIME O RESULTADO NA TELA------------------------------------------------------------- void ImprimeLista(NodeLista *nd) { if(nd==NULL) { printf("Erro: A fila esta vazia!\n"); } else { NodeLista *aux; aux=nd; while(aux!=NULL) { printf("Char: %c Freq: %d\n", aux->node->caracter, aux->node->peso); aux=aux->prox; } } } //------------------------------------------------------------------------------------------------------------------- //FUNÇÃO PRINCIPAL MAIN() ---------------------------------------------------------------------------------- int main(int argc, char *argv[]) { //declarando as variáveis int i,p; int TabAscii; int VetorInteiros[256]; char VetChar[256]; char l,r,k; l='a'; r='d'; k='p'; char *VetorChar=(char*)malloc(512*sizeof(char)); //zerando os vetores for(i=0; i<=255; i++) { VetorInteiros[i]=0; VetChar[i] = i; } //abrindo o arquivo FILE *arquivo=fopen("Arquivo.txt", "r"); if(arquivo !=NULL) printf("Arquivo aberto com sucesso!\n"); else printf("Não foi possível abrir o arquivo!\n"); //copiando do arquivo para o ponteiro de caracteres while(!feof(arquivo)) { fscanf(arquivo,"%[^\n]", VetorChar); } //contando as repetições de cada caracter for(i=0; (i<strlen(VetorChar) && VetorChar[i] != '\n'); i++) { TabAscii = VetorChar[i]; VetorInteiros[TabAscii]++; } for(i=0; i<256; i++) //imprimindo o ponteiro com a frequencia { if (VetorInteiros[i] != 0) printf("Char: %c Freq: %d\n", VetChar[i], VetorInteiros[i]); } NodeLista *nd; nd=NovaNodeLista(); for(i=0;i<256;i++) { if(VetorInteiros[i]!=0) { nd=PushOrdenada(nd, VetorInteiros[i], VetChar[i]); } } printf("%c\n", nd->node->caracter); ImprimeLista(nd); fclose(arquivo); system("pause"); } //FINAL DA FUNÇÃO PRINCIPAL----------------------------------------------------------------------------------
-
Boa Noite ! Preciso de uma ajudinha, estou tentando montar uma estrutura que ordene os caracteres de um arquivo.txt , some a quantidade de cada um e imprima na tela, mas não consigo finalizar este código, alguém poderia me ajudar por favor...Preciso para no máximo daqui a dois dias.. O Arquivo que irá puxar é este: Em comemoração ao 25o. aniversário do filme De Volta para o Futuro, haverá um relançamento no cinema do "clássico" dos anos 1980 em cópia digital. E foi divulgado nesta quarta-feira (11) a capa do pôster dessa versão restaurada do filme, que será lançada em Blu-Ray. Confira no link abaixo a imagem ampliada. tem que sair desse jeito na tela: Char: ( Freq: 1 Char: ) Freq: 1 Char: 0 Freq: 1 Char: 2 Freq: 1 Char: 5 Freq: 1 Char: 8 Freq: 1 Char: 9 Freq: 1 Char: B Freq: 1 Char: C Freq: 1 Char: D Freq: 1 Char: F Freq: 1 ... __________________________________________________________________________________________________________________________________ código que tenho: #include<stdio.h> #include<stdlib.h> #include<string.h> //DECLARANDO AS ESTRUTURAS------------------------------------------------------------------------------- typedef struct dado { int peso; char caracter; struct dado *esq; struct dado *dir; }Dado; typedef struct nodelista { struct dado *node; struct nodelista *prox; }NodeLista; //------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------ //CRIANDO A PRIMEIRA FUNÇÃO------------------------------------------------------------------------------ NodeLista *NovaNodeLista() //função que cria uma nova lista. { return NULL; } //------------------------------------------------------------------------------------------------------------------ //CRIANDO A SEGUNDA FUNÇÃO - CRIAÇÃO DO ENDEREÇO DE MEM / ORDENAÇÃO------------------- NodeLista *PushOrdenada(NodeLista *nd, int p, char l) { //Criando a caixinha Dado *novodado=(Dado*)malloc(sizeof(Dado)); novodado->peso=p; novodado->caracter=l; novodado->esq=NULL; novodado->dir=NULL; NodeLista *novanodelista=(NodeLista*)malloc(sizeof(NodeLista)); novanodelista->node=novodado; novanodelista->prox=NULL; //no caso se listIver estar vazia if(nd==NULL) { return novanodelista; } // no caso se lista tive apenas um elemento else if(nd->prox==NULL) { if(nd->node->peso>=novanodelista->node->peso) { novanodelista->prox=nd; return novanodelista; } else { nd->prox=novanodelista; novanodelista->prox=NULL; return nd; } } // no caso se lista tiver mais de um elemento else { if(nd->node->peso>=novanodelista->node->peso) { novanodelista->prox=nd; return novanodelista; } NodeLista *aux=(NodeLista*)malloc(sizeof(NodeLista)); aux=nd; while(aux->prox!=NULL && novanodelista->node->peso > aux->prox->node->peso) { aux=aux->prox; } if(aux->prox==NULL) { aux->prox=novanodelista; novanodelista->prox=NULL; return nd; } novanodelista->prox=aux->prox; aux->prox=novanodelista; return nd; } } //------------------------------------------------------------------------------------------------------------------- //FUNÇÃO QUE IMPRIME O RESULTADO NA TELA------------------------------------------------------------- void ImprimeLista(NodeLista *nd) { if(nd==NULL) { printf("Erro: A fila esta vazia!\n"); } else { NodeLista *aux; aux=nd; while(aux!=NULL) { printf("Char: %c Freq: %d\n", aux->node->caracter, aux->node->peso); aux=aux->prox; } } } //------------------------------------------------------------------------------------------------------------------- //FUNÇÃO PRINCIPAL MAIN() ---------------------------------------------------------------------------------- int main(int argc, char *argv[]) { //declarando as variáveis int i,p; int TabAscii; int VetorInteiros[256]; char VetChar[256]; char l,r,k; l='a'; r='d'; k='p'; char *VetorChar=(char*)malloc(512*sizeof(char)); //zerando os vetores for(i=0; i<=255; i++) { VetorInteiros[i]=0; VetChar[i] = i; } //abrindo o arquivo FILE *arquivo=fopen("Arquivo.txt", "r"); if(arquivo !=NULL) printf("Arquivo aberto com sucesso!\n"); else printf("Não foi possível abrir o arquivo!\n"); //copiando do arquivo para o ponteiro de caracteres while(!feof(arquivo)) { fscanf(arquivo,"%[^\n]", VetorChar); } //contando as repetições de cada caracter for(i=0; (i<strlen(VetorChar) && VetorChar[i] != '\n'); i++) { TabAscii = VetorChar[i]; VetorInteiros[TabAscii]++; } for(i=0; i<256; i++) //imprimindo o ponteiro com a frequencia { if (VetorInteiros[i] != 0) printf("Char: %c Freq: %d\n", VetChar[i], VetorInteiros[i]); } NodeLista *nd; nd=NovaNodeLista(); for(i=0;i<256;i++) { if(VetorInteiros[i]!=0) { nd=PushOrdenada(nd, VetorInteiros[i], VetChar[i]); } } printf("%c\n", nd->node->caracter); ImprimeLista(nd); fclose(arquivo); system("pause"); } //FINAL DA FUNÇÃO PRINCIPAL----------------------------------------------------------------------------------