Написать программу моделирующую работу лифта - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Лифт Написать программу моделирующую работу лифта, находящегося на первом этаже. Допустим, что каждый заходящий в кабину лифта человек нажимает кнопку с номером этажа. После этого лифт определяет наиболее быстрый порядок транспортирования пассажиров, расставляя соответствующим образом этажи, на которых он должен остановиться. Входные данные: Три целых числа от 2 до 40. Номера этажей, на которые необходимо подняться пассажирам лифта. Выходные данные: Три числа Порядок в котором лифт будет делать остановки. Подсказки: Посмотрите на пример входных и выходных данных, если не догадались в каком порядке необходимо делать остановки. Sample Input: 34 12 23 Sample Output: 12 23 34 Вариантов движения по этажам всего 4 это: 123 321 213 231 Вот последний вариант у меня никак не выходит, никак исправить не могу:
#include 
 
int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
        if((a < b && a < c) && ( b < c)) printf("%d %d %d\n", a, b, c);
        else if((c < a && c < b) && (b < a)) printf("%d %d %d\n", c, b, a);
        else if((b < a && b < c) && (a < c)) printf("%d %d %d\n", b, a, c);
        else if((b < a && b < c) && (c < a)) printf("%d %d %d\n", b, c, a);
        else printf("%d %d %d\n", a, b, c);
 
    return 0;
}
вроде решил:
 #include 
 
int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
 
        if((a < b && a < c) && (b < c)) printf("%d %d %d\n", a, b, c);
        else if((c < a && c < b) && (b < a)) printf("%d %d %d\n", c, b, a);
        else if((b < a && b < c) && (a < c)) printf("%d %d %d\n", b, a, c);
        else if((b < a && b < c) && (c < a)) printf("%d %d %d\n", b, c, a);
        else if((c < a && c < b) && (a < b)) printf("%d %d %d\n", c, a, b);
        else printf("%d %d %d\n", a, b, c);

    // put your code here
    return 0;
}
еще дописал:
#include 
 
int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
 
        if((a < b && a < c) && (b < c)) printf("%d %d %d\n", a, b, c);
        else if((c < a && c < b) && (b < a)) printf("%d %d %d\n", c, b, a);
        else if((b < a && b < c) && (a < c)) printf("%d %d %d\n", b, a, c);
        else if((b < a && b < c) && (c < a)) printf("%d %d %d\n", b, c, a);
        else if((c < a && c < b) && (a < b)) printf("%d %d %d\n", c, a, b);
        else if((a == b && a < c)|| (b == c && a < b))  printf("%d %d %d\n", a, b, c);
        else if((b == c && a > c))  printf("%d %d %d\n", b, c, a);
        else if((a == c && b < c))  printf("%d %d %d\n", b, c, a);
        else printf("%d %d %d\n", a, b, c);

    // put your code here
    return 0;
}
блин все равно валидацию пройти не могу, хотя вроде правильно все работает.

Решение задачи: «Написать программу моделирующую работу лифта»

textual
Листинг программы
#include <stdio.h>
 
/*
 *  Лифт
    Написать программу моделирующую работу лифта, находящегося на первом этаже. Допустим, что каждый заходящий в кабину лифта человек нажимает кнопку с номером этажа. После этого лифт определяет наиболее быстрый порядок транспортирования пассажиров, расставляя соответствующим образом этажи, на которых он должен остановиться.
 
    Входные данные:
    Три целых числа от 2 до 40. Номера этажей, на которые необходимо подняться пассажирам лифта.
 
    Выходные данные:
    Три числа Порядок в котором лифт будет делать остановки.
 
    Подсказки:
    Посмотрите на пример входных и выходных данных, если не догадались в каком порядке необходимо делать остановки.
 
    Sample Input:
 
    34 12 23
 
    Sample Output:
 
    12 23 34
 
 
 */
int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
 
        if(((a < b && a < c) && (b < c) || ((a == b && a < c)|| (b == c && a < b))) || (a == b && b == c)) printf("%d %d %d\n", a, b, c);
        if((c < a && c < b) && (b < a)) printf("%d %d %d\n", c, b, a);
        if((b < a && b < c) && (a < c)) printf("%d %d %d\n", b, a, c);
        if((b < a && b < c) && (c < a) || ((b == c && a > c) || (a == c && b < c))) printf("%d %d %d\n", b, c, a);
        if((c < a && c < b) && (a < b) || (a == c && b > c) || (a == b && a > c)) printf("%d %d %d\n", c, a, b);
 
 
    /*
     * Я уже все перепробовал, нифига не получается вроде уже все варианты учел
 
       1 2 3
 
       3 2 1
 
       3 1 2
 
       2 1 3
 
       2 3 1
 
       1 1 2
 
       1 2 1
 
       2 1 1
 
       1 1 1
 
       2 1 2
 
       2 2 1
 
       1 2 2
     */
    return 0;
}

Объяснение кода листинга программы

  1. Программа моделирует работу лифта, находящегося на первом этаже.
  2. Входные данные: три целых числа от 2 до 40 - это номера этажей, на которые необходимо подняться пассажирам лифта.
  3. Выходные данные: три числа, представляющие порядок, в котором лифт будет делать остановки.
  4. В программе используется операция сканирования с помощью функции scanf для получения входных данных.
  5. Затем с помощью условных операторов if-else происходит определение наиболее быстрого порядка транспортирования пассажиров и соответствующим образом расставляются этажи, на которых лифт должен остановиться.
  6. Варианты, представленные в коде, являются всеми возможными комбинациями трех чисел от 1 до 3, что соответствует всем возможным порядкам остановок лифта.
  7. Возвращаемое значение 0 указывает на успешное выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы