• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

doxy

[Ajuda]Trabalho em C

27 mensagens neste tópico

Olá amigos, estou com um problema que não sei resolver, será que me podem ajudar?

sou um iniciante em C só este ano comecei a trabalhar com programação, e ando aqui de volta de um projecto, mas que tem aqui uns bugs e que nao sei resolver... :P

Alguém me pode dar uma espreitadela do código e  corrigir me isso? obrigado...

Os meus principais problemas são:

Na função entrada e saída como é que coloco a opção invalida para qualquer letra excepto 's' e 'n';

Como se junta a função calcula preço à função saída de viaturas;

Na função apresentação de informação preciso de uns cálculos e não sei como os fazer;

Espero que alguém me posso ajudar e se poderem corrigir me o código também..Fico vos muito grato. Obrigado

Código:

#include<stdio.h>
#include<conio.h>
#define MAXAE 550 
#define MAXF 200
#define MAXD 20

char menu_principal();
int entradaViaturas (void);
int SaidaViaturas ();
float calcula_preco (int horas, int valor);
int iniciar();
int fim();
void estatisticas();
void apresentacao_de_informacao();


main (){
  char op;
  int horas;
  float valor;
  float preco;
  
  do {
      system ("cls");
      op=menu_principal();
      switch(op){
             case 'N':
             case 'n':      
                            entradaViaturas ();
                            break;
             case 'S':
             case 's':      
                            SaidaViaturas (preco);
                            preco=calcula_preco (horas,valor);
                               break;
             case 'A':
             case 'a':       apresentacao_de_informacao();
                             break;
             case 'E':
             case 'e':        estatisticas();
                              break;
             case 'I':
             case 'i':       iniciar();
                  break;
             case 'F':
             case 'f':       fim();
                  break;
             }
}while (op!= 'F'&&op!= 'f');
       getch();
}   
               
char menu_principal(){
     char seleccione_opcao;
     do{  
          printf("\n ***************************** Menu Principal ****************************");
          printf("\n\n\n\t\t\t\t\t Total de lugares disponiveis: ***");
          printf("\n\n\t\t\t\t\t Lugares parque funcinarios:   ***");
          printf("\n\n\t\t\t\t\t Lugares para deficientes:     ***");
          printf("\n\n (N) Entrada de viaturas");
          printf("\n\n (S) Saida de viaturas");
          printf("\n\n (A) Apresentacao de informacao");
          printf("\n\n (E) Estatisticas");
          printf("\n\n (I) Iniciar");
          printf("\n\n (F) Fim");
          printf("\n\n\n\n seleccione opcao->");
     
           fflush(stdin);
           scanf("%c",&seleccione_opcao);
            if(seleccione_opcao!='N' && seleccione_opcao!='n' && seleccione_opcao!='S' && seleccione_opcao!='s' && seleccione_opcao!='A' && seleccione_opcao!='a' && seleccione_opcao!='E' && seleccione_opcao!='e' && seleccione_opcao!='I' && seleccione_opcao!='i' && seleccione_opcao!='F' && seleccione_opcao!='f')
             printf("\n opcao invalida - tente de novo\n");
             getch();
     }while(seleccione_opcao!='N' && seleccione_opcao!='n' && seleccione_opcao!='S' && seleccione_opcao!='s' && seleccione_opcao!='A' && seleccione_opcao!='a' && seleccione_opcao!='E' && seleccione_opcao!='e' && seleccione_opcao!='I' && seleccione_opcao!='i' && seleccione_opcao!='F' && seleccione_opcao!='f');     

     return seleccione_opcao;
}
     






int entradaViaturas (void){
  int op; 
  int i=1,soma=0;
  int nlugares; 
   
      do{ 
       system("cls");
       printf("\t\t\t**ENTRADA DE VIATURAS**\n");
  

        printf("Escolha uma das opcoes: \n\t(1) - Aluno\n\t(2) - Funcionarios\n\t(3) - Deficientes\n\t(4) - Pessoas Externas\n\t(5) - Sair\n");
        printf("opcao: ");
        fflush(stdin);
        scanf("%d",&op);
        if ("op!=(1) && op!=(2) && op!=(3) && op!=(4) && op!=(5)")
     
        switch (op){
         case 1:
          
              printf("\nEscolheu a opcao %d\n",op);
              nlugares=MAXAE-i;
              i++;
              if (nlugares==0)
               {
                printf("\nParque esgotado!");                
                }
                 else
                  {
                  printf ("\nEntrada com sucesso!\n");
                  printf ("tem %d lugares disponiveis!\n",nlugares);
                  }
        
                   break;
        case 2:
             printf ("\nEscolheu a opao %d\n",op);
             nlugares=MAXF-i;
             i++;
             if (nlugares==0){
                              printf("\nParque Esgotado!");
                              }
                              else{ 
                                    printf("\nEntrada com sucesso!\n");
                                    printf("tem %d lugares disponiveis!\n",nlugares);
                                    }
                                    break;
        case 3:
              printf ("\nEscolheu a opao %d\n",op);
             nlugares=MAXD-i;
             i++;
             if (nlugares==0){
                              printf("\nParque Esgotado!");
                              }
                              else{ 
                                    printf("\nEntrada com sucesso!\n");
                                    printf("tem %d lugares disponiveis!\n",nlugares);
                                    }
                                    break;
        case 4:
             printf ("\nEscolheu a opao %d\n",op);
             nlugares=MAXAE-i;
             i++;
             if (nlugares==0){
                              printf("\nParque Esgotado!");
                              }
                              else{ 
                                    printf("\nEntrada com sucesso!\n");
                                    printf("tem %d lugares disponiveis!\n",nlugares);
                                    }
                                    break;
       case 5:
            printf("\nEscolheu a opao %d\n",op);
            printf("\nTem a certeza que pretende sair? (S)im ou (N)ao?");
            printf("\nSeleccione opcao: ");
            fflush(stdin);
            scanf("%c", &op);
            if (op!='S'&& op!='s'){
                printf("\nNao saiu do parque!!\n"); 
                fflush(stdin);
                scanf("%d", &op);
                                               
                }
                 else
                  {         
                  main ();                 
                  }
                  getch();
                   break;
     default: printf("Opcao invalida!");  
         } 
  getch();
}while("op!=(1) && op!=(2) && op!=(3) && op!=(4) && op!=(5)");
}






int SaidaViaturas (){
  int op; 
  int i=1,soma=0;
  int nlugares; 
     
      do{ 
       system("cls");
       printf("\t\t\t**SAIDA DE VIATURAS**\n");
  

        printf("Escolha uma das opcoes: \n\t(1) - Aluno\n\t(2) - Funcionarios\n\t(3) - Deficientes\n\t(4) - Pessoas Externas\n\t(5) - Sair\n");
        printf("opcao: ");
        fflush(stdin);
        scanf("%d",&op);
        if ("op!=(1) && op!=(2) && op!=(3) && op!=(4) && op!=(5)")
     
        switch (op){
         case 1:
          
              printf("\nEscolheu a opcao %d\n",op);
              printf("\nTem a certeza que pretende sair deste parque? Sim (S) ou Nao (N)?\n");
              printf("Indique a opcao ->");
              fflush(stdin);
              scanf("%c", &op);
              if (op!='S'&& op!='s'){
                printf("\nNao saiu do parque!!\n"); 
                fflush(stdin);
                scanf("%d", &op);
                                               
                }
                 else
                  {         
                  printf("\nProceda ao Pagamento!\n\n");
                                   
                  }
        printf("Escolha uma das opcoes: \n\t(1) - Inferior a 6 horas\n\t(2) - Igual ou superior a 6 horas\n\t(3)- Sair\n");
        printf("Seleccione opcao: ");
        fflush(stdin);
        scanf("%d",&op);
        if ("op!=(1) && op!=(2) && op!=(3)")
        
                   break;
        case 2:
            printf("\nEscolheu a opcao %d\n",op);
              printf("\nTem a certeza que pretende sair deste parque? Sim (S) ou Nao (N)?\n");
              printf("Indique a opcao ->");
              fflush(stdin);
              scanf("%c", &op);
              if (op!='S'&& op!='s'){
                printf("\nNao saiu do parque!!\n"); 
                fflush(stdin);
                scanf("%d", &op);
                                               
                }
                 else
                  {         
                  printf("\nProceda ao Pagamento!\n\n");
                                   
                  }
        printf("Escolha uma das opcoes: \n\t(1) - Inferior a 6 horas\n\t(2) - Igual ou superior a 6 horas\n\t(3)- Sair\n");
        printf("Seleccione opcao: ");
        fflush(stdin);
        scanf("%d",&op);
        if ("op!=(1) && op!=(2) && op!=(3)")
        
                   break;
        case 3:
              printf("\nEscolheu a opcao %d\n",op);
              printf("\nTem a certeza que pretende sair deste parque? Sim (S) ou Nao (N)?\n");
              printf("Indique a opcao ->");
              fflush(stdin);
              scanf("%c", &op);
              if (op!='S'&& op!='s'){
                printf("\nNao saiu do parque!!\n"); 
                fflush(stdin);
                scanf("%d", &op);
                                               
                }
                 else
                  {         
                  printf("\nProceda ao Pagamento!\n\n");
                                   
                  }
        printf("Escolha uma das opcoes: \n\t(1) - Inferior a 6 horas\n\t(2) - Igual ou superior a 6 horas\n\t(3)- Sair\n");
        printf("Seleccione opcao: ");
        fflush(stdin);
        scanf("%d",&op);
        if ("op!=(1) && op!=(2) && op!=(3)")
        
                   break;printf("\nEscolheu a opcao %d\n",op);
              printf("\nTem a certeza que pretende sair deste parque? Sim (S) ou Nao (N)?\n");
              printf("Indique a opcao ->");
              fflush(stdin);
              scanf("%c", &op);
              if (op!='S'&& op!='s'){
                printf("\nNao saiu do parque!!\n"); 
                fflush(stdin);
                scanf("%d", &op);
                                               
                }
                 else
                  {         
                  printf("\nProceda ao Pagamento!\n\n");
                                   
                  }
        printf("Escolha uma das opcoes: \n\t(1) - Inferior a 6 horas\n\t(2) - Igual ou superior a 6 horas\n\t(3)- Sair\n");
        printf("Seleccione opcao: ");
        fflush(stdin);
        scanf("%d",&op);
        if ("op!=(1) && op!=(2) && op!=(3)")
        
                   break;
        case 4:
             printf("\nEscolheu a opcao %d\n",op);
              printf("\nTem a certeza que pretende sair deste parque? Sim (S) ou Nao (N)?\n");
              printf("Indique a opcao ->");
              fflush(stdin);
              scanf("%c", &op);
              if (op!='S'&& op!='s'){
                printf("\nNao saiu do parque!!\n"); 
                fflush(stdin);
                scanf("%d", &op);
                                               
                }
                 else
                  {         
                  printf("\nProceda ao Pagamento!\n\n");
                                   
                  }
        printf("Escolha uma das opcoes: \n\t(1) - Inferior a 6 horas\n\t(2) - Igual ou superior a 6 horas\n\t(3)- Sair\n");
        printf("Seleccione opcao: ");
        fflush(stdin);
        scanf("%d",&op);
        if ("op!=(1) && op!=(2) && op!=(3)")
        
                   break;
       case 5:
            printf("\nEscolheu a opao %d\n",op);
            printf("\nTem a certeza que pretende sair? Sim (S) ou Nao (N)?");
            printf("\nSeleccione opcao:");
            fflush(stdin);
            scanf("%c", &op);
            if (op!='S'&& op!='s'){
                printf("\nNao saiu do parque!!\n"); 
                fflush(stdin);
                scanf("%d", &op);
                                               
                }
                 else
                  {         
                  main ();                 
                  }
  getch();
}
}while("op!=(1) && op!=(2) && op!=(3) && op!=(4) && op!=(5)");
}




float calcula_preco (int horas, int valor){
      float preco;
      int op;
      int i;
      int x;
           
  do{ 
       system("cls");
       printf("\t\t\t**PRECO A PAGAR**\n");
  

            switch (valor){
             case 1:
                  printf ("Escolheu a opcao inferior a 6 horas\n");
                  horas=0,5*i;
                  i++;
                  if (horas<='0' && horas >='6'){
                                printf("opcao invalida");
                                }
                                else{
                                     printf("Insira o total de horas\n");
                                     printf("total de horas ->");
                                     }
                                     break;
             case 2:
                  printf("Escolheu a opcao igual ou superior a 6 horas\n");
                  horas=x*2,5+i*0,5;
                  i++;
                  if(horas<'6'){
                                printf("opcao invalida");
                                }
                                else{
                                     printf("Insira o total de horas\n");
                                     printf("total de horas ->");
                                     }
                                    break;
                                    
            case 3:
                 printf("Tem a certeza que pretende sair? (S)im ou (N)ao?");
                 printf("\nSeleccione opcao: ");
                 fflush(stdin);
                 scanf("%c", &op);
                             if (op!='S'&& op!='s' && op!='N' && op!='n'){
                             printf("\nOpcao Invalida!!\n"); 
                }
                 else
                  {         
                  printf("\nPrima enter para voltar ao menu\n\n");                 
                  }
                 
      }
      getch();
}while("op!=(1) && op!=(2) && op!=(3)");
}





int iniciar(){
    char op;
    
      do{
       system("cls");
       printf("\t\t\t**INICIAR**\n");
       printf("\nPretende inicializar (D) - Novo dia ou (S) - Nova semana?");
       printf("\nOpcao: ");
       fflush(stdin);
       scanf("%c",&op);
        if (op!='D' && op!='d' && op!='S' && op!='s'){
           printf("\nOpcao Invalida\n");
           fflush(stdin);
           scanf("%c", &op);
           }
           
           else {
                printf("\nOpcao valida");                  
               }
               getch();
        }while(op!='D' && op!='d' && op!='S' && op!='s');
        getch(); 
      }





int fim(){
    char op;
    
    do{
        system("cls");
        printf("\t\t\t**FIM**\n");
        printf("\nPretende sair do programa? Sim (S) ou Nao (N)");
        printf("\nOpcao: ");
        fflush(stdin);
        scanf("%c",&op);
            if(op!='S' && op!='s' && op!='N' && op!='n'){
                  printf("\nOpcao Invalida\n");
                  fflush(stdin);
                  scanf("%c", &op);
                  }
                  else {
                       printf("\nOpcao Valida");
                       }
    }while(op!='S' && op!='s' && op!='N' && op!='n');
    getch();
}

void estatisticas(){
          printf("\n ***************************** ESTATISTICAS ****************************\n");
          printf("\n\nTotal de entradas de viaturas em cada tipo de parque: ");
          printf("\n\nTotal de viaturas impossibilitadas de entrar: ");
          printf("\n\nPercentagem de viaturas entradas em cada dia da semana: ");
          printf("\n\nDia da semana com maior numero de entradas no estacionamento: ");
          printf("\n\nDia da semana com menor numero de entradas no estacionamento: ");
          printf("\n\nPercentagem de ocupacao do estacionamento por dia da semana: ");
          printf("\n\nReceita total obtida: ");
          printf("\n\nReceita media por viatura obtida em cada um dos dias: ");
          printf("\n\nDia da semana com maior receita: ");
     getch();
     
           }
           
void apresentacao_de_informacao(){
     printf("\nApresentacao de Informacao sobre a semana corrente");
     printf("\n***************************************************************************\n");
     printf("**Dia**\t\t**N. Entradas**\t\t**N. de Saidas**\t**Receita**\n");
     printf("\n***************************************************************************\n");
     getch();
     }

     

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para colocares opção inválida só tens de fazer um ciclo com um switch-case lá dentro. Se for 's' ou 'n' sais do ciclo. Se não continuas.

Quanto ao resto, não percebi o que querias dizer.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens vários if e dois while que estão mal

if ("op!=(1) && op!=(2) ...")

while ("op!=(1) && op!=(2) ...")

devia ser

if (op!=(1) && op!=(2) ...)

while (op!=(1) && op!=(2) ...)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem já tentei corrigir, mas mesmo assim ainda aqui um bocado às voltas :s.. Será que está melhor? Já apliquei o que me disses-te.

Mesmo assim, não estou a conseguir por na saida o preço pelo tempo que esteve no parque, em cada um deles (cada parque). E também estou  confuso com os contadores, porque se eu disser que vou estacionar no parque dos alunos, desconta no parque, mas se a seguir for ao dos funcionários conta também como o carro que entrou nos alunos, é principalmente isto.... estou mesmo com dificuldades.

Código:

#include<stdio.h>
#include<conio.h>
#define MAXAE 550 
#define MAXF 200
#define MAXD 20

char menu_principal();
int entradaViaturas (void);
int SaidaViaturas ();
float calcula_preco (int horas, int valor);
int iniciar();
int fim();
void estatisticas();
void apresentacao_de_informacao();


main (){
  char op;
  float valor;
  float horas;
  float preco;
  
  do {
      system ("cls");
      op=menu_principal();
      switch(op){
             case 'N':
             case 'n':      
                            entradaViaturas ();
                            break;
             case 'S':
             case 's':      
                            SaidaViaturas (preco);
                            calcula_preco (horas,valor);
                            horas=calcula_preco(horas,valor);
                            valor=calcula_preco(horas,valor);
                               break;
             case 'A':
             case 'a':       apresentacao_de_informacao();
                             break;
             case 'E':
             case 'e':        estatisticas();
                              break;
             case 'I':
             case 'i':       iniciar();
                  break;
             case 'F':
             case 'f':       fim();
                  break;
             }
}while (op!= 'F' && op!= 'f');
       getch();
}   
               
char menu_principal(){
     char seleccione_opcao;
     do{  
          printf("\n ***************************** Menu Principal ****************************");
          printf("\n\n\n\t\t\t\t\t Total de lugares disponiveis: ***");
          printf("\n\n\t\t\t\t\t Lugares parque funcinarios:   ***");
          printf("\n\n\t\t\t\t\t Lugares para deficientes:     ***");
          printf("\n\n (N) Entrada de viaturas");
          printf("\n\n (S) Saida de viaturas");
          printf("\n\n (A) Apresentacao de informacao");
          printf("\n\n (E) Estatisticas");
          printf("\n\n (I) Iniciar");
          printf("\n\n (F) Fim");
          printf("\n\n\n\n seleccione opcao->");
     
           fflush(stdin);
           scanf("%c",&seleccione_opcao);
            if(seleccione_opcao!='N' && seleccione_opcao!='n' && seleccione_opcao!='S' && seleccione_opcao!='s' && seleccione_opcao!='A' && seleccione_opcao!='a' && seleccione_opcao!='E' && seleccione_opcao!='e' && seleccione_opcao!='I' && seleccione_opcao!='i' && seleccione_opcao!='F' && seleccione_opcao!='f')
             printf("\n opcao invalida - tente de novo\n");
             getch();
     }while(seleccione_opcao!='N' && seleccione_opcao!='n' && seleccione_opcao!='S' && seleccione_opcao!='s' && seleccione_opcao!='A' && seleccione_opcao!='a' && seleccione_opcao!='E' && seleccione_opcao!='e' && seleccione_opcao!='I' && seleccione_opcao!='i' && seleccione_opcao!='F' && seleccione_opcao!='f');     

     return seleccione_opcao;
}
     






int entradaViaturas (void){
  int op; 
  int i=1,soma=0;
  int nlugares; 
   
      do{ 
       system("cls");
       printf("\t\t\t**ENTRADA DE VIATURAS**\n");
  

        printf("Escolha uma das opcoes: \n\t(1) - Aluno\n\t(2) - Funcionarios\n\t(3) - Deficientes\n\t(4) - Pessoas Externas\n\t(5) - Sair\n");
        printf("opcao: ");
        fflush(stdin);
        scanf("%d",&op);
        if (op!='1' && op!='2' && op!='3' && op!='4' && op!='5')
     
        switch (op){
         case 1:
          
              printf("\nEscolheu a opcao %d\n",op);
              nlugares=MAXAE-i;
              i++;
              if (nlugares==0)
               {
                printf("\nParque esgotado!");                
                }
                 else
                  {
                  printf ("\nEntrada com sucesso!\n");
                  printf ("tem %d lugares disponiveis!\n",nlugares);
                  }
        
                   break;
        case 2:
             printf ("\nEscolheu a opao %d\n",op);
             nlugares=MAXF-i;
             i++;
             if (nlugares==0){
                              printf("\nParque Esgotado!");
                              }
                              else{ 
                                    printf("\nEntrada com sucesso!\n");
                                    printf("tem %d lugares disponiveis!\n",nlugares);
                                    }
                                    break;
        case 3:
              printf ("\nEscolheu a opao %d\n",op);
             nlugares=MAXD-i;
             i++;
             if (nlugares==0){
                              printf("\nParque Esgotado!");
                              }
                              else{ 
                                    printf("\nEntrada com sucesso!\n");
                                    printf("tem %d lugares disponiveis!\n",nlugares);
                                    }
                                    break;
        case 4:
             printf ("\nEscolheu a opao %d\n",op);
             nlugares=MAXAE-i;
             i++;
             if (nlugares==0){
                              printf("\nParque Esgotado!");
                              }
                              else{ 
                                    printf("\nEntrada com sucesso!\n");
                                    printf("tem %d lugares disponiveis!\n",nlugares);
                                    }
                                    break;
       case 5:
            printf("\nEscolheu a opao %d\n",op);
            printf("\nTem a certeza que pretende sair? (S)im ou (N)ao?");
            printf("\nSeleccione opcao: ");
            fflush(stdin);
            scanf("%c", &op);
            if (op!='S'&& op!='s'){
                printf("\nNao saiu do parque!!\n"); 
                fflush(stdin);
                scanf("%d", &op);
                                               
                }
                 else
                  {         
                  main ();                 
                  }
                  getch();
                   break;
     default: printf("Opcao invalida!");  
         } 
  getch();
}while(op!='1' && op!='2' && op!='3' && op!='4' && op!='5');
}






int SaidaViaturas (){
  int op; 
  int i=1,soma=0;
  int nlugares; 
     
      do{ 
       system("cls");
       printf("\t\t\t**SAIDA DE VIATURAS**\n");
  

        printf("Escolha uma das opcoes: \n\t(1) - Aluno\n\t(2) - Funcionarios\n\t(3) - Deficientes\n\t(4) - Pessoas Externas\n\t(5) - Sair\n");
        printf("opcao: ");
        fflush(stdin);
        scanf("%d",&op);
        if (op!='1' && op!='2' && op!='3' && op!='4' && op!='5')
     
        switch (op){
         case 1:
          
              printf("\nEscolheu a opcao %d\n",op);
              printf("\nTem a certeza que pretende sair deste parque? Sim (S) ou Nao (N)?\n");
              printf("Indique a opcao ->");
              fflush(stdin);
              scanf("%c", &op);
              if (op!='S'&& op!='s'){
                printf("\nNao saiu do parque!!\n"); 
                fflush(stdin);
                scanf("%d", &op);
                                               
                }
                 else
                  {         
                  printf("\nProceda ao Pagamento!\n\n");
                                   
                  }
        printf("Escolha uma das opcoes: \n\t(1) - Inferior a 6 horas\n\t(2) - Igual ou superior a 6 horas\n\t(3)- Sair\n");
        printf("Seleccione opcao: ");
        fflush(stdin);
        scanf("%d",&op);
        if (op!='1' && op!='2' && op!='3')
        
                   break;
        case 2:
            printf("\nEscolheu a opcao %d\n",op);
              printf("\nTem a certeza que pretende sair deste parque? Sim (S) ou Nao (N)?\n");
              printf("Indique a opcao ->");
              fflush(stdin);
              scanf("%c", &op);
              if (op!='S'&& op!='s'){
                printf("\nNao saiu do parque!!\n"); 
                fflush(stdin);
                scanf("%d", &op);
                                               
                }
                 else
                  {         
                  printf("\nProceda ao Pagamento!\n\n");
                                   
                  }
        printf("Escolha uma das opcoes: \n\t(1) - Inferior a 6 horas\n\t(2) - Igual ou superior a 6 horas\n\t(3)- Sair\n");
        printf("Seleccione opcao: ");
        fflush(stdin);
        scanf("%d",&op);
        if (op!='1' && op!='2' && op!='3')
        
                   break;
        case 3:
              printf("\nEscolheu a opcao %d\n",op);
              printf("\nTem a certeza que pretende sair deste parque? Sim (S) ou Nao (N)?\n");
              printf("Indique a opcao ->");
              fflush(stdin);
              scanf("%c", &op);
              if (op!='S'&& op!='s'){
                printf("\nNao saiu do parque!!\n"); 
                fflush(stdin);
                scanf("%d", &op);
                                               
                }
                 else
                  {         
                  printf("\nProceda ao Pagamento!\n\n");
                                   
                  }
        printf("Escolha uma das opcoes: \n\t(1) - Inferior a 6 horas\n\t(2) - Igual ou superior a 6 horas\n\t(3)- Sair\n");
        printf("Seleccione opcao: ");
        fflush(stdin);
        scanf("%d",&op);
        if (op!='1' && op!='2' && op!='3')
        
              printf("\nEscolheu a opcao %d\n",op);
              printf("\nTem a certeza que pretende sair deste parque? Sim (S) ou Nao (N)?\n");
              printf("Indique a opcao ->");
              fflush(stdin);
              scanf("%c", &op);
              if (op!='S'&& op!='s'){
                printf("\nNao saiu do parque!!\n"); 
                fflush(stdin);
                scanf("%d", &op);
                                               
                }
                 else
                  {         
                  printf("\nProceda ao Pagamento!\n\n");
                                   
                  }
        printf("Escolha uma das opcoes: \n\t(1) - Inferior a 6 horas\n\t(2) - Igual ou superior a 6 horas\n\t(3)- Sair\n");
        printf("Seleccione opcao: ");
        fflush(stdin);
        scanf("%d",&op);
        if (op!='1' && op!='2' && op!='3')
        
                   break;
        case 4:
             printf("\nEscolheu a opcao %d\n",op);
              printf("\nTem a certeza que pretende sair deste parque? Sim (S) ou Nao (N)?\n");
              printf("Indique a opcao ->");
              fflush(stdin);
              scanf("%c", &op);
              if (op!='S'&& op!='s'){
                printf("\nNao saiu do parque!!\n"); 
                fflush(stdin);
                scanf("%d", &op);
                                               
                }
                 else
                  {         
                  printf("\nProceda ao Pagamento!\n\n");
                                   
                  }
        printf("Escolha uma das opcoes: \n\t(1) - Inferior a 6 horas\n\t(2) - Igual ou superior a 6 horas\n\t(3)- Sair\n");
        printf("Seleccione opcao: ");
        fflush(stdin);
        scanf("%d",&op);
        if (op!='1' && op!='2' && op!='3')
        
                   break;
       case 5:
            printf("\nEscolheu a opao %d\n",op);
            printf("\nTem a certeza que pretende sair? Sim (S) ou Nao (N)?");
            printf("\nSeleccione opcao:");
            fflush(stdin);
            scanf("%c", &op);
            if (op!='S'&& op!='s'){
                printf("\nNao saiu do parque!!\n"); 
                fflush(stdin);
                scanf("%d", &op);
                                               
                }
                 else
                  {         
                  main ();                 
                  }
  getch();
}
}while(op!='1' && op!='2' && op!='3' && op!='4' && op!='5');
}




float calcula_preco (int horas, int valor){
      float preco;
      int op;
      int i;
      int x;
           
  do{ 
       system("cls");
       printf("\t\t\t**PRECO A PAGAR**\n");
  

            switch (valor){
             case 1:
                  printf ("Escolheu a opcao inferior a 6 horas\n");
                  horas=0,5*i;
                  i++;
                  if (horas<=0 && horas >=6){
                                printf("opcao invalida");
                                }
                                else{
                                     printf("Insira o total de horas\n");
                                     printf("total de horas ->");
                                     }
                                     break;
             case 2:
                  printf("Escolheu a opcao igual ou superior a 6 horas\n");
                  horas=x*2,5+i*0,5;
                  i++;
                  if(horas<6){
                                printf("opcao invalida");
                                }
                                else{
                                     printf("Insira o total de horas\n");
                                     printf("total de horas ->");
                                     }
                                    break;
                                    
            case 3:
                 printf("Tem a certeza que pretende sair? (S)im ou (N)ao?");
                 printf("\nSeleccione opcao: ");
                 fflush(stdin);
                 scanf("%c", &op);
                             if (op!='S'&& op!='s' && op!='N' && op!='n'){
                             printf("\nOpcao Invalida!!\n"); 
                }
                 else
                  {         
                  printf("\nPrima enter para voltar ao menu\n\n");                 
                  }
                 
      }
      getch();
}while(op!='1' && op!='2' && op!='3');
}





int iniciar(){
    char op;
    
      do{
       system("cls");
       printf("\t\t\t**INICIAR**\n");
       printf("\nPretende inicializar (D) - Novo dia ou (S) - Nova semana?");
       printf("\nOpcao: ");
       fflush(stdin);
       scanf("%c",&op);
        if (op!='D' && op!='d' && op!='S' && op!='s'){
           printf("\nOpcao Invalida\n");
           fflush(stdin);
           scanf("%c", &op);
           }
           
           else {
                printf("\nOpcao valida");                  
               }
               getch();
        }while(op!='D' && op!='d' && op!='S' && op!='s');
        getch(); 
      }





int fim(){
    char op;
    
    do{
        system("cls");
        printf("\t\t\t**FIM**\n");
        printf("\nPretende sair do programa? Sim (S) ou Nao (N)");
        printf("\nOpcao: ");
        fflush(stdin);
        scanf("%c",&op);
            if(op!='S' && op!='s' && op!='N' && op!='n'){
                  printf("\nOpcao Invalida\n");
                  fflush(stdin);
                  scanf("%c", &op);
                  }
                  else {
                       printf("\nOpcao Valida");
                       }
    }while(op!='S' && op!='s' && op!='N' && op!='n');
    getch();
}

void estatisticas(){
          printf("\n ***************************** ESTATISTICAS ****************************\n");
          printf("\n\nTotal de entradas de viaturas em cada tipo de parque: ");
          printf("\n\nTotal de viaturas impossibilitadas de entrar: ");
          printf("\n\nPercentagem de viaturas entradas em cada dia da semana: ");
          printf("\n\nDia da semana com maior numero de entradas no estacionamento: ");
          printf("\n\nDia da semana com menor numero de entradas no estacionamento: ");
          printf("\n\nPercentagem de ocupacao do estacionamento por dia da semana: ");
          printf("\n\nReceita total obtida: ");
          printf("\n\nReceita media por viatura obtida em cada um dos dias: ");
          printf("\n\nDia da semana com maior receita: ");
     getch();
     
           }
           
void apresentacao_de_informacao(){
     printf("\nApresentacao de Informacao sobre a semana corrente");
     printf("\n***************************************************************************\n");
     printf("**Dia**\t\t**N. Entradas**\t\t**N. de Saidas**\t**Receita**\n");
     printf("\n***************************************************************************\n");
     getch();
     }

     

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
doxy.c:2:18: error: conio.h: No such file or directory
doxy.c:7: warning: function declaration isn’t a prototype
doxy.c:9: warning: function declaration isn’t a prototype
doxy.c:11: warning: function declaration isn’t a prototype
doxy.c:12: warning: function declaration isn’t a prototype
doxy.c:13: warning: function declaration isn’t a prototype
doxy.c:14: warning: function declaration isn’t a prototype
doxy.c:17: warning: return type defaults to ‘int’
doxy.c:17: warning: function declaration isn’t a prototype
doxy.c: In function ‘main’:
doxy.c:24: warning: implicit declaration of function ‘system’
doxy.c:24: warning: nested extern declaration of ‘system’
doxy.c:26: warning: switch missing default case
doxy.c:52: warning: implicit declaration of function ‘getch’
doxy.c:52: warning: nested extern declaration of ‘getch’
doxy.c:53: warning: control reaches end of non-void function
doxy.c: At top level:
doxy.c:55: warning: function declaration isn’t a prototype
doxy.c: In function ‘entradaViaturas’:
doxy.c:160: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘int *’
doxy.c:88: warning: unused variable ‘soma’
doxy.c:177: warning: control reaches end of non-void function
doxy.c: At top level:
doxy.c:184: warning: function declaration isn’t a prototype
doxy.c: In function ‘SaidaViaturas’:
doxy.c:207: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘int *’
doxy.c:231: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘int *’
doxy.c:255: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘int *’
doxy.c:277: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘int *’
doxy.c:301: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘int *’
doxy.c:325: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘int *’
doxy.c:200: warning: switch missing default case
doxy.c:187: warning: unused variable ‘nlugares’
doxy.c:186: warning: unused variable ‘soma’
doxy.c:186: warning: unused variable ‘i’
doxy.c:339: warning: control reaches end of non-void function
doxy.c: In function ‘calcula_preco’:
doxy.c:358: warning: value computed is not used
doxy.c:355: warning: switch missing default case
doxy.c:362: error: expected expression before ‘else’
doxy.c:367: error: case label not within a switch statement
doxy.c:380: error: case label not within a switch statement
doxy.c:384: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘int *’
doxy.c:394: error: expected ‘while’ before ‘getch’
doxy.c:345: warning: unused variable ‘preco’
doxy.c:395: warning: control reaches end of non-void function
doxy.c: At top level:
doxy.c:395: error: expected identifier or ‘(’ before ‘while’
doxy.c:396: error: expected identifier or ‘(’ before ‘}’ token
doxy.c:402: warning: function declaration isn’t a prototype
doxy.c: In function ‘iniciar’:
doxy.c:421: warning: implicit declaration of function ‘gNao’
doxy.c:421: warning: nested extern declaration of ‘gNao’
doxy.c:421: error: ‘N’ undeclared (first use in this function)
doxy.c:421: error: (Each undeclared identifier is reported only once
doxy.c:421: error: for each function it appears in.)
doxy.c:421: error: missing terminating " character
doxy.c:422: error: expected ‘;’ before ‘printf’
doxy.c:435: warning: control reaches end of non-void function
doxy.c: At top level:
doxy.c:437: warning: function declaration isn’t a prototype
doxy.c:452: warning: function declaration isn’t a prototype

Tens erros nas linhas 2, 362, 367, 380, 394, 395, 396, 421, e 422.

Corrige os erros de compilação ( o erro da linha 2 é desculpável :P )

e, se puderes, acaba com os warnings -- especialmente os da linhas 160, 207, 231, 255, 277, 301, 325, 384, e 421.

Mete o teu compilador no nível máximo de warnings para ele te ajudar a fazeres um programa correcto.

Para o teu próximo programa, fá-lo aos bocadinhos. Nunca comeces mais um bocadinho antes do que está feito não ter erros e "funcionar" (funciona, mas incompleto).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem segui esse teu conselho e fiz uma coisa de cada vez.

A entrada de viaturas ja funciona...

Agora podias me ajudar na saída.. não consigo mesmo fazer. .tentei aí mas nao dá... por exemplo escolho a Opçao N do menu

e faço entrar 20 ALUNOS.. depois se escolher a opcao S do menu quero que saia por exemplo 6 alunos do parque.. depende.. mas como se faz isso? ja tentei tudo...

código:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <conio.h>
#include <string.h>
#define MAXAE 550 
#define MAXF 200
#define MAXD 20

//Prototipos das Funções--------------------------------------------------------
void entrada_viaturas(int anlugares);
//void saida_viaturas(int anlugares);


   
//Programa Principal (MAIN)-----------------------------------------------------

int main(void)
{
   int anlugares,fnlugares,nlugares;
   char op, op2;
   
   int i=1,j=1,k=1,l=1,soma=0;
   float res;


              
   do
   {
        system("cls");
        printf("\n ***************************** Menu Principal ****************************");
        printf("\n\n\n\t\t\t\t\t Total de lugares disponiveis: ***");
        printf("\n\n\t\t\t\t\t Lugares parque funcinarios:   ***");
        printf("\n\n\t\t\t\t\t Lugares para deficientes:     ***");
        printf("\n\n (N) Entrada de viaturas");
        printf("\n\n (S) Saida de viaturas");
        printf("\n\n (A) Apresentacao de informacao");
        printf("\n\n (E) Estatisticas");
        printf("\n\n (I) Iniciar");
        printf("\n\n (F) Fim");
        printf("\n\n\n\n Seleccione a opcao: ");
        fflush(stdin);
        scanf("%c",&op);
    	
       switch (op)
       {
            case 'n':
            case 'N': 
               entrada_viaturas(anlugares);
            break;
            
            case 's':
            case 'S':

    

              system ("cls");
              printf("\n\t\t\t**********************\n");  
              printf("\n\t\t\t\tALUNOS\n");
              printf("\n\t\t\t**********************\n\n\n");     
              fnlugares=anlugares+i;
              i++;
              
              printf ("\n\t\t\tSaida com sucesso!\n");
              printf ("\t\t\tTem %d lugares disponiveis!\n",fnlugares);
              getch();
            break;
            
            case 'a':
            case 'A': 
                        
            break;
            
            case 'e': 
            case 'E': 
                     
            break;   
            
            case 'i': 
            case 'I': 
           
            break;      

            case 'F':         
            case 'f':
                  system("cls");
                  printf("\n\n\n\n\n\n\n\t\tObrigado por ter usado a nossa aplicacao...\n\n\n\n\n\t\t");
                  system("pause");     
                  printf("");
	    break;
            
            default: printf ("\n\t\t\tIntroduziu uma opcao invalida...");
            getch();         
       }
   }while(op!='F'&& op!='f');  
}//Fim do Main
       
            
//Funções dos Menus**********************************************************************************

//-->Função ENTRADA DE VIATURAS-------------------------------------------------

void entrada_viaturas(int anlugares) 
{     
    int i=1,j=1,k=1,l=1,soma=0;
    char op;
    int nlugares;
  
    do
    {
         system("cls"); 
         printf("\n\t\t\t\t  **ENTRADA DE VIATURAS**\n"); 
         printf("\n\t\t\t\t1 - Alunos"); 
         printf("\n\n\t\t\t\t2 - Funcionarios");
         printf("\n\n\t\t\t\t3 - Deficientes");     
         printf("\n\n\t\t\t\t4 - Pessoas externas");  
         printf("\n\n\t\t\t\t5 - voltar ao menu principal\n");  
         printf("\n\t\t\t\tSelecione a Opcao: ");                                  
         fflush (stdin);
         scanf("%c", &op);
       
         switch (op)
         {
            case '1':
              system("cls");
              printf("\n\t\t\t**********************\n");  
              printf("\n\t\t\t\tALUNOS\n");
              printf("\n\t\t\t**********************\n\n\n");     
              printf("\n\t\t\tEscolheu a opcao %c\n",op);
              anlugares=MAXAE-i;
              i++;
              if (anlugares==0)
              {
                 printf("\n\t\t\tParque esgotado!");                
              }
              else
              {
                 printf ("\n\t\t\tEntrada com sucesso!\n");
                 printf ("\t\t\tTem %d lugares disponiveis!\n",anlugares);
              } 
              getch();     
              break;
              
              case '2':
                system("cls");
                printf("\n\t\t\t************************\n");  
                printf("\n\t\t\t\tFUNCIONARIOS\n");
                printf("\n\t\t\t************************\n\n\n");     
                printf("\n\t\t\tEscolheu a opcao %c\n",op);
                nlugares=MAXF-j;
                j++;
                if (anlugares==0)
                {
                  printf("\n\t\t\tParque esgotado!");                
                }
                else
               {
                  printf ("\n\t\t\tEntrada com sucesso!\n");
                  printf ("\t\t\tTem %d lugares disponiveis!\n",nlugares);
               } 
               getch(); 
                break;
              
              case '3':
                system("cls");
                printf("\n\t\t\t\t**************************\n");  
                printf("\n\t\t\t\t\tDEFICIENTES\n");
                printf("\n\t\t\t\t**************************\n\n\n");     
                printf("\n\t\t\tEscolheu a opcao %c\n",op);
                nlugares=MAXD-k;
                k++;
                if (nlugares==0)
                {
                  printf("\n\t\t\tParque esgotado!");                
                }
                else
                {
                  printf ("\n\t\t\tEntrada com sucesso!\n");
                  printf ("\t\t\tTem %d lugares disponiveis!\n",nlugares);
                } 
                getch(); 
              break;
              
              case '4':
                system("cls");
                printf("\n\t\t\t****************************\n");  
                printf("\n\t\t\t\tPESSOAS EXTERNAS\n");
                printf("\n\t\t\t****************************\n\n\n");     
                printf("\n\t\t\tEscolheu a opcao %c\n",op);
                nlugares=MAXAE-l;
                l++;
                if (nlugares==0)
                {
                  printf("\n\t\t\tParque esgotado!");                
                }
                else
                {
                  printf ("\n\t\t\tEntrada com sucesso!\n");
                  printf ("\t\t\tTem %d lugares disponiveis!\n",nlugares);
                } 
                getch();
              break;
              
              case '5':
              
              break;
                                 
              default: printf ("\n\t\t\tIntroduziu uma opcao invalida...");
              getch();  
         }
    }while(op!='5');
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens que passar os diversos números de lugares ocupados entre as diferentes funções.

Eu faria um array dentro da função main para ter esses valores e passava o array para as funções, por exemplo

/* ... */
/* Protótipos das Funções */
void entrada_viaturas(int lug_liv[]);

int main(void) {
  int lugares_livres[4] = {MAXAE, MAXF, MAXD, MAXAE};
  /* ... */
        switch (op)
        {
          case 'n': case 'N':
            entrada_viaturas(lugares_livres);
            break;
          /* ... */
        }
  /* ... */
}

void entrada_viaturas(int lug_liv[]) {
  /* ... */
    /* entrada de aluno */
    if (lug_liv[0] > 0) {
      lug_liv[0]--;
      printf ("\n\t\t\tEntrada com sucesso!\n");
      printf ("\t\t\tTem %d lugares disponiveis!\n", MAXAE - lug_liv[0]);
    } else {
      printf("\n\t\t\tParque esgotado!");
    }
  /* ... */
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou tentar aplicar então...

Mas a função  entrada  viaturas está correcta não está?

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, o que eu escrevi está correcto, embora incompleto.

Não te podes enganar nos índices do array.

O primeiro elemento corresponde a lugares de alunos; o segundo a lugares de funcionários; o terceito para deficientes; e o quarto para pessoas externas.

Talvez ficasse bem fazeres estes indices em #define

#define INDEX_ALUNO 0
#define INDEX_FUNCIONARIO 1
#define INDEX_DEFICIENTE 2
#define INDEX_EXTERNO 3

e usares esses defines no código

/* ... */
lug_liv[iNDEX_ALUNO]--;
/* ... */
if (lug_liv[iNDEX_FUNCIONARIO] > 0) { /* ... */ }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então para o caso da entrada do aluno ficava:

         switch (op)
         {
            case '1':
              system("cls");
              printf("\n\t\t\t**********************\n");  
              printf("\n\t\t\t\tALUNOS\n");
              printf("\n\t\t\t**********************\n\n\n");     
              printf("\n\t\t\tEscolheu a opcao %c\n",op);
             if (lug_liv[iNDEX_ALUNO] > 0)
              {
              lug_liv[iNDEX_ALUNO]--;
                  
                 printf ("\n\t\t\tEntrada com sucesso!\n");
                 printf ("\t\t\tTem %d lugares disponiveis!\n", MAXAE-lug_liv[iNDEX_ALUNO]);
              }
                 else
                 {
                   printf("\n\t\t\tParque esgotado!");    
                 }
               
              getch();     
              break;

Assim como está, ele só me está fazer 1 e depois 2 , 3 ...etc..

mas depois queria que ele me disse se que ainda sobram 10 lugares por exemplo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já tens o começo disso no menu principal

        printf("\n ***************************** Menu Principal ****************************");
        printf("\n\n\n\t\t\t\t\t Total de lugares disponiveis: ***");

Só precisas de alterar os *** para %d e adicionar o valor ao printf (substitui os ____ pelo valor correcto).

        printf("\n\n\n\t\t\t\t\t Total de lugares disponiveis: %d", ________);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah já estou a ver...

Então fica: printf("\n\n\n\t\t\t\t\t Total de lugares disponiveis: %d",lugares_livres[0]);  Correcto?

Então agora para a saída de viaturas

tenho que criar a função saída de viaturas.

Vamos lá ver se consigo.

Tenho também uma questão:

  int lugares_livres[4] = {MAXAE, MAXF, MAXD, MAXAE};  Porquê ser o array 4 elementos?

A posição 0 é:MAXAE 

A posição 1 é: MAXF

A posição 2 é: MAXD

A posição 3 é: MAXAE

A posição 4 é para quê?

Desde já obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah já estou a ver...

Então fica: printf("\n\n\n\t\t\t\t\t Total de lugares disponiveis: %d",lugares_livres[0]);  Correcto?

Acho que sim ... isto é: lugares_livres[0] tem o valor de lugares livres para alunos, não é o "Total de lugares disponiveis"

Tenho também uma questão:

  int lugares_livres[4] = {MAXAE, MAXF, MAXD, MAXAE};  Porquê ser o array 4 elementos?

A posição 0 é:MAXAE 

A posição 1 é: MAXF

A posição 2 é: MAXD

A posição 3 é: MAXAE

A posição 4 é para quê?

A posição 4 não existe.

O array tem 4 elementos, noemadamente, lugares_livres[0], lugares_livres[1], lugares_livres[2], e lugares_livres[3].

Em C é sempre assim. Os arrays começam em 0 e vão até ao limite - 1. Depois de os usares durante algum tempo habituas-te ... e depois de mais outro tempito achas que as outras maneiras de tratar arrays são "esquisitas" :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois essa mensagem ja´corrigi :P

Muito  obrigado, isto de usar arrays parece me ser uma boa maneira...

Desculpa estar sempre a incomodar: Mas já valeu muito mesmo.

No if (lug_liv[iNDEX_ALUNO] > 0)    -->Como é que penso, pro exemplo: Então se INDEX_ALUNO é o elemento da posição 0, vamos ter if (lug_liv[0] >0) , Então estamos a dizer que "SE 550 >0 "?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, da primeira vez que o programa passa por aí.

Se reparares, na instrução seguinte esse 550 passa a 549 :P

Se entrarem muitos alunos, a certa altura terás

if (lug_liv[0] > 0) que é o mesmo que if (1 > 0)

... e depois if (0 > 0).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agora para as saídas, é fazer o mesmo que apra as entradas mas ir buscar o valor que "sobrou" das entradas, e se alguem saír aumentar o espaço do parque.

Posso fazer assim:

void saida_viaturas(int acres_lug[])
{
         system("cls");
              printf("\n\t\t\t**********************\n");  
              printf("\n\t\t\t\tALUNOS\n");
              printf("\n\t\t\t**********************\n\n\n");     
              printf("\n\t\t\tEscolheu a opcao %c\n",op);
              if (acres_lug[0] > 0)
              {
                 acres_lug[iNDEX_ALUNO]++;
                 printf ("\n\t\t\tSaida com sucesso!\n");
                 printf ("\t\t\tFoi para o %d lugar!\n", MAXAE-acres_lug[iNDEX_ALUNO]);
              }
              else
              {
                 printf("\n\t\t\tParque vazio!");    
              }

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

YES!

Gostei particularmente de teres mudado o nome do array dentro da função :P

... mas (há sempre um mas) ... tu não queres aumentar o número de lugares vazios quando if (acres_lug[0] > 0); a condição é outra.

E podes usar INDEX_ALUNO no if, em vez do 0.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:P Finalmente algo bem :)

então será:   if (acres_lug[iNDEX_ALUNO] >= 0)

assim funciona me bem o problema é que depois chega a uma parte que continua -1,- 2 etc...

Tenho assim (código todo):

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <conio.h>
#include <string.h>
#define MAXAE 5 
#define MAXF 200
#define MAXD 20
#define INDEX_ALUNO 0
#define INDEX_FUNCIONARIO 1
#define INDEX_DEFICIENTE 2
#define INDEX_EXTERNO 3

//Prototipos das Funções--------------------------------------------------------
void entrada_viaturas(int lug_liv[]);
void saida_viaturas(int acres_lug[]);


   
//Programa Principal (MAIN)-----------------------------------------------------

int main(void)
{
   int lugares_livres[4] = {MAXAE, MAXF, MAXD, MAXAE};
   int anlugares,fnlugares,nlugares;
   char op, op2;
   
   int i=1,j=1,k=1,l=1,soma=0;
   float res;


              
   do
   {
        system("cls");
        printf("\n ***************************** Menu Principal ****************************");
        printf("\n\n\n\t\t\t\t\t Lugares disponiveis do ALUNO: %d",lugares_livres[0]);
        printf("\n\n\t\t\t\t\t Lugares parque funcinarios: %d", lugares_livres[1]);
        printf("\n\n\t\t\t\t\t Lugares para deficientes: %d", lugares_livres[2]);
        printf("\n\n (N) Entrada de viaturas");
        printf("\n\n (S) Saida de viaturas");
        printf("\n\n (A) Apresentacao de informacao");
        printf("\n\n (E) Estatisticas");
        printf("\n\n (I) Iniciar");
        printf("\n\n (F) Fim");
        printf("\n\n\n\n Seleccione a opcao: ");
        fflush(stdin);
        scanf("%c",&op);
    	
       switch (op)
       {
            case 'n':
            case 'N': 
               entrada_viaturas(lugares_livres);
            break;
            
            case 's':
            case 'S':
               saida_viaturas(lugares_livres);
      
            break;
            
            case 'a':
            case 'A': 
                        
            break;
            
            case 'e': 
            case 'E': 
                     
            break;   
            
            case 'i': 
            case 'I': 
           
            break;      

            case 'F':         
            case 'f':
                  system("cls");
                  printf("\n\n\n\n\n\n\n\t\tObrigado por ter usado a nossa aplicacao...\n\n\n\n\n\t\t");
                  system("pause");     
                  printf("");
	    break;
            
            default: printf ("\n\t\t\tIntroduziu uma opcao invalida...");
            getch();         
       }
   }while(op!='F'&& op!='f');  
}//Fim do Main
       
            
//Funções dos Menus**********************************************************************************

//-->Função ENTRADA DE VIATURAS-------------------------------------------------------------------

void entrada_viaturas(int lug_liv[]) 
{     
    char op;
  
    do
    {
         system("cls"); 
         printf("\n\t\t\t\t  **ENTRADA DE VIATURAS**\n"); 
         printf("\n\t\t\t\t1 - Alunos"); 
         printf("\n\n\t\t\t\t2 - Funcionarios");
         printf("\n\n\t\t\t\t3 - Deficientes");     
         printf("\n\n\t\t\t\t4 - Pessoas externas");  
         printf("\n\n\t\t\t\t5 - voltar ao menu principal\n");  
         printf("\n\t\t\t\tSelecione a Opcao: ");                                  
         fflush (stdin);
         scanf("%c", &op);
       
         switch (op)
         {
            case '1':
              system("cls");
              printf("\n\t\t\t**********************\n");  
              printf("\n\t\t\t\tALUNOS\n");
              printf("\n\t\t\t**********************\n\n\n");     
              printf("\n\t\t\tEscolheu a opcao %c\n",op);
             if (lug_liv[iNDEX_ALUNO] > 0)
              {
                 lug_liv[iNDEX_ALUNO]--;
                 printf ("\n\t\t\tEntrada com sucesso!\n");
                 printf ("\t\t\tFoi para o %d lugar!\n", MAXAE-lug_liv[iNDEX_ALUNO]);
              }
              else
              {
                 printf("\n\t\t\tParque esgotado!");    
              }
               
              getch();     
              break;
              
              case '2':
                system("cls");
                printf("\n\t\t\t************************\n");  
                printf("\n\t\t\t\tFUNCIONARIOS\n");
                printf("\n\t\t\t************************\n\n\n");     
                printf("\n\t\t\tEscolheu a opcao %c\n",op);
                if(lug_liv[iNDEX_FUNCIONARIO]>0)
                {
                   lug_liv[iNDEX_FUNCIONARIO]--;
                   printf("\n\t\t\tEntrada com sucesso!\n");
                   printf("\t\t\tFoi para o %d lugar!\n",MAXF-lug_liv[iNDEX_FUNCIONARIO]);
                }
                else
                {
                  printf("\n\t\t\tParque esgotado!");    
                }
                getch(); 
                break;
              
              case '3':
                system("cls");
                printf("\n\t\t\t\t**************************\n");  
                printf("\n\t\t\t\t\tDEFICIENTES\n");
                printf("\n\t\t\t\t**************************\n\n\n");     
                printf("\n\t\t\tEscolheu a opcao %c\n",op);
                if(lug_liv[iNDEX_DEFICIENTE]>0)
                {
                   lug_liv[iNDEX_DEFICIENTE]--;
                   printf("\n\t\t\tEntrada com sucesso!\n");
                   printf("\t\t\tFoi para o %d lugar!\n",MAXD-lug_liv[iNDEX_DEFICIENTE]);
                }
                else
                {
                  printf("\n\t\t\tParque esgotado!");    
                }
                getch();
              break;
              
              case '4':
                system("cls");
                printf("\n\t\t\t****************************\n");  
                printf("\n\t\t\t\tPESSOAS EXTERNAS\n");
                printf("\n\t\t\t****************************\n\n\n");     
                printf("\n\t\t\tEscolheu a opcao %c\n",op);
                if(lug_liv[iNDEX_EXTERNO]>0)
                {
                   lug_liv[iNDEX_EXTERNO]--;
                   printf("\n\t\t\tEntrada com sucesso!\n");
                   printf("\t\t\tFoi para o %d lugar!\n",MAXAE-lug_liv[iNDEX_EXTERNO]);
                }
                else
                {
                  printf("\n\t\t\tParque esgotado!");    
                }
                getch();
              break;
              
              case '5':
              
              break;
                                 
              default: printf ("\n\t\t\tIntroduziu uma opcao invalida...");
              getch();  
         }
    }while(op!='5');
}

//-->Função SAÍDA DE VIATURAS------------------------------------------------------------------------------------------------------------
void saida_viaturas(int acres_lug[])
{
  char op;
  
    do
    {
         system("cls"); 
         printf("\n\t\t\t\t  **SAIDA DE VIATURAS**\n"); 
         printf("\n\t\t\t\t1 - Alunos"); 
         printf("\n\n\t\t\t\t2 - Funcionarios");
         printf("\n\n\t\t\t\t3 - Deficientes");     
         printf("\n\n\t\t\t\t4 - Pessoas externas");  
         printf("\n\n\t\t\t\t5 - voltar ao menu principal\n");  
         printf("\n\t\t\t\tSelecione a Opcao: ");                                  
         fflush (stdin);
         scanf("%c", &op);
       
         switch (op)
         {
            case '1':
              system("cls");
              printf("\n\t\t\t**********************\n");  
              printf("\n\t\t\t\tALUNOS\n");
              printf("\n\t\t\t**********************\n\n\n");     
              printf("\n\t\t\tEscolheu a opcao %c\n",op);
              if (acres_lug[iNDEX_ALUNO] >= 0)
              {
                 acres_lug[iNDEX_ALUNO]++;
                 printf ("\n\t\t\tEntrada com sucesso!\n");
                 printf ("\t\t\tAumentou %d lugar!\n", MAXAE-acres_lug[iNDEX_ALUNO]);
              }
              else
              {
                 printf("\n\t\t\tParque Vazio!");    
              }
               
              getch();     
              break;
              case '5':
              break;
                                 
              default: printf ("\n\t\t\tIntroduziu uma opcao invalida...");
              getch();  
         }
    }while(op!='5');
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na função saida_viaturas o if continua mal.

              if (acres_lug[iNDEX_ALUNO] >= 0)
              {
                 acres_lug[iNDEX_ALUNO]++;
                 printf ("\n\t\t\tEntrada com sucesso!\n");
                 printf ("\t\t\tAumentou %d lugar!\n", MAXAE-acres_lug[iNDEX_ALUNO]);
              }
              else
              {
                 printf("\n\t\t\tParque Vazio!");   
              }

Quando é que queres que o programa imprima "Parque Vazio!"?

É quando o acres_lug[iNDEX_ALUNO] não fôr >= 0?

Pergunto pelo parque vazio porque talvez seja mais fácil e é o que está no else.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que não estou a conseguir é visualizar a forma de pensar....

Ele vai buscar o valor das entradas porque ficou guardado na posição 0 não é?

Por exemplo:

Se o total de parques dos Alunos for 5, e entrarem 4 carros.. ficam disponível 1 parque.

Então com essa condição pensaríamos assim: if (acres_lug[iNDEX_ALUNO] >= 0), Se 1>=0

  acres_lug[iNDEX_ALUNO]++; -->1+1=2

  printf-->Saida com sucesso

  printf--> Disponibilizou 3 lugar", MAXAE-acres_lug[iNDEX_ALUNO]  ------->  5-2=3

senao for >=0

    parque vazio

Neste caso é assim que penso, ou está mal?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Continua ... continua a tirar carros do parque

if (acres_lug[iNDEX_ALUNO] >= 0), Se 2 >= 0

...

if (acres_lug[iNDEX_ALUNO] >= 0), Se 3 >= 0

...

if (acres_lug[iNDEX_ALUNO] >= 0), Se 4 >= 0

...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois eu vi isso está infinito dessa forma...:P

já sei tem de ser < MAXAE  //No exemplo que dei é 5

Eu até tinha testado <=5  logo que me tinha dito, mas áa ate o -1 e não associei depois que tinha de irar o igual..

Então a minha forma de pensar á bocado está bem e com valores correctos ?

é que se sim, acho que já percebo vectores :)

Muito obrigado pela paciência comigo...

Estou bastante grato..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

"< MAXAE" está correcto :P

acho que já percebo vectores

Ainda bem ... mas este array (ou vector ou lá o que lhe queiras chamar; eu continuo a chamá-lo array) é um caso muito especial de array. Ele só "nasceu" para substituir 4 variáveis e tornar mais fácil as definições e chamadas de funções (dentro da função o array é, de facto, um ponteiro -- mas isso fica para outra altura).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já ouvi falar algo sobre isso...

é verdade, além das entradas e saídas ainda vou ter de aplicar a hora que entrou no parque e a hora que saiu, porque:

O preço a pagar por cada hora de estacionamento é de 0,50€ e cada período de 6 horas custa de 2,5 €, e o preço para um dia é de 6€.

Ou seja,

Cada período de 24 horas (1 dia) custa 6€.

Cada período de 6 horas.

Então estava a pensar guardar as horas num vector de 3 elementos par guardar horas, minutos e segundos.

mas como tenho de apresentar o calculo final para ver quantas horas vou estar no parque passo também tudo para segundos.

Podia me ver se estou a ir bem.

Obrigado, e mais uma vez desculpe o incomodo, sempre com o mesmo.


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <conio.h>
#include <string.h>
#define MAXAE 5 
#define MAXF 200
#define MAXD 20
#define INDEX_ALUNO 0
#define INDEX_FUNCIONARIO 1
#define INDEX_DEFICIENTE 2
#define INDEX_EXTERNO 3

//Prototipos das Funções--------------------------------------------------------
void entrada_viaturas(int lug_liv[], int horas2[]);
void saida_viaturas(int acres_lug[]);


   
//Programa Principal (MAIN)-----------------------------------------------------

int main(void)
{
   int lugares_livres[4] = {MAXAE, MAXF, MAXD, MAXAE};
   int horas2[3];
   int anlugares,fnlugares,nlugares;
   char op, op2;
   
   int i=1,j=1,k=1,l=1,soma=0;
   float res;


              
   do
   {
        system("cls");
        printf("\n ***************************** Menu Principal ****************************");
        printf("\n\n\n\t\t\t\t\t Lugares disponiveis do ALUNO: %d",lugares_livres[0]);
        printf("\n\n\t\t\t\t\t Lugares parque funcinarios: %d", lugares_livres[1]);
        printf("\n\n\t\t\t\t\t Lugares para deficientes: %d", lugares_livres[2]);
        printf("\n\n (N) Entrada de viaturas");
        printf("\n\n (S) Saida de viaturas");
        printf("\n\n (A) Apresentacao de informacao");
        printf("\n\n (E) Estatisticas");
        printf("\n\n (I) Iniciar");
        printf("\n\n (F) Fim");
        printf("\n\n\n\n Seleccione a opcao: ");
        fflush(stdin);
        scanf("%c",&op);
    	
       switch (op)
       {
            case 'n':
            case 'N': 
               entrada_viaturas(lugares_livres, horas2);
            break;
            
            case 's':
            case 'S':
               saida_viaturas(lugares_livres);
      
            break;
            
            case 'a':
            case 'A': 
                        
            break;
            
            case 'e': 
            case 'E': 
                     
            break;   
            
            case 'i': 
            case 'I': 
           
            break;      

            case 'F':         
            case 'f':
                  system("cls");
                  printf("\n\n\n\n\n\n\n\t\tObrigado por ter usado a nossa aplicacao...\n\n\n\n\n\t\t");
                  system("pause");     
                  printf("");
	    break;
            
            default: printf ("\n\t\t\tIntroduziu uma opcao invalida...");
            getch();         
       }
   }while(op!='F'&& op!='f');  
}//Fim do Main
       
            
//Funções dos Menus**********************************************************************************

//-->Função ENTRADA DE VIATURAS-------------------------------------------------

void entrada_viaturas(int lug_liv[], int hor[]) 
{    
      int h_entrada, m_entrada, s_entrada,etotal_horas,hora_ent,minutos_ent,segundos_ent; 
    char op;
  
    do
    {
         system("cls"); 
         printf("\n\t\t\t\t  **ENTRADA DE VIATURAS**\n"); 
         printf("\n\t\t\t\t1 - Alunos"); 
         printf("\n\n\t\t\t\t2 - Funcionarios");
         printf("\n\n\t\t\t\t3 - Deficientes");     
         printf("\n\n\t\t\t\t4 - Pessoas externas");  
         printf("\n\n\t\t\t\t5 - voltar ao menu principal\n");  
         printf("\n\t\t\t\tSelecione a Opcao: ");                                  
         fflush (stdin);
         scanf("%c", &op);
       
         switch (op)
         {
            case '1':
              system("cls");
              printf("\n\t\t\t**********************\n");  
              printf("\n\t\t\t\tALUNOS\n");
              printf("\n\t\t\t**********************\n\n\n");     
              printf("\n\t\t\tEscolheu a opcao %c\n",op);
              
              //Saber as horas
              printf("\n--Insira hora de entrada--\n");
              printf("hora: ");
              scanf("%d",&hor[0]);
              printf("minutos: ");
              scanf("%d",&hor[1]);
              printf("segundos: ");
              scanf("%d",&hor[2]);
              hora_ent=h_entrada*3600;
              minutos_ent=m_entrada*60;
              printf("Total de horas: ");
             // scanf("%d",&etotal_horas);
              
             //Fazer Entrar viaturas 
             if (lug_liv[iNDEX_ALUNO] > 0)
              {
                 lug_liv[iNDEX_ALUNO]--;
                 printf ("\n\t\t\tEntrada com sucesso!\n");
                 printf ("\t\t\tFoi para o %d lugar!\n", MAXAE-lug_liv[iNDEX_ALUNO]);
              }
              else
              {
                 printf("\n\t\t\tParque esgotado!");    
              }
               
              getch();     
              break;
              
              case '2':
                system("cls");
                printf("\n\t\t\t************************\n");  
                printf("\n\t\t\t\tFUNCIONARIOS\n");
                printf("\n\t\t\t************************\n\n\n");     
                printf("\n\t\t\tEscolheu a opcao %c\n",op);
                if(lug_liv[iNDEX_FUNCIONARIO]>0)
                {
                   lug_liv[iNDEX_FUNCIONARIO]--;
                   printf("\n\t\t\tEntrada com sucesso!\n");
                   printf("\t\t\tFoi para o %d lugar!\n",MAXF-lug_liv[iNDEX_FUNCIONARIO]);
                }
                else
                {
                  printf("\n\t\t\tParque esgotado!");    
                }
                getch(); 
                break;
              
              case '3':
                system("cls");
                printf("\n\t\t\t\t**************************\n");  
                printf("\n\t\t\t\t\tDEFICIENTES\n");
                printf("\n\t\t\t\t**************************\n\n\n");     
                printf("\n\t\t\tEscolheu a opcao %c\n",op);
                if(lug_liv[iNDEX_DEFICIENTE]>0)
                {
                   lug_liv[iNDEX_DEFICIENTE]--;
                   printf("\n\t\t\tEntrada com sucesso!\n");
                   printf("\t\t\tFoi para o %d lugar!\n",MAXD-lug_liv[iNDEX_DEFICIENTE]);
                }
                else
                {
                  printf("\n\t\t\tParque esgotado!");    
                }
                getch();
              break;
              
              case '4':
                system("cls");
                printf("\n\t\t\t****************************\n");  
                printf("\n\t\t\t\tPESSOAS EXTERNAS\n");
                printf("\n\t\t\t****************************\n\n\n");     
                printf("\n\t\t\tEscolheu a opcao %c\n",op);
                if(lug_liv[iNDEX_EXTERNO]>0)
                {
                   lug_liv[iNDEX_EXTERNO]--;
                   printf("\n\t\t\tEntrada com sucesso!\n");
                   printf("\t\t\tFoi para o %d lugar!\n",MAXAE-lug_liv[iNDEX_EXTERNO]);
                }
                else
                {
                  printf("\n\t\t\tParque esgotado!");    
                }
                getch();
              break;
              
              case '5':
              
              break;
                                 
              default: printf ("\n\t\t\tIntroduziu uma opcao invalida...");
              getch();  
         }
    }while(op!='5');
}

//-->Função SAÍDA DE VIATURAS---------------------------------------------------
void saida_viaturas(int acres_lug[])
{
  int h_saida, m_saida, s_saida,stotal_horas;
  char op;
  
    do
    {
         system("cls"); 
         printf("\n\t\t\t\t  **SAIDA DE VIATURAS**\n"); 
         printf("\n\t\t\t\t1 - Alunos"); 
         printf("\n\n\t\t\t\t2 - Funcionarios");
         printf("\n\n\t\t\t\t3 - Deficientes");     
         printf("\n\n\t\t\t\t4 - Pessoas externas");  
         printf("\n\n\t\t\t\t5 - voltar ao menu principal\n");  
         printf("\n\t\t\t\tSelecione a Opcao: ");                                  
         fflush (stdin);
         scanf("%c", &op);
       
         switch (op)
         {
            case '1':
              system("cls");
              printf("\n\t\t\t**********************\n");  
              printf("\n\t\t\t\tALUNOS\n");
              printf("\n\t\t\t**********************\n\n\n");     
              printf("\n\t\t\tEscolheu a opcao %c\n",op);
              
              //Saber as horas
              printf("\n--Insira hora de Saída--\n");
              printf("hora: ");
              scanf("%d",&h_saida);
              printf("minutos: ");
              scanf("%d",&m_saida);
              printf("segundos: ");
              scanf("%d",&s_saida);
              printf("Total de horas: ");
              scanf("%d",&stotal_horas);
              
              //Fazer sair Viaturas
              if (acres_lug[iNDEX_ALUNO] < MAXAE)
              {
                 acres_lug[iNDEX_ALUNO]++;
                 printf ("\n\t\t\tEntrada com sucesso!\n");
                 printf ("\t\t\tAumentou %d lugar!\n", MAXAE-acres_lug[iNDEX_ALUNO]);
              }
              else
              {
                 printf("\n\t\t\tParque Vazio!");    
              }
               
              getch();     
              break;
              
              case '2':
                system("cls");
                printf("\n\t\t\t************************\n");  
                printf("\n\t\t\t\tFUNCIONARIOS\n");
                printf("\n\t\t\t************************\n\n\n");     
                printf("\n\t\t\tEscolheu a opcao %c\n",op);
                if (acres_lug[iNDEX_FUNCIONARIO] < MAXF)
                {
                   acres_lug[iNDEX_FUNCIONARIO]++;
                   printf ("\n\t\t\tEntrada com sucesso!\n");
                   printf ("\t\t\tAumentou %d lugar!\n", MAXF-acres_lug[iNDEX_FUNCIONARIO]);
                }
                else
                {
                  printf("\n\t\t\tParque Vazio!");    
                }
                getch(); 
              break;
              
              case '3':
                system("cls");
                printf("\n\t\t\t\t**************************\n");  
                printf("\n\t\t\t\t\tDEFICIENTES\n");
                printf("\n\t\t\t\t**************************\n\n\n");     
                printf("\n\t\t\tEscolheu a opcao %c\n",op);
                if (acres_lug[iNDEX_DEFICIENTE] < MAXD)
                {
                   acres_lug[iNDEX_DEFICIENTE]++;
                   printf ("\n\t\t\tEntrada com sucesso!\n");
                   printf ("\t\t\tAumentou %d lugar!\n", MAXD-acres_lug[iNDEX_DEFICIENTE]);
                }
                else
                {
                   printf("\n\t\t\tParque Vazio!");    
                }
                getch();
              break;
              
              case '4':
                system("cls");
                printf("\n\t\t\t****************************\n");  
                printf("\n\t\t\t\tPESSOAS EXTERNAS\n");
                printf("\n\t\t\t****************************\n\n\n");     
                printf("\n\t\t\tEscolheu a opcao %c\n",op);
                if (acres_lug[iNDEX_EXTERNO] < MAXAE)
                {
                   acres_lug[iNDEX_EXTERNO]++;
                   printf ("\n\t\t\tEntrada com sucesso!\n");
                   printf ("\t\t\tAumentou %d lugar!\n", MAXAE-acres_lug[iNDEX_EXTERNO]);
                }
                else
                {
                   printf("\n\t\t\tParque Vazio!");    
                }
                getch();
              break;
         
              case '5':
              break;
                                 
              default: printf ("\n\t\t\tIntroduziu uma opcao invalida...");
              getch();  
         }
    }while(op!='5');
}


0

Partilhar esta mensagem


Link 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