Mudanças entre as edições de "Equipe2-2015-1"
Linha 84: | Linha 84: | ||
#include <stdlib.h> | #include <stdlib.h> | ||
#include <string.h> | #include <string.h> | ||
− | + | ||
typedef struct Tcorredor{ | typedef struct Tcorredor{ | ||
char nome[50]; | char nome[50]; | ||
Linha 96: | Linha 96: | ||
struct Tcorredor *prox; | struct Tcorredor *prox; | ||
} piloto; | } piloto; | ||
− | + | ||
piloto *lista; | piloto *lista; | ||
FILE *p_arq; | FILE *p_arq; | ||
− | + | ||
void atualizar_lista(){ | void atualizar_lista(){ | ||
piloto *p; | piloto *p; | ||
Linha 118: | Linha 118: | ||
} | } | ||
} | } | ||
− | + | ||
void add_piloto(){ | void add_piloto(){ | ||
piloto *novo; | piloto *novo; | ||
Linha 142: | Linha 142: | ||
atualizar_lista(); | atualizar_lista(); | ||
} | } | ||
− | + | ||
void listar_pilotos(){ | void listar_pilotos(){ | ||
char aux; | char aux; | ||
Linha 155: | Linha 155: | ||
printf("\n-----------------------------------------\n"); | printf("\n-----------------------------------------\n"); | ||
} | } | ||
− | + | ||
void deletar_piloto(){ | void deletar_piloto(){ | ||
piloto *pa; // anterio | piloto *pa; // anterio | ||
Linha 162: | Linha 162: | ||
printf("Digite o nome do corredor que deseja apagar:\n"); | printf("Digite o nome do corredor que deseja apagar:\n"); | ||
scanf("%s",nome_del); | scanf("%s",nome_del); | ||
− | + | pa=lista; | |
for(pp=lista->prox;pp!=NULL;pp=pp->prox){ | for(pp=lista->prox;pp!=NULL;pp=pp->prox){ | ||
if(strcmp(nome_del,pp->nome)==0){ | if(strcmp(nome_del,pp->nome)==0){ | ||
Linha 173: | Linha 173: | ||
} | } | ||
} | } | ||
− | + | ||
atualizar_lista(); | atualizar_lista(); | ||
} | } | ||
− | + | ||
void classificacao(){ | void classificacao(){ | ||
piloto *p; | piloto *p; | ||
Linha 188: | Linha 188: | ||
printf("\n\n\n"); | printf("\n\n\n"); | ||
} | } | ||
− | + | ||
void main(){ | void main(){ | ||
int opcao; | int opcao; |
Edição das 11h50min de 25 de junho 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 adquiri o conhecimento. Mas uma dificuldade não superada foi de a lista pilotos antes que fosse adicionados, ou seja, não há pilotos pré-cadastrados, o programa abre com uma lista vazia de pilotos.
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 |
---|