функция возвращает мульти значение в основную функцию - PullRequest
0 голосов
/ 09 ноября 2018

Этот код является частью моего основного кода, в этой части каждый код продукта, который вводит пользователь, количество и общая стоимость будут увеличиваться, в конце пользователь возвращает totalSum, количество1, количество2, количество3, количество4 на главную функция, затем перейдите к печати квитанции, я знаю, что для возврата к основной функции нужно сделать так z= getTotalSum(). но как для мульти возврата? (в настоящее время я ставлю как 0, потому что я не знаю, как поставить)

#include <stdio.h>
int getTotalSum (void); // when user selected product will calculate sum,quantity of each product
int main ()
{
getTotalSum();
return 0;
}
int getTotalSum (void)
{
int code;
float sum=0,totalSum,quantity1=0,quantity2=0,quantity3=0,quantity4=0;
while(1)
{   
    printf("Enter a product code.(Enter 5 to get total sum)\n");
    scanf("%d",&code);

    switch(code)
    {
    case 1:
        {
        quantity1=( quantity1 + 1);
        sum=( 45.20 + sum);
        printf("Current Sum: RM%.2f\n",sum);
        break;
        }
    case 2:
        {
        quantity2=( quantity2 + 1);
        sum=(14.50 + sum);
        printf("Current Sum: RM%.2f\n",sum);
        break;
        }
    case 3:
        {
        quantity3=( quantity3 + 1);
        sum=(3.45 + sum);
        printf("Current Sum: RM%.2f\n",sum);
        break;
        }
    case 4:
        {
        quantity4=( quantity4 + 1);
        sum=(7.80 + sum);
        printf("Current Sum: RM%.2f\n",sum);
        break;
        }
    case 5:
        totalSum= sum;
        printf("+--------------+--------------------+----------+\n");
        printf("| Product Code | Rentail Price (RM) | Quantity |\n");
        printf("+--------------+--------------------+----------+\n");
        printf("| 1            | 45.20              | %.f        |\n",quantity1);
        printf("+--------------+--------------------+----------+\n");
        printf("| 2            | 14.50              | %.f        |\n",quantity2);
        printf("+--------------+--------------------+----------+\n");
        printf("| 3            |  3.45              | %.f        |\n",quantity3);
        printf("+--------------+--------------------+----------+\n");
        printf("| 4            |  7.80              | %.f        |\n",quantity4);
        printf("+--------------+--------------------+----------+\n");
        printf("Total Sum: RM%.2f\n",totalSum); 
        return 0;
    }
    }
}

1 Ответ

0 голосов
/ 09 ноября 2018

Есть несколько методов, которые вы можете использовать для return нескольких значений:

  1. return a struct
  2. Запись в несколько переменных, переданных в функцию по адресу
  3. Запись в struct передана функции по адресу
  4. Запись в массив, переданный в функцию

Пример каждого из них следующий:

1

struct data
{
    int one;
    int two;
    int three;
    int four;
};

struct data getTotalSum(void)
{
    ...
}

2

void getTotalSum(int *one, int *two, int *three, int *four)
{
    ...
}

3

struct data
{
    int one;
    int two;
    int three;
    int four;
};

void getTotalSum(struct data *d)
{
    ...
}

4

void getTotalSum(int *array)
{
   ...
}
...