Передача разных значений между несколькими функциями в C? - PullRequest
0 голосов
/ 10 декабря 2018

У меня проблемы с передачей разных значений между несколькими функциями.То есть я пытаюсь, чтобы две функции принимали пользовательские вводы, а затем передавали оба этих входа в третью функцию, которая вычисляет эти входы, добавленные вместе.Затем он передает эту сумму другой функции, которая вычисляет истинную сумму.Наконец, после этого последняя функция отображает окончательный номер.Хотя я не могу понять, как сделать так, чтобы несколько функций проходили.

# include <stdio.h>
# include <stdlib.h>

int carLength(int userInput) //Length
{
int length = 0;
do
{
    printf("\nPlease input the length of the area being carpeted:");
    scanf("%d", &userInput);
} while (length = 0);
length = userInput; //Essentially using this to store user input so i can 
use it later.
return length;
}

int carWidth(int userInput) //Width
{
int width = 0;
do
{
    printf("\nPlease input the width of the area being carpeted:");
    scanf("%d", &userInput);
} while (width = 0);
width = userInput; //Same as width
return width;
}

int carCalculate(int cost) //cost
{
int width = userInput;
int cost = (width * length) * 20;
return cost;
}

float cardiscount(float discount) //discount
{
float discount = cost - (cost * .1);
return discount;
}

float displaydisc(float discount) //discount
{
printf("\nThe total cost is: %f\n", discount);
return discount;
}

int main()
{
int length = 0;
int width = 0;
int cost = 0;
int discount = 0;
do {
    length = carLength;
} while (length == 0);
    do {
        width = carWidth;
    } while (carWidth == 0);
    do {
        cost = carCalculate;
    } while (cost == 0);
    do {
        discount = cardiscount;
    } while (discount == 0);
    do {
        displaydisc;
    } while (discount > 0);
    printf("\n Thank you for using this program!");

system("pause");
}

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Вы не делаете никаких вызовов функций.Вызовы функций должны иметь открывающие / закрывающие скобки после имени функции.

Например, это не вызов функции:

functionA;

... и это вызов функции:

functionA();
0 голосов
/ 10 декабря 2018

Есть несколько проблем,

  • параметры, предоставленные большинству функций автомобиля, бесполезны
  • необходимые параметры не предоставлены (carCalculate)
  • цикл= 0 с = (присваивание вместо теста на равенство)
  • цикл в условии, когда переменная не изменяется
  • вызов функций в main() без (param)

Этот код должен работать:

int carLength() // <== no need to provide length, it is returned
{
    int length;
    do
    {
        printf("\nPlease input the length of the area being carpeted:");
        scanf("%d", &length);
    } while (length == 0); // <== length is changed within the loop
    return length;
}

int carWidth() //Width
{
    int width = 0;
    do
    {
        printf("\nPlease input the width of the area being carpeted:");
        scanf("%d", &width);
    } while (width == 0);
    return width;
}

int carCalculate(int width, int length) // <== need to provide values
{
    int cost = (width * length) * 20;
    return cost;
}

float cardiscount(float cost) //discount
{
    float discount = cost - (cost * .1);
    return discount;
}

void displaydisc(float discount) //discount
{
    printf("\nThe total cost is: %f\n", discount);
}

int main()
{
    int length; // <== no need to set to 0, as their values
    int width;  //     are going to be initialized later
    int cost;
    int discount;

    length = carLength();

    width = carWidth();

    cost = carCalculate(width, length);

    discount = cardiscount((float)cost);

    displaydisc(discount);

    printf("\n Thank you for using this program!");

    system("pause");
}

Вы также могли бы попросить функции ввода заполнить значение, указатель которого задан в качестве аргумента, например

int carLength(int *length) {
    do {
        printf("\nPlease input the length of the area being carpeted:");
        scanf("%d", length);
    } while (*length == 0);
}

int вызывается main

carLength( &length );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...