Ir ao conteúdo
  • Cadastre-se
Jonatas0393

C Codigo ELevador em C

Recommended Posts

Boa noite !! Me ajudem por favor Tenho esse código abaixo para funcionamento de elevador e preciso acrescentar as funções para parada nos andares alguem pode me ajudar 
 //Elevador (Prof. Eduardo Tanajura)
  
#include <stdio.h>
#include <string.h>
#define CAPACIDADE 15
#define MAX_SEQUENCIAS 21
#define MAX_ELEVADORES 3
  
typedef struct {
     int pisoAtual;
      int passageiros;
      int uso;
  } elevador_tipo;
  
  int main(void){
      int qtdElevadores;
      elevador_tipo elevadores[MAX_ELEVADORES];
      char sequencias[MAX_ELEVADORES][MAX_SEQUENCIAS];
  
      printf("Digite o numero de elevadores [1-3]: ");
      scanf("%d", &qtdElevadores);
  
      setElevadores(elevadores, qtdElevadores);
      lerSequencias(sequencias, qtdElevadores);
  
      ligaElevadores(elevadores, sequencias, qtdElevadores);
  
      printaInfoElevadores(elevadores, qtdElevadores);
  
      return 0;
  }
  
  //Inicia os valores dos elevadores
  void setElevadores(elevador_tipo elevadores[], int qtdElevadores){
     int i;
      for(i = 0; i < qtdElevadores; i ++){
          elevadores.pisoAtual = 1;
          elevadores.passageiros = 0;
          elevadores.uso = 0;
      }
  }
  
  //Ler as sequencias de pisos dos elevadores
  void lerSequencias(char sequencias[][MAX_SEQUENCIAS], int qtdElevadores){
      int i;
      for (i = 0; i<qtdElevadores; i++){
          printf("Digite a sequencia do elevador %d: ", i+1);
          scanf("%s", sequencias);
      }
  }
  
  //Liga os elevadores
  void ligaElevadores(elevador_tipo elevadores[], char sequencias[][MAX_SEQUENCIAS], int qtdElevadores){
      int i,j,quantidadePisos;
      for(i = 0; i < qtdElevadores; i ++){
          quantidadePisos = strlen(sequencias);
          for(j = 0; j < quantidadePisos; j++){
              irParaPiso(&elevadores,sequencias[j]-48); // Menos 48 converte char em int veja https://stackoverflow.com/questions/3195028/please-explain-what-this-code-is-doing-somechar-48
          }
      }
  }
  
  //Atualiza o numero de passageiros, piso e uso a cada piso (a sequencia do elevador deve ser de 1-9)
  void irParaPiso(elevador_tipo *elevador, int piso){
      if((*elevador).pisoAtual < piso){ // Se o piso atual for menor que o novo piso SUBA
          elevador->passageiros += piso; // Adiciona passageiros
          if(elevador->passageiros > 15){ //Verifica capacidade
              elevador->passageiros = 15; // Se maior que 15 limite a 15 passageiros no máximo
          }
          elevador->pisoAtual = piso; //Atualiza o piso atual
      }
      else if(elevador->pisoAtual > piso){//Se o piso atual for maior que o novo piso DESÇA
          if(elevador->passageiros > 0){ //Verifica se ainda existem passageiros
              if(elevador->passageiros < piso){ //Se o número de passageiros a deixar o elevador for menor que o numero do piso
                  (*elevador).uso += elevador->passageiros;  //Esvazia o elevador
                  elevador->passageiros = 0;
              }
              else{
                  elevador->passageiros -= piso; //Se o o numero de passageiros no elevador for igual ou maior ao numero de passageiro deixando o elevador
                  (*elevador).uso += piso;
              }
          }
          elevador->pisoAtual = piso;
      }
  }
  
  //Printa as informações dos elevadores
  void printaInfoElevadores(elevador_tipo elevadores[], int qtdElevadores){
      int i;
      for(i = 0; i < qtdElevadores; i ++){
          printf("\nElevador %d\n-------------------------------------\n",i+1);
          printf("Piso Final: %d\n",elevadores.pisoAtual);
          printf("Numero de passageiros: %d\n",elevadores.passageiros);
          }
          }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×