Ir para conteúdo
Fórum Script Brasil

Beatriz Rachel

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Sobre Beatriz Rachel

Últimos Visitantes

831 visualizações

Beatriz Rachel's Achievements

0

Reputação

  1. especificação do trabalho: Para este trabalho considere um conjunto de arquivos de entrada binários (partições) cada um contendo uma quantidade de registros do tipo Candidato, conforme definido a seguir, dispostos em ordem crescente de acordo com o nome dos candidatos: struct candidato { char inscr[10]; char nome[44]; int periodo; char turno[3]; int posicao; char curso[30]; }; typedef struct candidato Candidato; Os arquivos de entrada estão nomeados da forma “candidatos.NNN”, onde “NNN” é uma numeração crescente indicando a ordem de criação do arquivo, variando de 000 a 068. Estes arquivos estão disponíveis no link: https://www.dropbox.com/sh/h6vb96n0rjlielz/FcnrrQIGk5 Considerando que o sistema operacional pode manter no máximo 7 arquivos abertos simultaneamente, implemente um programa em C que realiza a intercalação destes arquivos empregando a estratégia de intercalação ótima. O arquivo de saída deve ser do tipo texto, conter todos os registros ordenados de acordo com o nome do candidato e receber o nome “candidatos.txt”. Além disso, o programa deve determinar e imprimir o tempo decorrido para a execução da intercalação e calcular e imprimir o número de passos na etapa de intercalação.
  2. Olá pessoal, gostaria de tirar algumas duvidas sobre meu código. Tenho que entregar hoje esse trabalho de estrutura de dados e estou ferrada. Isso foi o que consegui fazer.. mas não consigo rodar.. Será que alguém tem alguma dica do que pode estar errado, ou se estou perdida mesmo e não tem mais salvação? Quem puder ajudar eu agradeço muito!!!! O "programa" está em (uma tentativa de) C. Segue: #include <iostream> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ struct candidato { char inscr[10]; char nome[44]; int periodo; char turno[3]; int posicao; char curso[30]; }; typedef struct candidato Candidato; struct Nolista{ char *nomearquivo[14]; struct Nolista *prox; }; struct NolistaFiles{ FILE *arquivo; struct Nolista *prox; }; //Usar uma lista que contém os nomes dos arquivos a ordenar //A cada passo do algoritmo, retirar os 7 primeiros itens da //lista, intercalá-los, colocar o arquivo resultante no final da lista //O algoritmo pára quando a lista tiver apenas 1 arquivo(que será o resultante) int main(void) { Nolista *lista_nomearquivo, *lista_nomearquivoatual; lista_nomearquivoatual = lista_nomearquivo; //ponteiros para lista de nomes de arquivos NolistaFiles *lista_arquivos, *lista_arquivosatual; lista_arquivosatual = lista_arquivos; //ponteiros para lista de arquivos //FILE *saida, *file1, *file2, *file3, *file4, *file5, *file6; FILE *saida; saida = fopen("candidatos.txt","a"); char nomearquivo[14]; //guarda nome de cada arquivo no while que constrói os nomes int numeroarquivo=000; //numero do nome do arquivo que será construido no while que constrói os nomes int totalarquivos - 68; //total de 68 arquivos int contadorarquivos = 0; //contador de arquivos lidos while (contadorarquivos < totalarquivos){ //enquanto ainda existir algum arquivo //constrói lista dos nomes dos arquivos int i = 1; while (i <8) { nomearquivo = strcat("candidatos.", numeroarquivo); lista_nomearquivoatual = nomearquivo; lista_nomearquivoatual = lista_nomearquivoatual.prox; numeroarquivo++; i++; } //abre 6 arquivos na lista de arquivos lista_nomearquivoatual = lista_nomearquivo; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_arquivosatual = lista_arquivos; while (lista_arquivosatual != NULL) { //Enquanto não chegar ao fim da lista de arquivos, while(!feof(lista_arquivosatual.arquivo) { //enquanto não encontrar o fim do arquivo atual, ler dados de cada candidato. Candidato candidato_lido; fgets(candidato_lido.inscr, 10, lista_arquivosatual); fgets(candidato_lido.nome, 44, lista_arquivosatual); fgets(candidato_lido.periodo, 2, lista_arquivosatual); fgets(candidato_lido.turno, 3, lista_arquivosatual); fgets(candidato_lido.posicao, 3, lista_arquivosatual); fgets(candidato_lido.curso, 30, lista_arquivosatual); fprintf (saida, candidato_lido.inscr, candidato_lido.nome, candidato_lido.periodo, candidato_lido.turno, candidato_lido.posicao, candidato_lido.curso, "\n"); //escreve dados lidos no arquivo saida } lista_arquivosatual = lista_arquivosatual.prox; //ler próximo arquivo } //fecha 6 arquivos lista_arquivosatual = lista_arquivos; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); contadorarquivos = contadorarquivos+6; //conta +6 arquivos lidos } fclose(saida); //fecha arquivo de saida system("pause"); return 0; }
  3. Olá pessoal, gostaria de tirar algumas duvidas sobre meu código. Tenho que entregar hoje esse trabalho de estrutura de dados e estou ferrada. Isso foi o que consegui fazer.. mas não consigo rodar.. Será que alguém tem alguma dica do que pode estar errado, ou se estou perdida mesmo e não tem mais salvação? Quem puder ajudar eu agradeço muito!!!! O "programa" está em (uma tentativa de) C. Segue código: (coloquei a especificação do trabalho no comentário) #include <iostream> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ struct candidato { char inscr[10]; char nome[44]; int periodo; char turno[3]; int posicao; char curso[30]; }; typedef struct candidato Candidato; struct Nolista{ char *nomearquivo[14]; struct Nolista *prox; }; struct NolistaFiles{ FILE *arquivo; struct Nolista *prox; }; //Usar uma lista que contém os nomes dos arquivos a ordenar //A cada passo do algoritmo, retirar os 7 primeiros itens da //lista, intercalá-los, colocar o arquivo resultante no final da lista //O algoritmo pára quando a lista tiver apenas 1 arquivo(que será o resultante) int main(void) { Nolista *lista_nomearquivo, *lista_nomearquivoatual; lista_nomearquivoatual = lista_nomearquivo; //ponteiros para lista de nomes de arquivos NolistaFiles *lista_arquivos, *lista_arquivosatual; lista_arquivosatual = lista_arquivos; //ponteiros para lista de arquivos //FILE *saida, *file1, *file2, *file3, *file4, *file5, *file6; FILE *saida; saida = fopen("candidatos.txt","a"); char nomearquivo[14]; //guarda nome de cada arquivo no while que constrói os nomes int numeroarquivo=000; //numero do nome do arquivo que será construido no while que constrói os nomes int totalarquivos - 68; //total de 68 arquivos int contadorarquivos = 0; //contador de arquivos lidos while (contadorarquivos < totalarquivos){ //enquanto ainda existir algum arquivo //constrói lista dos nomes dos arquivos int i = 1; while (i <8) { nomearquivo = strcat("candidatos.", numeroarquivo); lista_nomearquivoatual = nomearquivo; lista_nomearquivoatual = lista_nomearquivoatual.prox; numeroarquivo++; i++; } //abre 6 arquivos na lista de arquivos lista_nomearquivoatual = lista_nomearquivo; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_arquivosatual = lista_arquivos; while (lista_arquivosatual != NULL) { //Enquanto não chegar ao fim da lista de arquivos, while(!feof(lista_arquivosatual.arquivo) { //enquanto não encontrar o fim do arquivo atual, ler dados de cada candidato. Candidato candidato_lido; fgets(candidato_lido.inscr, 10, lista_arquivosatual); fgets(candidato_lido.nome, 44, lista_arquivosatual); fgets(candidato_lido.periodo, 2, lista_arquivosatual); fgets(candidato_lido.turno, 3, lista_arquivosatual); fgets(candidato_lido.posicao, 3, lista_arquivosatual); fgets(candidato_lido.curso, 30, lista_arquivosatual); fprintf (saida, candidato_lido.inscr, candidato_lido.nome, candidato_lido.periodo, candidato_lido.turno, candidato_lido.posicao, candidato_lido.curso, "\n"); //escreve dados lidos no arquivo saida } lista_arquivosatual = lista_arquivosatual.prox; //ler próximo arquivo } //fecha 6 arquivos lista_arquivosatual = lista_arquivos; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); contadorarquivos = contadorarquivos+6; //conta +6 arquivos lidos } fclose(saida); //fecha arquivo de saida system("pause"); return 0; }
×
×
  • Criar Novo...