Jump to content

Validações num projecto


jcfcid
 Share

Recommended Posts

Boas a todos.

Este é o meu primeiro post.

Tenho um trabalho de Programação neste primeiro semestre.

Estou com bastantes dificuldades. Já fiz uma parte do programa, falta-me o resto.

Deixo-vos o que fiz, e o PDF com o enunciado e se me puderem dar uma maozinha com o resto, agradeço imenso.

http://www.4shared.com/file/188347366/7028b1bc/Projecto_De_Programacao.html

Se ajudar, deixo aqui algumas coisas nas quais preciso de ajuda:

- Inserir pilotos numa etapa;

- Verificar se piloto ja existe

- Verificar se piloto esta inscrito em etapas

- verificar de  o piloto estiver inscrito em etapa nao permite eliminar ou se existir em etapas actualizar na etapa

se ja tiver efectuado etapa nao pode permitir eliminar)

- Validar etapas

Obrigado a todos,

J

EDIT: Assunto modificado

Link to comment
Share on other sites

Vá, eu sou simpático e faço o trabalho (EDIT: de postar o teu código) 😄

Btw, não partilhes executáveis; quem te poder ajudar também sabe compilar o código 😄

#include <stdio.h>
#define MAX_PILOTOS 30
# define NAO_ENCONTROU -1

typedef struct 
{
      char nome[50];
      int numaviao;
      int idade;
} TPILOTOS;

typedef struct 
{
        int dia;
        int mes;
        int ano;
}TDATA;

typedef struct
{
        char designacao[500];
        int ordemetapa;
        TDATA dataetapa;
        int numaviao[20];   
        int num_inscritos; 
        int pilotosinsc[20];    
}TETAPAS;

char menu();
char menup();
char menue();
char menur();
char menut();
void inserir_pilotos(TPILOTOS pilotos[],int *num_pilotos);
void lerpiloto(TPILOTOS *piloto);
void gerirpilotos(TPILOTOS pilotos[], int *num_pilotos);
void consultar_piloto(TPILOTOS *pilotos);
void eliminar_pilotos(TPILOTOS pilotos[],int *num_piloto,int pos_eliminar);
int pesquisa_pilotos(TPILOTOS pilotos[],int numaviao,int num);
void listar_pilotos(TPILOTOS pilotos[],int *num_pilotos);
void inserir_etapas(TETAPAS etapas[],int *num_etapas);
void leretapa(TETAPAS *etapas);
void gerir_etapas(TETAPAS etapas[], int *num_etapas,int *num_pilotos);
void consultar_etapa(TETAPAS *etapas,int num_pilotos,TPILOTOS pilotos[]);
int pesquisa_etapas(TETAPAS etapas[],int ordemetapa,int num);
void listar_etapas(TETAPAS etapas[],int *num_etapas,int num_pilotos,TPILOTOS pilotos[]);
void eliminar_etapas(TETAPAS etapas[],int *num_etapas,int pos_eliminar);

main()
{
     int num_pilotos=0;
     int num_etapas=0;
     
     TPILOTOS pilotos[MAX_PILOTOS];
     TETAPAS etapas[100];
     char op;
     do
     {
     op=menu(num_pilotos,num_etapas);
     switch(op)
     {
      
       case 'P': 
              gerirpilotos(pilotos,&num_pilotos);
       break;
       case 'E':
             gerir_etapas(etapas,&num_etapas,&num_pilotos);
       break;   
       case 'R': op=menur();
                 switch(op)
                 {
                   case 'R':
                   break;
                   case 'A':
                   break;
                   case 'O':
                   break;
                   case 'C':
                   break;    
                   case 'V':
                        op=menu();
                   break;               
                 }
       break;   
       case 'T': op=menut();
                 switch(op)
                 {
                   case 'R':
                   break;
                   case 'A':
                   break;
                   case 'O':
                   break;
                   case 'C':
                   break;    
                   case 'V':
                        op=menu();
                   break;               
                 }
               
       break;   
       case 'G':
            
       break;   
       case 'S':
            
       break;        
     }       
}while(op!='S');
     getch();
}
char menu(num_pilotos,num_etapas)
{
     char op;
     do{
      system("CLS");//limpa ecra   
      printf("\t\t\tESTG Air Race 2010");
      printf("\n\nPilotos Inscritos: %d ", num_pilotos);
      printf("\t\t\tEtapas Realizadas: %d ", num_etapas); 
      printf("\n\nP - (P)ilotos");
      printf("\nE - (E)tapas");
      printf("\nR - (R)esultados");
      printf("\nT - Es(T)atisticas");
      printf("\nG - (G)ravar");
      printf("\nS - (S)air\n");
      fflush(stdin);
      op=getch();
      op=toupper(op);//converte as letras
      if(op!='P' && op!='E' && op!='R' && op!='T' && op!='G' && op!='S'){//verifica opcao e valida 
       printf("Opcao invalida");
       getch();
       }
     }while(op!='P' && op!='E' && op!='R' && op!='T' && op!='G' && op!='S');
     return op;
}
char menup(int num_pilotos)
{
     char op;
     
     do{
        system("CLS");//limpa o ecra  
        printf("Pilotos Inscritos: %d",num_pilotos); 
        printf("\n\n(I)nserir Piloto");
        printf("\n(E)liminar Piloto");
        printf("\n(C)onsultar Dados do Piloto");
        printf("\n(L)istar Todos os Pilotos");
        printf("\n\n(V)oltar ao Menu Principal\n");
        fflush(stdin);
        op=getch();
        op=toupper(op);
        if(op!='I' && op!='E' && op!='C' && op!='L' && op!='V'){
         printf("Opcao invalida");
         getch();
        } 
     }while(op!='I' && op!='E' && op!='C' && op!='L' && op!='V');
     return op;    
}
char menue(int num_etapas)
{
     char op;
     do{
        system("CLS");//lipma o ecra  
        printf("Epatas Inseridas: %d",num_etapas); 
        printf("\n\n(I)nserir Etapa");
        printf("\n(E)ditar Etapa");
        printf("\nI(N)screver Piloto em Etapa");
        printf("\n(D)ados da Etapa");
        printf("\n(L)istar inscricoes de Piloto");
        printf("\n\n(V)oltar ao Menu Principal\n");
         fflush(stdin);
        op=getch();
        op=toupper(op);
        if(op!='I' && op!='E' && op!='N' && op!='D' && op!='L' && op!='V'){
         printf("Opcao invalida");
         getch();
        } 
     }while(op!='I' && op!='E' && op!='N' && op!='D' && op!='L' && op!='V');
     return op;    
}
char menur()
{
     char op;
     do{
        system("CLS");
        printf("Etapa corrente: ");
        printf("\n\n(R)esultados da Etapa Corrente");
        printf("\n(A)lterar Resultados de uma Etapa");
        printf("\nc(O)nsultar Resultados de uma Etapa");
        printf("\n(C)lassificacao Geral");
        printf("\n(V)oltar ao Menu Principal\n");
         fflush(stdin);
        op=getch();
        op=toupper(op);
        if(op!='R' && op!='A' && op!='O' && op!='C'  && op!='V'){
         printf("Opcao invalida");
         getch();
        } 
     }while(op!='R' && op!='A' && op!='O' && op!='C'  && op!='V');
     return op;    
}
char menut()
{
     char op;
     do{
        system("CLS");
        printf("(R)esultados do Campeonato");
        printf("\n(H)istorico por Piloto");
        printf("\n(D)ados Estatisticos");
        printf("\n(V)oltar ao Menu Principal\n");
         fflush(stdin);
        op=getch();
        op=toupper(op);
        if(op!='R' && op!='H' && op!='D' && op!='V'){
         printf("Opcao invalida");
         getch();
        } 
     }while(op!='R' && op!='H' && op!='D' && op!='V');
     return op;    
}     

     
void gerirpilotos(TPILOTOS pilotos[], int *num_pilotos)
{
      char op;
      int num,pos;
       do{
            op=menup(*num_pilotos);
                 switch(op)
                 {
                   case 'I'://inserir pilotos
                        system("CLS");//limpa ecra   
                        inserir_pilotos(pilotos,num_pilotos);
                        printf(" o piloto foi inserido com sucesso");
                        getch();
                   break;
                   case 'E':
                        system("CLS");//limpa ecra   
                        listar_pilotos(pilotos,num_pilotos);
                        printf("Qual o Piloto que quer Eliminar?");
                        scanf("%d",&num);
                        pos=pesquisa_pilotos(pilotos,*num_pilotos,num);
                        if(pos==-1)
                                   printf("ERRO: Piloto nao existe");
                        else
                            eliminar_pilotos(pilotos,num_pilotos,pos);
                            printf("Eliminado com sucesso");
                            getch();                 
                   break;
                   case 'C'://consultar piloto 
                        system("CLS");//limpa ecra   
                        printf("Numero de Aviao: ");
                        scanf("%d",&num);
                        pos=pesquisa_pilotos(pilotos,*num_pilotos,num);
                        if(pos==-1)
                        printf("ERRO: Piloto nao existe");
                        else
                        consultar_piloto(&pilotos[pos]);
                        getch(); 
                   break;
                   case 'L'://listar todos os pilotos
                        system("CLS");//limpa ecra   
                        if (num_pilotos <= 0)
                        printf("nao existem pilotos para listar");
                        else
                        listar_pilotos(pilotos,num_pilotos);
                        getch();
                   break;
                }
           }while(op!='V');
               
}
void inserir_pilotos(TPILOTOS pilotos[],int *num_pilotos)
{
     TPILOTOS aux;//pr guardar os dados todos do piloto
     lerpiloto(&aux);
     pilotos[*num_pilotos]=aux;
     (*num_pilotos)++;             
}
void lerpiloto(TPILOTOS *pilotos) 
{
printf("Nome: \n");
gets(pilotos->nome); //e ->pq tamos trabalhar numa referencia//gets recebe o vl char o nosso string 
printf("Numero Aviao: \n");
scanf("%d",&pilotos->numaviao);
printf("Idade: \n");
scanf("%d", &pilotos->idade);

}

void consultar_piloto(TPILOTOS *piloto)
{
     printf("Nome: %s ",piloto->nome);
     printf("Numero de Aviao: %d ",piloto->numaviao);
     printf("Idade: %d",piloto->idade);
     
}

void eliminar_pilotos(TPILOTOS pilotos[],int *num_pilotos,int pos_eliminar)
{
     pilotos[pos_eliminar]=pilotos[(*num_pilotos)-1];
     (*num_pilotos)--;
}
int pesquisa_pilotos(TPILOTOS pilotos[],int numaviao,int num)
{
  int i;
  for(i=0;i<numaviao;i++)//serve para recorer todo o vector
  {
     if(pilotos[i].numaviao==num)
      return i;
  } 
  return NAO_ENCONTROU;  
}
void listar_pilotos(TPILOTOS pilotos[],int *num_pilotos)
{
     int i;
     for(i=0;i<*num_pilotos;i++)
     {
         consultar_piloto(&pilotos[i]);
         printf("\n----------------------------\n");
     }
     getch();
}

void gerir_etapas(TETAPAS etapas[], int *num_etapas,int *num_pilotos)
{
      char op;
      int num,pos;
      int numaviao,posicao,i;
      TPILOTOS *pilotos;

       do{
            op=menue(*num_etapas);
                 switch(op)
                 {
                   case 'I'://inserir etapas
                        system("CLS");//limpa ecra   
                        inserir_etapas(etapas,num_etapas);
                        printf("a etapa foi inserido com sucesso");
                        getch();
                   break;
                   case 'E':
                        system("CLS");//limpa ecra   
                        listar_etapas(etapas,num_etapas,*num_pilotos,pilotos);
                        printf("Qual o a Etapa que quer Editar?");
                        scanf("%d",&num);
                        
                        pos=pesquisa_etapas(etapas,*num_etapas,num);
                        if(pos==-1)
                         printf("ERRO: Etapa nao existe");
                       
                         else
                         {
                          eliminar_etapas(etapas,num_etapas,pos);
                          inserir_etapas(etapas,num_etapas);
                          printf("a etapa foi editada com sucesso");
                          getch();
                  } 
                        
                      
                   
                   break;
                   
                   case 'N':
                         
                        system("CLS");//limpa ecra   
                        printf("Qual a etapa onde quer inserir o Piloto? ");
                        scanf("%d",&num);
                        for(i=0;i<*num_etapas;i++)
                        {
                          if(num==etapas[i].ordemetapa)
                          {
                           posicao=i;
                          }
                           else
                           {
                             posicao=-1;
                           }
                        }
                        
                        pos=pesquisa_etapas(etapas,*num_etapas,num);
                        if(pos==-1)
                        printf("ERRO: Etapa nao existe");
                        else
                        {
                        printf("Qual o numero do aviao do piloto que quer inserir?? ");
                        scanf("%d", &numaviao);
                        
                        pos=pesquisa_pilotos(pilotos,*num_pilotos,num);
                        if(pos==-1)
                         printf("ERRO: Piloto nao existe");
                         else
                         {
                             if(posicao!=-1)
                             {
                          consultar_piloto(&pilotos[pos]);
                          etapas[posicao].numaviao[etapas[posicao].num_inscritos] = numaviao;
                          etapas[posicao].num_inscritos++;
                             }
                             else
                             {
                           printf("a posicao inserida nao existe");
                             }
                          }
                        
                        }
                        
                   break;
               
                   case 'D'://listar todos os pilotos
                    if (num_etapas <= 0)
                       printf("nao existem pilotos para listar");
                    else
                        listar_etapas(etapas,num_etapas,*num_pilotos,pilotos);
                        getch();
                   break;
                   
                   case 'L'://listar pilotos enscritos nas etapas
                           printf("Qual o numero de aviao do piloto que quer listar??");
                           scanf("%d",&numaviao);
                           pos=pesquisa_pilotos(pilotos,*num_pilotos,num);
                           if(pos==-1)
                           printf("ERRO: Piloto nao existe");
                           else
                           printf("O aviao do piloto %d",&numaviao," esta inscrito na etapa numero: %d");  
                   
                   break;
                }
            
           }while(op!='V');
               
}
void leretapas(TETAPAS *etapas) 

{
     system("CLS");
     int validar, validar2;
     printf("Designacao da Etapa \n");
     gets(etapas->designacao); //e ->pq tamos trabalhar numa referencia//gets recebe o vl char o nosso string 
     printf("Ordem da Etapa: \n");
     scanf("%d",&etapas->ordemetapa);
     printf("Data da Etapa: \n");
     printf("Dia:");
     validar = scanf("%2d",&etapas->dataetapa.dia);
     printf("Mes:"); 
     validar2= scanf("%2d",&etapas->dataetapa.mes);
}

void inserir_etapas(TETAPAS etapas[],int *num_etapas)
{     
     TETAPAS aux;//pr guardar os dados todos do piloto
     leretapas(&aux);
     aux.num_inscritos=0;
     etapas[*num_etapas]=aux;
     (*num_etapas)++;                 
}

void consultar_etapas(TETAPAS *etapas,int num_pilotos,TPILOTOS pilotos[])
{
     int j,k,numero_aviao;
     system("CLS");
     printf("Designacao da Etapa: %s\n",etapas->designacao);
     printf("Ordem da Etapa: %d\n",etapas->ordemetapa);
     printf("Data da Etapa: %2d/%2d/2010\n",etapas->dataetapa.dia,etapas->dataetapa.mes,etapas->dataetapa.ano);
     for(j=0;j<etapas->num_inscritos;j++)
     {
      numero_aviao=etapas->numaviao[j];
       for(k=0;k<num_pilotos;k++)
       {
         if(pilotos[k].numaviao==numero_aviao)
         {
           printf("Nome: %s",pilotos[k].nome);           
         }
       }
     }
}

void listar_etapas(TETAPAS etapas[],int *num_etapas,int num_pilotos,TPILOTOS pilotos[])
{
     int i;
     for(i=0;i<*num_etapas;i++)
     {
         consultar_etapas(&etapas[i],num_pilotos,pilotos);
         printf("\n----------------------------\n");
     }
     getch();
}

void eliminar_etapas(TETAPAS etapas[],int *num_etapas,int pos_eliminar)
{
     etapas[pos_eliminar]=etapas[(*num_etapas)-1];
     (*num_etapas)--;
}

int pesquisa_etapas(TETAPAS etapas[],int ordemetapa,int num)
{
  int i;
  for(i=0;i<ordemetapa;i++)//serve para percorer todo o vector
  {
     if(etapas[i].ordemetapa==num)
      return i;
  } 
  return NAO_ENCONTROU;  
}

❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Link to comment
Share on other sites

Eu postei o código dele, que ele deu no link.

Já mudei o texto para ficar mais explícito.

❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.