Kadeidra W Ответов: 2

Я должен создать программу, которая будет имитировать работу лифта


Привет, на самом деле у меня нет кода, у меня просто есть вопросы, на которые я надеюсь, что кто-то сможет ответить.

1) в принципе, в начале лифт находится на заданном этаже. Его первое действие-погрузка на некоторых пассажиров. // Я знаю, что эта часть будет методом, я просто пытаюсь понять, какие переменные использовать.

2) лифт перемещается с текущего этажа на целевой этаж:
- он объявляет о каждом этаже, который проходит. // Будет ли эта часть петлей? В зависимости от того, сколько этажей в здании?
-Он не должен будет останавливаться ни на одном из этих этажей, только на целевом этаже

3) на целевом этаже он выполняет два действия:
- разгружает определенное количество гонщиков (не обязательно всех)
- погрузить определенное количество людей (но не перегружать лифт) // будут ли эти два действия также петлями для погрузки и разгрузки всадников?

Что я уже пробовал:

Я еще ничего не пытался закодировать. Мой профессор говорит, чтобы я не смотрел учебник, а попытался выяснить, какие переменные и методы мне понадобятся для моего кода. И если кто-то из вас будет грубить, просто не отвечайте на мои вопросы. Я искренне пришел сюда за помощью, потому что мой профессор или мои одноклассники на самом деле не очень помогают, а программирование-это нелегко, поэтому я был бы очень признателен, если бы на меня не напали за то, что я пытался получить какую-то помощь.

Во всяком случае, первое, что мне нужно выяснить, это то, какие переменные мне нужно использовать в моем коде, есть три типа: переменные, связанные с гонщиками, участвующими в гонках, и переменные, связанные с работой лифта.

вот переменные, которые у меня есть до сих пор:
currentFloor
destinationFloor
loadingRiders
unloadingRiders
totalRiders
numberOfFloors
подъемник
elevatorDown

Если у кого-то есть какая-то обратная связь, которая помогла бы, это было бы очень важно, или любые переменные, которые, по их мнению, должны быть добавлены, очень помогли бы мне, таким образом, я знаю, как создавать свои методы. Спасибо.

onelopez

Выглядит хорошо, если вы пытаетесь сохранить это простым, начните использовать оператор switch с возможными состояниями лифта. Оказавшись внутри case, операторы выполняют логику, необходимую для этого состояния. Лифт загружает людей, а затем позволяет этому состоянию перейти в следующее состояние, перемещаясь на нужный этаж.

PIEBALDconsult

printf ( "вышел из строя.\n" ) ;

pt1401

Хитрость заключается в том, чтобы прочитать требование и идентифицировать объекты, операции и переменные.
Что-то вроде этого :-

1) в начале лифт находится на заданном этаже. Его первое действие состоит в том, чтобы загрузить на некоторых пассажиров
Объекты: Лифт, Пассажирский
Операции: Лифт.Нагрузка(int passengerCount)
Переменные: currentFloor, passengersToLoad

2) лифт перемещается с текущего этажа на целевой этаж:
- он объявляет о каждом этаже, который проходит. // Будет ли эта часть петлей? В зависимости от того, сколько этажей в здании?
-Он не должен будет останавливаться ни на одном из этих этажей, только на целевом этаже
Операции: Лифт.MoveTo(int destinationFloor), лифт.Анонс(int floorNumber)

3) на целевом этаже он выполняет два действия:
- разгружает определенное количество гонщиков (не обязательно всех)
- погрузить определенное количество людей (но не перегружать лифт) // будут ли эти два действия также петлями для погрузки и разгрузки всадников?
Операции: Лифт.Разгрузка(int passengersToUnload), лифт.Разгрузка(int passengersToLoad)
Переменные: maxPassengers

Это должно дать вам отправную точку для объектов, которые вам нужны (только один, лифт), и методов.
Затем вам нужно закодировать методы, переведя требования в логику, а затем в код.
То, что у вас есть, пока хорошо, удачи...

Kadeidra W

Большое вам спасибо! Это была действительно большая помощь! Я ценю это!

2 Ответов

Рейтинг:
0

Peter Leow

Интересное домашнее задание, но я не могу сделать твое домашнее задание. Тем не менее, это слишком заманчиво, что я дам вам фору (в качестве оправдания):
Давайте рассмотрим взаимодействие между всадником и лифтом. Предполагая, что лифт начинается на случайном этаже, и пассажир вызывает его со случайного этажа, и хочет поехать на другой случайный этаж, фрагмент псевдокода может быть выражен так, как показано на рисунке:

numberOfFloors = 10;
ridership = 0;
elevatorMovement = 0; // -1 for down, 0 for still, 1 for up

// lift at random floor on start of the program
liftCurrentFloor = Math.floor((Math.random() * numberOfFloors) + 1);

// a method to move lift to the calling passenger
moveLift(destinationFloor){
  elevatorMovement = destinationFloor - liftCurrentFloor;
  liftCurrentFloor = destinationFloor;

  loadPassenger(); // If the passenger is outside the lift
   
  unloadPassenger(); // If the passender is inside the lift
}

loadPassenger(){
  ridership++;
  desiredFloor = Math.floor((Math.random() * numberOfFloors) + 1);
  // use a loop to check that the desiredFloor != liftCurrentFloor before calling
  moveLift(desiredFloor);
}

unloadPassenger(){
  ridership--;
}

// A passenger call the lift from a random floor
callLift(){
  moveLift(Math.floor((Math.random() * numberOfFloors) + 1));
}
Я просто бросил немного света, чтобы помочь вашему старту. На самом деле, вы будете ожидать, что несколько пассажиров звонят с разных этажей и идут на разные этажи одновременно. Один из способов решения этой проблемы-создать объект passenger в коде со свойствами floorAt, floorTo, isInsideLift и т. д. И в вашем лифтовом объекте вы можете обращаться с ними как с массивом пассажиров. Понял?
Счастливого кодирования!
По крайней мере, я немного утолил свою жажду.


Рейтинг:
0

Patrice T

Цитата:
имитация работы лифта

Лифт-это автомат, а это значит, что он работает с событиями.
Так что это все дело логики, и все укладывается в 1 вопрос: "Что произойдет, если ?"
Чтобы узнать, нужна ли вам переменная, ответьте на следующий вопрос: "работает ли она по-другому, если ?"
- totalRiders: работает ли он по-разному в зависимости от количества гонщиков ?
- loadingRiders, unloadingRiders: работает ли он по-разному для погрузки всадников и для разгрузки всадников ?
- loadingRiders, unloadingRiders: работает ли он по-другому, если ни один всадник не загружает и не разгружает.
Цитата:
1) в принципе, в начале лифт находится на заданном этаже. Его первое действие состоит в том, чтобы загрузить на некоторых пассажиров.

Вы уверены насчет первого действия ? Что делать, если лифт находится на 4 этаже, а вы звоните ему с 1 этажа?
Цитата:
3) на целевом этаже он выполняет два действия:
- разгружает определенное количество гонщиков (не обязательно всех)
- погрузить определенное количество людей (но не перегружать лифт) // будут ли эти два действия также петлями для погрузки и разгрузки всадников?

Вы действительно думаете, что лифт считает пассажиров ?
Цитата:
И если кто-то из вас будет грубить, просто не отвечайте на мои вопросы.

Иногда, когда кто-то немного груб с вами, это лучший способ заставить вас пошевелить мозгами и, наконец, быть добрым к вам.
Альберт Эйнштейн писал::
Все должно быть сделано как можно проще, но не проще.


Kadeidra W

Я понимаю, к чему вы клоните своими вопросами. В принципе, это именно то, что было сказано в моем задании, я даже не пытался разбить его таким образом! Спасибо, это заставляет меня еще немного подумать!