1

Тема: Проблеми з виводом

Потрібно зробити так, щоб "Надається знижка 20%" виводило тільки при (6>=y<=7). Мій код вовидить цей прінт постійно, не залежно від значення 'у'.
Все перепробував, допоможіть початківцю

int main()
{
    const float z = 0.34;//Ціна за 1 хвилину
    float S;//Вартість розмови
    int x, y;
    setlocale(LC_CTYPE, "ukr");
    printf("Розрахунок вартостi розмови по телефонi\n");
    printf("Введiть вихiднi данi:\n");
    printf("Тривалiсть розмови(цiла кiлькiсть хвилин)->");
    scanf_s("%d", &x);
    printf("День тижня(1-Понедiлок,...7-Недiля)->");
    scanf_s("%d", &y);
    if (y > 7) {
        printf("Не правильний день тижня\n");
        
    }else if (y >= 1 && y <= 5) {
        S = x * z;
    }
    else if (y == 6 || y == 7);
    {
        
        S = (x*z) - ((x*z) / 100 * 20);
        printf("Надається знижка 20%%\n");
    }
    printf("Вартiсть розмови:%5.2f грн.\n\n\n\n\n\n", S);
    return 0;
}

2

Re: Проблеми з виводом

Крапку з комою після if приберіть.
І загальна порада - складі вирази з порівняннями читаються легше, якщо використовувати лише < та <= (щоб менше було ліворуч), а помилки обробляти в else:

if(1<=y && y<=5) {
    ...
} else if (6<=y && y<=7) {
    ...
} else {
    printf("Неправильний день тижня\n");
    return 1; // виходимо і повертаємо код помилки
}

3

Re: Проблеми з виводом

Дякую, все працює