Exemplo n.º 1
0
/*
* funcao que trata dos baloes menu baloes
* Variaveis de entrada
* opcao - numero inteiro
* baloes - baloesStruct em vetor
* contador - contadorStruct por referência
*/
void menuBaloes(int opcao, baloesStruct baloes[], contadorStruct *contador){
    int posicao=-1;
    char letra;
    switch(opcao){
        case 1: //inserir baloes no vetor
            inserirBaloes(baloes, contador);
        break;
        case 2:
            //consultar dados dos baloes
            do{
                printf("\n\n\n#############################################################\n");
                printf("#_______________ MENU  BALOES -> Consultas   _______________#\n");
                printf("#_______________ 1 - Ver todos os baloes     _______________#\n");
                printf("#_______________ 2 - Escolher Balao          _______________#\n");
                printf("#_______________ 3 - Ver Baloes por posicao  _______________#\n");
                printf("#_______________ 0 - Sair                    _______________#\n");
                printf("#############################################################\n");
                printf("Escolha uma opcao: ");
                opcao = lerNumero(0,3);
                switch(opcao){
                    case 1:
                        //consultar dados de todos os baloes
                        consultarBaloes(baloes, contador->nrBaloes, '\0'); //passa o argumento \0 porque não quer filtrar pela posicao
                    break;
                    case 2:
                        //mostra a informacao de um balao
                        posicao = loopPesquisaBalaoValido(baloes, *contador);
                        infoBaloes(baloes[posicao]);
                    break;
                    case 3:
                        //consultar baloes por local A, B, C
                        letra = loopPedirPosicao("Ver Baloes nas Posicoes A, B ou C\n Escolha uma opcao:");
                        consultarBaloes(baloes, contador->nrBaloes, letra);//passa o argumento letra para filtrar as posicoes do balao
                    break;

                }
            }while(opcao!=0);
            /**fim consultar dados dos baloes**/
        break;
        case 3:
            //alterar dados dos baloes
            alterarDadosBalao(baloes, contador);
        break;
        case 4:
            //Eliminar Balao
            printf("Insira o numero do balao que pretende Eliminar:\n");
            opcao = lerNumero(1,MAXIMO_BALOES);
            posicao = procurarNumeroBalao(baloes, opcao, contador->nrBaloes);
            if(posicao!=-1){
                eliminarBaloes(baloes, contador, posicao);
            }else{
                printf("O numero do balao nao foi encontrado!\n");
            }
        break;
    }
}
Exemplo n.º 2
0
/*pede a data em até que seja uma data correcta
* Variaveis de entrada
* baloes - Estrutura dos baloes
* devolve a estrutura baloes
*/
dataFabricoStruct loopDataBalao(dataFabricoStruct data){
    do{
        printf("Data do Balao\n Insira o dia:\n");
        data.dia = lerNumero(1,31);
        printf("Insira o mes:\n");
        data.mes = lerNumero(1, 12);
        printf("Insira o ano:\n");
        data.ano = lerNumero(DATA_MINIMA, ANO);
    }while(validarData(data.dia, data.mes, data.ano)==0);
return data;
}
Exemplo n.º 3
0
void main(){
  int num = 0;
  unsigned int opcao;
  unsigned int total = 0;
  setlocale(LC_ALL, "Portuguese");
  //system("clear"); // limpa console, util para Linux

  lerNumero(&num);

  do{
    imprimeMenu(&opcao);
    switch(opcao){
      case 1:
        total = calcularFatorial(num);
        printf("Fatorial: %d \n", total);
        break;
      case 2:
        total = calcularSomatorio(num);
        printf("Somatório: %d \n", total);
        break;
      default:
        printf("Opção inválida. \n");
        break;
    }
  } while(opcao < 1 || opcao > 2);
  
}
Exemplo n.º 4
0
void lerNumero(int *num){
  printf("Digite um número positivo inteiro: ");
  scanf("%d", num);
  if(*num <= 0){
    lerNumero(num);
  }
}
Exemplo n.º 5
0
/*
* funcao para inserir os baloes no vetor baloesStruct
* baloes - baloesStruct em vetor
* contador - contadorStruct por referência
*/
void inserirBaloes(baloesStruct baloes[], contadorStruct *contador){
    int numero;
    int novaposicao=contador->nrBaloes;
    if(contador->nrBaloes<MAXIMO_BALOES){
    //numero do balao
    numero = loopPesquisaBalaoinValido(baloes, contador->nrBaloes);
    baloes[novaposicao].numero=numero;
    //designacao
    printf("Insira a designacao do balao:\n");
    lerString(baloes[novaposicao].designacao, MAX_DESIGNACAO);
    baloes[novaposicao].data=loopDataBalao(baloes[novaposicao].data);
    //Lotacao maxima do balao
    printf("Insira a lotacao maxima MAX ate %d\n", LOTACAOMAXIMA);
    baloes[novaposicao].lotacaoMaxima = lerNumero(LOTACAOMINIMA, LOTACAOMAXIMA);
    //posicao do balao
    baloes[novaposicao].localInicio = loopPedirPosicao("Insira a sua posicao A, B ou C:\n");
    baloes[novaposicao].localFinal='\0';
    baloes[novaposicao].bilhetes=NULL;
    baloes[novaposicao].nrBilhetes=0;
    baloes[novaposicao].numeroPessoasTransportadas=0;
    baloes[novaposicao].Totalviagens=0;
    baloes[novaposicao].nrTuristasNobalao=0;
    infoBaloes(baloes[novaposicao]);
    printf("Balao inserido com sucesso!\n");
    contador->nrBaloes++;
    }else{
        printf("O maximo de baloes suportado e: %d\n Nao e possivel inserir mais baloes!", MAXIMO_BALOES);
    }
}
Exemplo n.º 6
0
/* Alterar dados do balao
* Variaveis de entrada
*  baloes - baloesStruct em vetor
* contador - contadorStruct por referência
*/
void alterarDadosBalao(baloesStruct baloes[], contadorStruct *contador){
    int opcao, posicao=-1;
    printf("\n\n ALTERACAO DE DADOS NOS BALOES! \n \n");
    posicao = loopPesquisaBalaoValido(baloes, *contador);
    infoBaloes(baloes[posicao]); //mostra a info do balao
    do{
        printf("\n\n\n#############################################################\n");
        printf("#_______________ MENU BALAO -> Alterar Balao %d    _________#\n", baloes[posicao].numero);
        printf("#_______________ 1 - Alterar Tudo                  _________#\n");
        printf("#_______________ 2 - Alterar Designacao            _________#\n");
        printf("#_______________ 3 - Alterar data                  _________#\n");
        printf("#_______________ 4 - Alterar lotacao maxima        _________#\n");
        printf("#_______________ 5 - Alterar posicao inicial       _________#\n");
        printf("#_______________ 0 - Sair                          _________#\n");
        printf("#############################################################\n");
        printf("Escolha uma opcao: ");
        opcao = lerNumero(0,5);
        switch(opcao){
            case 1: //alterar tudo
                //elimina e cria um novo balao
                if(eliminarBaloes(baloes, contador, posicao)==1){
                    inserirBaloes(baloes, contador);
                }
            break;
            case 2: //alterar a designcao
                printf("Insira a nova designacao:\n");
                lerString(baloes[posicao].designacao, MAX_DESIGNACAO);
                infoBaloes(baloes[posicao]);
            break;
            case 3://alterar a data
                baloes[posicao].data=loopDataBalao(baloes[posicao].data);
                infoBaloes(baloes[posicao]);
            break;
            case 4://alterar a lotacao maxima
                printf("Insira a nova lotacao maxima:\n");
                baloes[posicao].lotacaoMaxima = lerNumero(LOTACAOMINIMA, LOTACAOMAXIMA);
                infoBaloes(baloes[posicao]);
            break;
            case 5: //alterar a localizaçao
                baloes[posicao].localInicio = loopPedirPosicao("Insira a sua posicao A, B ou C:\n");
                //baloes[posicao] = pedirPosicaoBalao(baloes[posicao]);
                infoBaloes(baloes[posicao]);
            break;
        }
    }while(opcao!=0);
}
Exemplo n.º 7
0
//loop pesquisar balao valido return numero valido
int loopPesquisaBalaoinValido(baloesStruct baloes[], int nrBaloes){ //pede um numero ao utilizador ate encontrar um numero sem balao associado
    int opcao, posicao=-1;
    printf("Insira o numero do balao:");
    do{
        opcao = lerNumero(MINIMO_BALOES, MAXIMO_BALOES);
        posicao = procurarNumeroBalao(baloes, opcao, nrBaloes);
        if(posicao!=-1){
           printf("O numero ja se encontra a ser utilizado\n Insira o numero do balao:");
        }
    }while(posicao!=-1);
return opcao;
}
Exemplo n.º 8
0
//loop pesquisar balao valido return posicao no vector
int loopPesquisaBalaoValido(baloesStruct baloes[], contadorStruct contador){ //pede um numero ao utilizador ate encontrar um balao valido e devolve a posicao
    int opcao, posicao=-1;
    printf("Insira o numero do balao:");
    do{
        opcao = lerNumero(MINIMO_BALOES, MAXIMO_BALOES);
        posicao = procurarNumeroBalao(baloes, opcao, contador.nrBaloes);
        if(posicao==-1){
           printf("O numero do balao nao foi encontrado\n Insira o numero do balao:");
        }
    }while(posicao==-1);
return posicao;
}
Exemplo n.º 9
0
//menu principal
int menu(contadorStruct contador){
    int opcao;
    printf("|--------------------MENU-----------------------------------|\n");
    printf(" Receita Obtida: %.2f \t Baloes Existentes: %d\n", contador.receita, contador.nrBaloes);
    printf(" Viagens Realizadas: %d \t Passageiros Transportados: %d\n", contador.viagensRealizadas, contador.passageirosTransportados);
    printf(" Passageiros em Lista de Espera: %d\n",  contador.pListaEspera);
    printf("|-----------------------------------------------------------|\n");
    printf("#############################################################\n");
    printf("#_______________ 1-BALOES                        ___________#\n");
    printf("#_______________ 2-VIAGENS                       ___________#\n");
    printf("#_______________ 3-BILHETES                      ___________#\n");
    printf("#_______________ 4-REGISTAR VIAGEM DO BALÃO      ___________#\n");
    printf("#_______________ 5-Consultar dados Estatisticos  ___________#\n");
    printf("#_______________ 6-Alterar Preco da viagem       ___________#\n");
    printf("#_______________ 0-Sair                          ___________#\n");
    printf("#############################################################\n");
    printf("Escolha uma opcao: ");
    opcao = lerNumero(0, 6);
    return opcao;
}
Exemplo n.º 10
0
void menuBilhetes(int opcao,contadorStruct *contador, listaEsperaStruct lista[]){
    int submenu=1;
    switch(opcao){//comprar bilhetes
    case 1:
        comprarBilhetes(contador, lista);
    break;
    case 2://ler bilhetes
        do{
            printf("\n\n\n#############################################################\n");
            printf("#_______________ MENU  BILHETES -> Consultas _______________#\n");
            printf("#_______________ 1 - Ver todos os bilhetes   _______________#\n");
            printf("#_______________ 2 - Ver Bilhetes do ponto de origem _______#\n");
            printf("#_______________ 3 - Ver Bilhetes do ponto de destino ______#\n");
            printf("#_______________ 0 - Sair                    _______________#\n");
            printf("#############################################################\n");
            submenu = lerNumero(0, 3);
            mostrarBilhetesFiltro(submenu, lista);
        }while(submenu!=0);
        //mostrar todos os bilhetes
    break;
    }
}
Exemplo n.º 11
0
//compra bilhetes e adiciona automaticamente na sua lista de espera
void comprarBilhetes(contadorStruct *contador, listaEsperaStruct lista[]){
    int nrPessoas=0, i=0;
    bilhetesStruct bilhetesTemp;
    bilhetesStruct *bilhetesAUX;
    float totalBilheteIndividual =0;
    //pede o numero de pessoas ao utilizador para verificar se o bilhete +e idividual ou de grupo
    printf("Insira o numero de pessoas: ");
    nrPessoas = lerNumero(1, LOTACAOMAXIMA);
        bilhetesTemp.nrPessoas = nrPessoas;
        bilhetesTemp.preco=0;
        contador->pListaEspera +=nrPessoas;
        //pede a origem e o destino do balao
        bilhetesTemp.origem = loopPedirPosicao("Insira a sua posicao?\n");
        bilhetesTemp.destino = loopPedirPosicao("Insira o destino?\n");
        //bilhete em grupo
        if(nrPessoas>1){
            printf("Insira o nome do grupo: ");
            lerString(bilhetesTemp.nome, MAX_NOME);
            bilhetesTemp.grupo = GRUPO;
            for(i=0; i<nrPessoas; i++){
                bilhetesTemp.preco += contador->preco;
            }
            bilhetesTemp.preco = totalaPagar(bilhetesTemp.preco*nrViagens(bilhetesTemp.origem, bilhetesTemp.destino), DESCONTO); //preco*nr de viagens
            //mostra o total do preco dos bilhetes
            printf("Total de todos os bilhetes: %.2f\n", bilhetesTemp.preco);
            contador->receita+=bilhetesTemp.preco;
            //preco individual
            totalBilheteIndividual = totalaPagar(contador->preco*nrViagens(bilhetesTemp.origem, bilhetesTemp.destino), DESCONTO);
            //mostra o total do preco por pessoa
            printf("Preco por pessoa: %.2f\n", totalBilheteIndividual);
        }else{
            //bilhete individual
            bilhetesTemp.grupo = SEM_GRUPO;
            bilhetesTemp.preco = totalaPagar(contador->preco*nrViagens(bilhetesTemp.origem, bilhetesTemp.destino), SEM_DESCONTO);
            contador->receita+=bilhetesTemp.preco;
            printf("Total a pagar e: %.2f\n", bilhetesTemp.preco);
        }
        switch(bilhetesTemp.origem){
            case 'A':
                lista[POS_A].nrBilhetes+=1;
                contador->destinoA+=1;
                bilhetesAUX = realloc(lista[POS_A].bilhetes,lista[POS_A].nrBilhetes*sizeof(bilhetesStruct));
                if(bilhetesAUX!=NULL)
                {
                    lista[POS_A].bilhetes = bilhetesAUX;
                    lista[POS_A].bilhetes[lista[POS_A].nrBilhetes-1] = bilhetesTemp;
                }else{
                    printf("Ocorreu um erro na memoria");
                }
            break;
            case 'B':
                lista[POS_B].nrBilhetes+=1;
                contador->destinoB+=1;
                bilhetesAUX = realloc(lista[POS_B].bilhetes,lista[POS_B].nrBilhetes*sizeof(bilhetesStruct));
                if(bilhetesAUX!=NULL)
                {
                    lista[POS_B].bilhetes = bilhetesAUX;
                    lista[POS_B].bilhetes[lista[POS_B].nrBilhetes-1] = bilhetesTemp;
                }else{
                    printf("Ocorreu um erro na memoria");
                }
            break;
            case 'C':
                lista[POS_C].nrBilhetes+=1;
                contador->destinoC+=1;
                bilhetesAUX = realloc(lista[POS_C].bilhetes,lista[POS_C].nrBilhetes*sizeof(bilhetesStruct));
                if(bilhetesAUX!=NULL)
                {
                    lista[POS_C].bilhetes = bilhetesAUX;
                    lista[POS_C].bilhetes[lista[POS_C].nrBilhetes-1] = bilhetesTemp;
                }else{
                    printf("Ocorreu um erro na memoria");
                }
            break;
        }
}
Exemplo n.º 12
0
/***MENUS***/
int main(void){
    /**declaração de variavies**/
    contadorStruct contador;
    baloesStruct baloes[MAXIMO_BALOES];
    listaEsperaStruct lista[MAX_LISTA];
    viagensStruct *viagens=NULL;
    int opcao=0, submenu=0;
    //os ponteiros são iniciados a null para que se possa usar o malloc para fazer a gestão da memória dinâmica
    limparLista(lista, NAO_LIMPAR_MEMORIA);
    //leitura do ficheiro binario
    viagens = lerRegistosFicheiroBinario(&contador, baloes, lista, viagens);
    do{
        opcao = menu(contador);//chama o menu principal que retorna a opcao escolhida
        switch(opcao){
            case 0:
                gravarRegistos(&contador, baloes, lista, viagens); //gravar as alteracoes no ficheiro binario
            break;
            case 1://menu baloes
                do{
                    printf("\n\n\n#############################################################\n");
                    printf("#_______________ MENU BALOES                 _______________#\n");
                    printf("#_______________ 1 - Inserir dados Baloes    _______________#\n");
                    printf("#_______________ 2 - Consultar dados Baloes  _______________#\n");
                    printf("#_______________ 3 - Alterar dados Baloes    _______________#\n");
                    printf("#_______________ 4 - Eliminar Baloes         _______________#\n");
                    printf("#_______________ 0 - Voltar ao menu principal_______________#\n");
                    printf("#############################################################\n");
                    printf("Escolha uma opcao: ");
                    submenu = lerNumero(0, 4);
                    menuBaloes(submenu, baloes, &contador); //chama a funcao que trata dos baloes e contadores
                }while(submenu!=0);
            break;
            case 2://menu viagens
                do{
                    printf("\n\n\n#############################################################\n");
                    printf("#_______________ MENU Viagens                _______________#\n");
                    printf("#_______________ 1 - Inserir Viagens         _______________#\n");
                    printf("#_______________ 2 - Consultar Viagens       _______________#\n");
                    printf("#_______________ 0 - Voltar ao menu principal_______________#\n");
                    printf("#############################################################\n");
                    printf("Escolha uma opcao: ");
                    submenu = lerNumero(0, 2);
                    switch(submenu){
                        case 1:
                                viagens = inserirViagem(baloes, viagens, &contador, lista);
                        break;
                        case 2:
                                infoViagens(viagens, contador);
                        break;
                    }
                }while(submenu!=0);
            break;
            case 3: //menu bilhetes
                do{
                    printf("\n\n\n#############################################################\n");
                    printf("#_______________ MENU Bilhetes               _______________#\n");
                    printf("#_______________ 1 - Vender Bilhetes         _______________#\n");
                    printf("#_______________ 2 - Consultar Bilhetes      _______________#\n");
                    printf("#_______________ 0 - Voltar ao menu principal_______________#\n");
                    printf("#############################################################\n");
                    printf("Escolha uma opcao: ");
                    submenu = lerNumero(0, 2);
                    menuBilhetes(submenu, &contador, lista);
                }while(submenu!=0);
            break;
            case 4:
                //Movimentar Baloes
                movimentarBaloes(baloes, &contador);
            break;
            case 5:
                //consultar dados estatisticos
                do{
                    printf("\n\n\n#############################################################\n");
                    printf("#_______ MENU Estatisticas                               ___#\n");
                    printf("#_______ 1 - Total viagens por cada balao                ___#\n");
                    printf("#_______ 2 - Media de turistas transportados por balao   ___#\n");
                    printf("#_______ 3 - Balao(oes) com mais viagens     _______________#\n");
                    printf("#_______ 4 - Percentagem de turistas por destino   _________#\n");
                    printf("#_______ 5 - Informacoes dos bilhetes              _________#\n");
                    printf("#_______ 0 - Voltar ao menu principal        _______________#\n");
                    printf("#############################################################\n");
                    printf("Escolha uma opcao: ");
                    submenu = lerNumero(0,5);
                    dadosEstatisticos(submenu, baloes, viagens, contador, lista);
                }while(submenu!=0);
            break;
            case 6:
                alterarPrecoBilhete(&contador);
            break;
        }
    }while(opcao!=0);
    limparLista(lista, LIMPAR_MEMORIA);
    free(viagens);
    viagens = NULL;
return 0;
}