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