Как сделать так, чтобы оператор printf появлялся только в том случае, если он верен? - PullRequest
0 голосов
/ 11 февраля 2019

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

Я пробовал использовать его как оператор else, оператор if и if else.

main(){
    double distance, weight, weightCharges, shippingCharge, distanceCharge, unableToShip;
    printf ("Enter the weight of the package:\n");
    scanf ("%lf", &weight);
    printf ("Enter the distance your package needs to go: \n");
    scanf ("%lf", &distance);

    if (weight <= 10)
        weightCharges = weight * 3.00;
        else
            if (weight <= 50)
                weightCharges = weight * 5.00;
            else (weight > 50);
        weightCharges= 0;
    if (distance > 1000)
        distanceCharge = weightCharges + 10;
    shippingCharge = weightCharges + distanceCharge;
    unableToShip = weight > 50;

    printf ("Your total cost is: %.2lf \n", shippingCharge);
    printf ("We're unable to ship your package \n", unableToShip);

}

Я ожидаю, что второй printf появится только в том случае, если мы не сможем отправить его посылку, но он появится несмотря ни на что.

Ответы [ 4 ]

0 голосов
/ 11 февраля 2019

Прежде всего, unableToShip должен иметь тип int или bool (если вы используете актуальный компилятор и поддерживает <stdbool.h>).double не очень хорошо работает для такого рода вещей.

Во-вторых, даже если unableToShip был правильным типом для логического условия, передача в качестве аргумента printf не дает printf работают условно.Это делает его частью форматированного вывода, если у вас была строка формата для его принятия.Вам нужно иметь if (unableToShip), за которым следует оператор printf.

В-третьих, если вы печатаете строку, которая не содержит форматирования и заканчивается новой строкой, вы должны использовать putsвместо printf.

0 голосов
/ 11 февраля 2019

Вы пытались поместить некоторые операторы if-else?

int main()
{
    double distance, weight, weightCharges, shippingCharge, distanceCharge; // no need for unableToShip;
    printf ("Enter the weight of the package:\n");
    scanf ("%lf", &weight);
    printf ("Enter the distance your package needs to go: \n");
    scanf ("%lf", &distance);

    if (weight <= 10)
        weightCharges = weight * 3.00;
        else
            if (weight <= 50)
                weightCharges = weight * 5.00;
            else (weight > 50);
        weightCharges= 0;
    if (distance > 1000)
        distanceCharge = weightCharges + 10;
    shippingCharge = weightCharges + distanceCharge;
    //unableToShip = ;

    printf ("Your total cost is: %.2lf \n", shippingCharge);
    if(weight > 50)
    printf ("We're unable to ship your package \n");

}
0 голосов
/ 11 февраля 2019
int main(){
    double distance, weight, weightCharges, shippingCharge, distanceCharge, unableToShip;
    printf ("Enter the weight of the package:\n");
    scanf ("%lf", &weight);
    printf ("Enter the distance your package needs to go: \n");
    scanf ("%lf", &distance);

    if (weight <= 20)
        weightCharges = weight * 5.00;
        else
            if (weight <= 100)
                weightCharges = weight * 10.00;
            else (weight > 100);
        weightCharges= 0;
    if (distance > 1000)
        distanceCharge = weightCharges + 20;
    shippingCharge = weightCharges + distanceCharge;
    unableToShip = weight > 100;

    printf ("Your total cost is: %.2lf \n", shippingCharge);
    printf ("We're unable to ship your package \n", unableToShip);

}
0 голосов
/ 11 февраля 2019

if здесь работает так же, как и везде:

if (unableToShip) 
  printf ("We're unable to ship your package\n");
...