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;
//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
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");
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;
Pergunta
Beatriz Rachel
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>
Editado por Beatriz Rachel/* 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;
}
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.