2016-02-15 152 views
0

/*我想讓我的calcCost函數現在可以工作。它不包含區域變量。任何想法,爲什麼它不工作?我得到了油杉功能的工作,但我可以使用的面積值的calcCost面積值*/如何將函數值返回給主函數以用於其他函數?

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

// Define Constants 
#define SALESTAX .07 
#define TILEONE 0.78 
#define TILETWO 1.59 
#define TILETHREE 0.89 
#define TILEONECASE 17.44 
#define TILETWOCASE 10.89 
#define TILETHREECASE 15.50 
#define TILESIZE1 2.25 
#define TILESIZE2 0.97222 
#define TILESIZE3 1.77777 
// Prototypes 
void welcomeMessage(void); 
char SelectChoice(); 
double getLength(); 
double getWidth(); 
double calcArea(double len, double wid); 
double calcCost(double area); 
void endMessage(void); 
//integar return type, parameters are void,Richard's Flooring main function allows users to calculate room area and buy flooring. 
int main (void) 
{ 
//declare variables 
double len, wid, area, tileNeeded,subTotal, taxTotal, total,cost; 
double *dp; 
char answer, myChoice; 
dp = &area; 


// Greets users and identifities program. 
welcomeMessage(); 
//Loop continues until user is done calculating area and buying flooring. 

    printf("Choice | Dimesions | Price | Sq.FT.per case|\n 1  | 18 x 18 | $%.2lf |   17.44 |\n 2  | 7 x 20 | $%.2lf |   10.89 |\n 3  | 16 x 16 | $%.2lf |   15.50 |\n",TILEONE, TILETWO, TILETHREE); 

    myChoice = SelectChoice(); 
    len = getLength(); 
    wid = getWidth(); 
    // calcArea function is a double return type, it calculates the Area entered in by the user, its parameters are double len and double wid 
    area = calcArea(len,wid); 
    printf("The area of your room is: %g square feet.\n",area); 
calcCost(area); 
//Provides users with publisher's name. 
endMessage(); 

return 0; 
} 
// no return type, tells users what kind of program they are using, and voids any parameters. 
void welcomeMessage (void) 
{ 
    printf("Welcome to Richard's Flooring\n"); 
    system ("pause"); 
    return ; 
} 

// no return type, allows user to select choice 
char SelectChoice() 
{ 
    char myChoice; 

    do 
    { 
     printf("\nWhich tile choice would you like: "); 
     scanf(" %c", &myChoice); 

     switch(myChoice) 
     { 
     case '1': 
      printf("You chose choice: 1"); 
      break; 


     case '2': 
      printf("You chose choice: 2"); 
      break; 


     case '3': 
      printf("You chose choice: 3"); 
      break; 


     default: 
      printf("\nINVALID CHOICE 1 - 3 only!"); 

     } 
    } 

    while (myChoice > '3'|| myChoice < '1'); 
    return myChoice; 

} 

double getLength() 
{ 
    double len; 
// loop continues until positive numbers are entered. 
    do 
    { 
     printf("\nEnter length of room in feet: "); 
     scanf(" %lf", &len); 
     if (len <= 0) 
     printf("\nLength must be positive number."); 
    } 
    while (len <=0); 
    return len; 
} 


double getWidth() 
{ 
double wid; 
// loop continues until positive numbers are entered. 
do 
{ 
    printf("\nEnter width of room in feet: "); 
    scanf(" %lf", &wid); 
    if (wid <= 0) 
     printf("\nWidth must be positive number."); 
} 
while (wid <=0); 
return wid; 
} 

// Double return type, which is returning Area. Calculates the Area in a square or rectangle with the formula length * width. Accepts parameters from double len and double wid. 
double calcArea(double len, double wid) 
{ 
    double area; 
    area = (len * wid); 
    return area; 
} 

double calcCost(double area) 
{ 
    SALESTAX ; 
    double len, wid, tileNeeded,subTotal, taxTotal, total,cost; 
    char answer, myChoice; 
    area = calcArea(len,wid); 

    do 
    { 


    char myChoice; 
    if (myChoice == '1') 
      { 
       tileNeeded = area/TILESIZE1; 
      } 

    else if (myChoice == '2') 
      { 
       tileNeeded = area/TILESIZE2; 
      } 

    else if (myChoice == '3') 
      { 
       tileNeeded = area/TILESIZE3; 
      } 
    printf("You will need %.2lf pieces of tile\n", tileNeeded); 
    subTotal = tileNeeded * TILETHREE; 
    printf("Your subtotal is: $%.2lf \n", subTotal); 
    taxTotal = subTotal * SALESTAX; 
    printf("Your sales tax comes out to be: $%.2lf \n", taxTotal); 
    total = taxTotal + subTotal; 
    printf("Your grand total is: $%.2lf \n",total); 
    printf("Would you like to measure another room?\n y or n:"); 
    scanf(" %c", &answer); 
    } 

while (answer == 'y'|| answer == 'Y'); 
} 

// no return type, tells users Richard made the program, voids any parameters 
void endMessage (void) 
{ 
    printf("\nThese results were provided by Richard Triplett\n"); 
    system ("pause"); 
    return ; 
} 

回答

0

既然你正在返回從getLength()的價值,你並不需要一個參數:

double getLength() 
{ 

但是,你需要一個變量內存儲的值返回:

double len; 

現在得到的輸入,就像你是:

do 
    { 
     printf("\nEnter length of room in feet: "); 

但是,你並不需要在格式字符串中空格:

 scanf("%lf", &len); 
     if (len <= 0) 
     printf("\nLength must be positive number."); 
    } 
    while (len <=0); 

現在返回值:在主

return len; 
} 

現在,你可以將返回的值以一個變量:

double len; 

len = getLength(); 
+0

好吧我得到該功能的工作。我的calcArea函數不適用於其他函數。 – RTriplett

+0

我現在開始了。我只是玩了一些。謝啦! – RTriplett

+0

我需要更多關於如何將面積值更新到我的calcCost函數的信息。我一直收到不好的數據或沒有數據。預先感謝您的幫助。 – RTriplett

相關問題