Mudanças entre as edições de "Equipe2-2015-1"
(11 revisões intermediárias por 4 usuários não estão sendo mostradas) | |||
Linha 77: | Linha 77: | ||
==Conclusão== | ==Conclusão== | ||
− | No desenvolvimento desse projeto nos deparamos com algumas dificuldades, que foram superadas com muita pesquisa e persistência em | + | 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= | ||
Linha 84: | Linha 98: | ||
#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 110: | ||
struct Tcorredor *prox; | struct Tcorredor *prox; | ||
} piloto; | } piloto; | ||
− | + | ||
piloto *lista; | piloto *lista; | ||
FILE *p_arq; | 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(){ | void atualizar_lista(){ | ||
piloto *p; | piloto *p; | ||
Linha 107: | Linha 146: | ||
p_arq2 = fopen ("volta1.dat","w"); | p_arq2 = fopen ("volta1.dat","w"); | ||
p_arq3 = fopen ("volta2.dat","w"); | p_arq3 = fopen ("volta2.dat","w"); | ||
− | if(lista!=NULL){ | + | if(lista!=NULL){ |
for(p=lista;p!=NULL;p=p->prox){ | for(p=lista;p!=NULL;p=p->prox){ | ||
− | fprintf(p_arq, " | + | fprintf(p_arq, "%s %s\n",p->nome,p->equipe); |
− | fprintf(p_arq2, "%d:%d:%d",p->min_v1,p->seg_v1,p->mil_v1); | + | fprintf(p_arq2, "%d:%d:%d\n",p->min_v1,p->seg_v1,p->mil_v1); |
− | fprintf(p_arq3, "%d:%d:%d",p->min_v2,p->seg_v2,p->mil_v2); | + | fprintf(p_arq3, "%d:%d:%d\n",p->min_v2,p->seg_v2,p->mil_v2); |
} | } | ||
fclose(p_arq); | fclose(p_arq); | ||
Linha 118: | Linha 157: | ||
} | } | ||
} | } | ||
− | + | ||
void add_piloto(){ | void add_piloto(){ | ||
piloto *novo; | piloto *novo; | ||
Linha 140: | Linha 179: | ||
lista->prox = novo; | lista->prox = novo; | ||
} | } | ||
− | |||
} | } | ||
− | + | ||
void listar_pilotos(){ | void listar_pilotos(){ | ||
− | + | piloto *p; | |
− | printf(" | + | 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(){ | void deletar_piloto(){ | ||
piloto *pa; // anterio | piloto *pa; // anterio | ||
Linha 162: | Linha 197: | ||
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){ | ||
pa->prox=pp->prox; | pa->prox=pp->prox; | ||
free(pp); | free(pp); | ||
+ | printf("\nPiloto removido com sucesso!\n"); | ||
break; | break; | ||
} | } | ||
Linha 173: | Linha 209: | ||
} | } | ||
} | } | ||
− | |||
− | |||
} | } | ||
− | + | ||
− | void | + | void estatistica(){ |
piloto *p; | piloto *p; | ||
int i=0; | int i=0; | ||
int segundos_corredores[50]; | int segundos_corredores[50]; | ||
for(p=lista;p!=NULL;p=p->prox){ | 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); | + | //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(" | + | 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++; | i++; | ||
} | } | ||
printf("\n\n\n"); | printf("\n\n\n"); | ||
} | } | ||
− | + | ||
void main(){ | void main(){ | ||
int opcao; | int opcao; | ||
lista=NULL; | lista=NULL; | ||
+ | abrir_arquivo(); | ||
int i=1; | int i=1; | ||
while(i==1){ | while(i==1){ | ||
− | printf("O que deseja fazer: \n1-Ver lista de pilotos \n2-Adicionar piloto \n3-Remover piloto \n4- | + | 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); | scanf("%d",&opcao); | ||
switch(opcao){ | switch(opcao){ | ||
Linha 211: | Linha 247: | ||
case 4: | case 4: | ||
system ("clear"); | system ("clear"); | ||
− | + | estatistica(); | |
break; | break; | ||
case 5: | case 5: | ||
+ | atualizar_lista(); | ||
i=0; | i=0; | ||
break; | break; | ||
Linha 219: | Linha 256: | ||
} | } | ||
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
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; } } }