2010-01-24 4 views
1
#include <iostream> 
using namespace std; 
/*Use void functions, they perform some action but do not return a value*/ 

//Function Protoype, input,read in feet and inches: 
void input (double& feet, double& inches); 
//Function Prototype, calculate, calculate with given formulae. 
void calculate(double& feet, double& inches); 
//Function Prototype, output, outputs calculations to screen. 
void output (double meters, double centimeters); 

int main() 
{ 
    double feet; 
    double inches; 
    char repeat; 

    do 
    { 
     //Call input: 
     input(feet, inches); 
     //Call calculate: 
     calculate(feet, inches); 
     //Call output: 
     output (feet, inches); 
     cout << "\n"; 
     cout << "Repeat? (Y/N): "; 
     cin >> repeat; 
     cout << "\n"; 
    } 
    while (repeat == 'Y' || repeat == 'y'); 
} 

//Input function definition: 
void input (double& feet, double& inches) 
{ 
    cout << "Please enter the length in feet" << endl; 
    cin >> feet; 

    cout << "Please enter the length in inches" << endl; 
    cin >> inches; 
} 

//Calculate function definition, insert formulae here: 
void calculate (double& feet, double& inches) 
{ 

    feet = (feet * 0.3048); 
    inches = (inches * 2.54); 
} 

//Output function definition: 
void output (double meters, double centimeters) 
{ 
    cout << meters << " meters & " << centimeters << " cm's. " << endl; 
} 

Pourquoi ma conversion ne fonctionne-t-elle pas? Ou qu'est-ce que je fais mal? Objectif: Étant donné une longueur en pieds et en pouces, je suppose que je produirai une longueur équivalente en mètres et en centimètres.La conversion C++ ne fonctionne pas

//Calculate function definition, insert formula here: 
void calculate (double& feet, double& inches) 
{ 
    feet = (feet * 0.3048); 
    inches = (inches * 2.54); 
} 
+3

Lorsque vous postez une question sur le SO, vous devez fournir autant d'informations pertinentes que possible. Dans ce cas - Comment appelez-vous la fonction? Que voulez-vous dire par "ne pas travailler". Quels messages d'erreur obtenez-vous? –

Répondre

7

Cela semble une manière bizarre de le faire, en changeant les variables d'entrée réelles. Je choisirais plutôt pour:

void calculate (double feet, double inches, double& meters, double& centimeters) { 
    double all_inches = feet * 12.0 + inches; 
    centimeters = all_inches * 2.54; 
    meters = int (centimeters/100.0); 
    centimeters -= (meters * 100.0); 
} 

Dans tous les cas, même si vous faites utiliser les mêmes variables pour l'entrée et la sortie (et devrait être remplacé par quelque chose de plus approprié), il est encore plus facile à convertir une seule forme (pouces) puis faire la conversion en centimètres puis de nouveau à m/cm.

Dans votre code actuel, si vous passez en 1ft, 0in, vous obtiendrez 0.3048m, 0cm plutôt que 30.48cm plus correct. En utilisant le code dans cette réponse, il sera converti d'abord à 12,0 pouces, puis de là à 30,48 cm, puis à 0 m, 30,48 cm.

De même, quatre pieds et demi (4 pi, 6 po) seront d'abord convertis à 54 pouces, puis à 137,16 cm, puis à 1 m, 37,16 cm.

+0

Merci, Paxdiablo pour l'explication. – user242229

+0

Aucun problème, heureux de vous aider. – paxdiablo

4

Vous ne supportez pas les résultats de l'addition de pouces à des pieds.