Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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






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

×