Mudanças entre as edições de "Equipe2-2015-1"
(19 revisões intermediárias por 4 usuários não estão sendo mostradas) | |||
Linha 9: | Linha 9: | ||
=Descrição da atividade principal= | =Descrição da atividade principal= | ||
− | Um sistema de telemetria recebe, a cada volta, um arquivo de dados contendo informações sobre o tempo da volta e o número do carro do piloto. 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. | + | 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== | ==Descrição da atividade específica== | ||
Linha 28: | Linha 28: | ||
char nome[40]; | char nome[40]; | ||
char equipe[20]; | char equipe[20]; | ||
− | struct | + | struct TPiloto *prox; |
}; | }; | ||
Linha 60: | Linha 60: | ||
==Distribuição== | ==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== | ==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== | ==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= | =Código fonte= | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
#include <stdio.h> | #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 | + | 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; | ||
+ | } | ||
+ | } | ||
+ | } |
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; } } }