Я хочу сделать программу оплаты парковки с помощью Visual Studio

    int min1, min2, won;

    printf("parking minutes(분)? ");
    scanf("%d", &min1);

    min2 = (min1 - 30) % 10;

    if (min1 <= 39) 
        won = 2000;
    else {
        if (min2 = 0)
            won = 2000 + 1000 * (min1 - 30) % 10;
        else
            won = 2000 + 1000 * (min1 - min2 - 20) % 10;
    }
    printf("parking fee: %d", won);

Условия этой программы

  1. до 30 минут, 2000 вон
  2. после 30 минут, 1000 вон за 10 минут
  3. максимум 25000 вон в день
  4. Минуты парковки не могут превышать 24 часов

Я думал, что «%» означает остаток, поэтому я пишу так, но когда я ввожу 52, результаты говорят 5200! Я хочу, чтобы результат был 5000. И я хочу знать, что делать для условий 3 и 4. Что я могу сделать? Должен ли я использовать «для» и «сумма»?

if (min2 = 0) должно быть if (min2 == 0)
Weather Vane 07.04.2019 15:37

@DDK Если вы научитесь менять порядок элементов на противоположный, у вас никогда не возникнет этой проблемы. if (0 == min2). Таким образом, если вы забудете знак равенства, компилятор будет жаловаться.

Deanie 07.04.2019 17:38
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
2
69
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Проблема связана с состоянием вашего внутреннего блока if in else.

if (min2 = 0)

Один знак равенства является оператором присваивания, вы должны использовать == для проверки равенства.

if (min2 == 0)
Ответ принят как подходящий

Давайте запрограммируем шаги в том же порядке, что и присваивание:

int min1, min2, won;

printf("parking minutes(분)? ");
if (scanf("%d", &min1) != 1) {
    printf("invalid input\n");
    return 1;   // invalid input.
}

won = 2000; // 1. until 30min, 2000won, minimum price
if (min1 > 30) {
    // 2. after 30min, 1000won per 10min
    min2 = min1 - 30;  // minutes after 30
    // add 1000won for every slice or 10min or portion thereof
    won += ((min2 + 9) % 10) * 1000;
    // 3. max 25000won per a day
    if (won > 25000)
        won = 25000;
}
// 4. parking minutes cannot be over than 24 hours
if (min1 > 24 * 60) {
    // reject request
    printf("parking time exceeds 24 hours\n");
} else {
    printf("parking fee: %d\n", won);
}

Другие вопросы по теме