Ir ao conteúdo
  • Cadastre-se

Jonatas0393

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. 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); } }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!