Ir para o conteúdo
doxy

Trabalho em C

Mensagens Recomendadas

doxy    1
doxy

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();
     }

     

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Ferreira    0
Ferreira

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

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) ...)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
doxy    1
doxy

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();
     }

     

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg
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).

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
doxy    1
doxy

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');
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

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!");
    }
  /* ... */
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

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) { /* ... */ }

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
doxy    1
doxy

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

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", ________);

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
doxy    1
doxy

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
doxy    1
doxy

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 "?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

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).

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
doxy    1
doxy

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!");    
              }

}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
doxy    1
doxy

: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');
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
doxy    1
doxy

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

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

...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
doxy    1
doxy

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..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

"< 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).

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
doxy    1
doxy

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');
}


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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade