Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

jcfcid

Validações num projecto

Mensagens Recomendadas

jcfcid

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
TheDark

Se postares o código, tens mais hipóteses de obter uma resposta do que se obrigares a que se tenham que sacar ficheiros, abri-los, etc e tal...


Desaparecido.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
IceBrain

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

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

#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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
TheDark

É engraçado que tenhas ido contra as regras sem ir. Ele não pediu para fazerem o trabalho, pediu ajuda em tópicos concretos, só faltou postar o código.

Mas claro que é mais fácil debitar código...


Desaparecido.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
IceBrain

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jcfcid

lol obrigado pela ajuda ;)

e pronto ;) agora se poderem dar uma ajuda.

ja pus a gravar as etapas e o piloto para ficheiro.

=D obrigado pessoal ^^ desculpam a nubisse ^^

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.