Я хочу сделать программу оплаты парковки с помощью visual studio - PullRequest
0 голосов
/ 07 апреля 2019
    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. Что я могу сделать? Должен ли я использовать «для» и «сумма»?

Ответы [ 2 ]

0 голосов
/ 07 апреля 2019

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

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);
}
0 голосов
/ 07 апреля 2019

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

if(min2 = 0)

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

if(min2 == 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...