Equipe2-2015-1
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
Conclusão
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 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, "Nome:%s Equipe:%s\n",p->nome,p->equipe); fprintf(p_arq2, "%d:%d:%d",p->min_v1,p->seg_v1,p->mil_v1); fprintf(p_arq3, "%d:%d:%d",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; } atualizar_lista(); }
void listar_pilotos(){ char aux; printf("Lista de pilotos atuais:\n"); p_arq = fopen("pilotos.dat","r"); aux = getc(p_arq); while(aux!=EOF){ printf("%c",aux); aux=getc(p_arq); } fclose (p_arq); 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); break; } else{ pa=pp; } }
atualizar_lista(); }
void classificacao(){ 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 do corredor %s em milésimos: %d\n",p->nome,segundos_corredores[i]); i++; } printf("\n\n\n"); }
void main(){ int opcao; lista=NULL; int i=1; while(i==1){ printf("O que deseja fazer: \n1-Ver lista de pilotos \n2-Adicionar piloto \n3-Remover piloto \n4-Classificação \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"); classificacao(); break; case 5: i=0; break; } } }
<< | Equipe2-2015-1 |
---|