Écrit 3 fonctions pour convertir des pieds et des pouces en mètres et centimètres en C++?
je suis en train d'écrire un programme en C++ qui se compose de 3 fonctions de l'un pour l'entrée , une pour le calcul et l'autre pour la sortie . Le programme est censé prendre les pieds et les pouces en entrée puis imprimer la valeur convertie de mètres et en centimètres à l'utilisateur . Je pense qu'il ya quelque chose de mal avec l'appel par référence, puisque je suis encore à apprendre comment l'utiliser correctement , de toute façon, voici le code
#include<iostream>
using namespace std;
void input(double feet , double inches);
void calc(double &feet , double &inches);
void output(double &feet , double &inches);
void main()
{
double feet1 , inches1;
char ans;
do
{
input(feet1,inches1);
calc(feet1,inches1);
output(feet1,inches1);
cout<<"Would you like to calculate again? y/n : ";
cin>>ans;
}
while(ans == 'y' || ans == 'Y');
}
void input(double feet , double inches)
{
cout<<"Enter feet : ";
cin>>feet;
cout<<"Enter inches : ";
cin>>inches;
}
void calc(double &feet , double &inches)
{
double meters , centimeters;
meters = feet * 0.3048;
centimeters = inches * 2.54;
}
void output(double &feet , double &inches)
{
calc(feet,inches);
cout<<"Converted feet to metres : "<<metres;
cout<<"Converted inches to centimeters : "<<centimeters;
}
- Faire
void input(double& feet , double& inches)
- Aussi, calc ne retourne rien.
- Vous avez ajouté
functional-programming
pour les balises. Pourtant, votre programme est entièrement de procédure. Aussi, veuillez indenter votre code.
Vous devez vous connecter pour publier un commentaire.
Vous avez (au moins) trois problèmes: Le premier est que vous modifiez les arguments passés à la
input
fonction, mais que les arguments sont passés par valeur (copie) vous modifiez uniquement les copies. Vous devez passer les arguments par référence (qui, vous le faites avec les autres fonctions, même lorsque vous n'en avez pas besoin pour eux).Le deuxième problème est que dans votre
calc
fonction vous déclarezmeters
etcentimeters
comme des variables locales. Une fois que la fonction renvoie ces variables est hors de portée et ne peut pas être référencé à partir de n'importe où ailleurs.Le troisième problème, et cela devrait vous donner une erreur de compilation, c'est que vous essayez d'utiliser
metres
(vérifier l'orthographe, ce n'est pas la même que danscalc
) etcentimeters
de la fonction de sortie, et il y a ces variables ne sont pas déclarées.meter
etc.calc
de "retour" de ces variables, puis les passer comme simple (sans référence) les arguments deoutput
.calc
fonction, qui va faire de l'ombre aux variables globales. Ne pas déclarer localement.La façon dont vous êtes l'appariement de pieds de avec des mètres et des pouces, centimètres, va vous recevoir dans un enchevêtrement: pour diverses conversions, vous vous retrouverez avec des pouces de plus de 12 centimètres ou supérieurs à 100.
Si j'étais vous, je serais le seul maintien de deux variables - mètres et les pieds - et d'appliquer la conversion entre les personnes. Ensuite, vous pouvez supprimer les références au total que les fonctions de conversion sera de retour une seule des valeurs.
Ensuite, pour convertir les pieds en pieds et en pouces, vous pouvez utiliser
(int)feet
pour les pieds, en partie
(feet - (int)feet) * 12
pour les pouces de la partie.
Que vous souhaitez modifier pieds et en pouces, vous pouvez utiliser des références comme vous l'avez fait dans d'autres fonction.
Dans cette fonction, vous pouvez modifier le "compteurs" et "centimètres", mais il est perdu au moment de quitter la fonction.
Aussi, vous n'avez rien à pieds et en pouces de sorte que vous n'avez pas besoin de références.
Vous pouvez la changer avec quelque chose comme ça :
Et maintenant, vous pouvez appeler cette fonction avec "entrée de données" (pieds, pouces) et de "sortie" (mètres, centimètres).
En fonction de sortie,je ne suis pas sûr si vous voulez l'appeler calc à l'intérieur ou si c'est une erreur (comme calc fonction est également appelée à main/boucle while)
mais en sortie de la fonction vous avez besoin de lui donner mètre et le centimètre. OU comme il est si calc vous donner les données que vous avez besoin mais ne pas l'appeler calc dans le do-while.
d'autres choses:
Une fois est suffisant.