Mudanças entre as edições de "Equipe2-2015-1"
Linha 87: | Linha 87: | ||
Caros alunos! | Caros alunos! | ||
− | Eu esperava muito mais do trabalho de vocês. Muito mais mesmo. O desempenho que vocês vinham tendo na disciplina não refletiu o que eu esperava do trabalho. O programa não atendeu aos requisitos iniciais, porém, foram feitas novas implementações interessantes. Ainda faltou um cuidado maior com a wiki, o código fonte não está comentado, | + | Eu esperava muito mais do trabalho de vocês. Muito mais mesmo. O desempenho que vocês vinham tendo na disciplina não refletiu o que eu esperava do trabalho. O programa não atendeu aos requisitos iniciais, porém, foram feitas novas implementações interessantes. Ainda faltou um cuidado maior com a wiki, o código fonte não está comentado, entre outros problemas identificados que conversamos na apresentação. |
− | Por isso minha nota para a equipe toda é: | + | Por isso minha nota para a equipe toda é: 7. |
Douglas A. | Douglas A. |
Edição atual tal como às 10h18min de 1 de julho de 2015
Integrantes
ADONIS ANDREAS MARINOS
ANDERSON GASPAR DE MEDEIROS
DANIEL TREVISAN TATSCH
Descrição da atividade principal
Um sistema de telemetria recebe, a cada volta de uma corrida, um arquivo de dados contendo informações sobre o tempo da volta e o número do carro do piloto em uma corrida. Implemente um sistema que importe esses arquivos e atualize os dados de tempos de todos os pilotos. No entanto, é preciso ter um cadastro de pilotos com seus respectivos números dos carros. A cada volta, ou seja, a cada arquivo lido, é preciso apresentar na tela a posição dos pilotos na corrida. Portanto é preciso cadastrar novos pilotos, remover pilotos e imprimir classificação dos pilotos. O sistema deve conter um menu de opções para realizar as atividades, em loop contínuo e com opção para sair.
Descrição da atividade específica
- Fazer uso
- Comando swith
- Lista encadeada
- Ponteiros
- Alocação Dinâmica de Memória
- Funções para tratamento de arquivo
- Exemplo da estrutura (encadeada)
struct TPiloto{ int numero; char nome[40]; char equipe[20]; struct TPiloto *prox; };
- Exemplo de arquivo (pilotos.dat)
cat pilotos.dat 1 JOAO GS-SPORT 2 SANTOS KS-RACING 3 SILVA JM-SPORTS 4 WAGNER TK-COMPETITION 5 BELLO GS-SPORT
- Exemplo de voltas (volta1.dat)
cat volta1.dat 1 1:15:290 2 1:15:370 3 1:15:900 4 1:16:120 5 1:16:320
- Exemplo de voltas (volta2.dat)
cat volta2.dat 2 1:15:190 1 1:15:470 3 1:15:900 5 1:15:120 4 1:16:050
[...]
Atividades
Distribuição
ADONIS ANDREAS MARINOS - Desenvolvimento da interface e criação do código principal do programa;
ANDERSON GASPAR DE MEDEIROS - Desenvolvimento de funções auxiliares; - Desenvolver a interface do programa no terminal;
DANIEL TREVISAN TATSCH - Desenvolvimento de funções auxiliares; - Realizar testes e detectando os possíveis bugs e erros no programa;
Desenvolvimento
O foram desenvolvidos subsistemas lógicos que contemplam as operações de lista pilotos, adicionar e remover, e a classificação. E um sistema principal que gerência todo o programa.
Conclusão
No desenvolvimento desse projeto nos deparamos com algumas dificuldades, que foram superadas com muita pesquisa e persistência em adquirir o conhecimento. Em relação trabalho e o comprometimento, todos desempenharam um ótimo papel para a conclusão do projeto. De acordo com o esforço de cada um em relação a confecção do projeto, as notas são:
Adonis: 10,0 Daniel: 10,0 Anderson: 10,0
Avaliação (professor)
Caros alunos!
Eu esperava muito mais do trabalho de vocês. Muito mais mesmo. O desempenho que vocês vinham tendo na disciplina não refletiu o que eu esperava do trabalho. O programa não atendeu aos requisitos iniciais, porém, foram feitas novas implementações interessantes. Ainda faltou um cuidado maior com a wiki, o código fonte não está comentado, entre outros problemas identificados que conversamos na apresentação.
Por isso minha nota para a equipe toda é: 7.
Douglas A.
Código fonte
<syntaxhighlight lang=c>
- include <stdio.h>
- include <stdlib.h>
- include <string.h>
typedef struct Tcorredor{ char nome[50]; char equipe[50]; int min_v1; int seg_v1; int mil_v1; int min_v2; int seg_v2; int mil_v2; struct Tcorredor *prox; } piloto;
piloto *lista; FILE *p_arq;
void abrir_arquivo() {
FILE *fp;
int res;
if ((fp = fopen("pilotos.dat", "r")) == NULL) { printf("Falha na abertura do arquivo.\n"); return; } while(1) {
piloto *novo = malloc(sizeof(piloto));
if((res = fscanf(fp,"%s %s", novo->nome, novo->equipe)) == EOF) { break; } if(lista == NULL) { lista = novo; }else { novo->prox = lista->prox; lista->prox = novo; } } fclose(fp); }
void atualizar_lista(){
piloto *p;
FILE *p_arq2;
FILE *p_arq3;
p_arq = fopen ("pilotos.dat","w");
p_arq2 = fopen ("volta1.dat","w");
p_arq3 = fopen ("volta2.dat","w");
if(lista!=NULL){
for(p=lista;p!=NULL;p=p->prox){
fprintf(p_arq, "%s %s\n",p->nome,p->equipe);
fprintf(p_arq2, "%d:%d:%d\n",p->min_v1,p->seg_v1,p->mil_v1);
fprintf(p_arq3, "%d:%d:%d\n",p->min_v2,p->seg_v2,p->mil_v2);
}
fclose(p_arq);
fclose(p_arq2);
fclose(p_arq3);
}
}
void add_piloto(){ piloto *novo; novo = (piloto*) malloc(sizeof(piloto)); printf("Entre com o nome do novo piloto:\n"); scanf("%s",novo->nome); printf("Entre com a equipe do novo corredor:\n"); scanf("%s",novo->equipe); printf("Entre com o tempo da primeria volta: \n(Primeiro minutos, depois segundos e milésimos)\n"); scanf("%d",&novo->min_v1); scanf("%d",&novo->seg_v1); scanf("%d",&novo->mil_v1); printf("Entre com o tempo da segunda volta:\n"); scanf("%d",&novo->min_v2); scanf("%d",&novo->seg_v2); scanf("%d",&novo->mil_v2); if(lista==NULL){ lista = novo; }else{ novo->prox = lista->prox; lista->prox = novo; } }
void listar_pilotos(){ piloto *p; printf("\nLista dos Pilotos e Equipes Cadastrados:\n"); printf("\n-------------------------------------------------------------------------------\n"); for (p = lista; p != NULL; p = p->prox) { printf( "%s %s\n", p->nome, p->equipe); printf("\n-------------------------------------------------------------------------------\n"); } }
void deletar_piloto(){ piloto *pa; // anterio piloto *pp; // proximo char nome_del[50]; printf("Digite o nome do corredor que deseja apagar:\n"); scanf("%s",nome_del);
pa=lista;
for(pp=lista->prox;pp!=NULL;pp=pp->prox){ if(strcmp(nome_del,pp->nome)==0){ pa->prox=pp->prox; free(pp); printf("\nPiloto removido com sucesso!\n"); break; } else{ pa=pp; } } }
void estatistica(){ piloto *p; int i=0; int segundos_corredores[50]; for(p=lista;p!=NULL;p=p->prox){ //segundos_corredores[i]=(p->min_v1*60000+p->min_v2*60000+p->seg_v1*1000+p->seg_v2*1000+p->mil_v1+p->mil_v2); printf("TEMPO CORREDOR %s PRIMEIRA VOLTA-> %d:%d:%d\n",p->nome,p->min_v1,p->seg_v1,p->mil_v1); printf("TEMPO CORREDOR %s SEGUNDA VOLTA-> %d:%d:%d\n",p->nome,p->min_v2,p->seg_v2,p->mil_v2); i++; } printf("\n\n\n"); }
void main(){ int opcao; lista=NULL;
abrir_arquivo();
int i=1; while(i==1){ printf("O que deseja fazer: \n1-Ver lista de pilotos \n2-Adicionar piloto \n3-Remover piloto \n4-Estatística \n5-Sair\n"); scanf("%d",&opcao); switch(opcao){ case 1: system("clear"); listar_pilotos(); break; case 2: system("clear"); add_piloto(); break; case 3: system("clear"); deletar_piloto(); break; case 4: system ("clear"); estatistica(); break; case 5:
atualizar_lista();
i=0; break; } } }