2013-10-08 1 views
0

J'ai essayé de rechercher des awnsers, mais tous les threads sont des langs différents.Utilisation de la variable locale d'une fonction dans le principal

#include <cstdlib> 
#include <iostream> 
#include <math.h> 
using namespace std; 

void calcDistance (int x1, int y1, int x2, int y2); 

int main() 
{ 
    int x1, y1, x2, y2; 
    cout << "Enter the points in coordinate pair form, ommiting parantheses" << endl; 
    cin >> x1 >> y1 >> x2 >> y2; 

    calcDistance (x1, y1, x2, y2); 

    system("pause"); 
    // how do I cout the dist in main-- says dist isn't declared 

} 


void calcDistance (int x1, int y1, int x2, int y2) 
{ 
    int sideA; 
    sideA = x2 - x1; 

    int sideB; 
    sideB = y2 -y1; 

    int sideAsqd; 
    sideAsqd = sideA * sideA; 

    int sideBsqd; 
    sideBsqd = sideB * sideB; 

    int sideCsqd; 
    sideCsqd = sideAsqd + sideBsqd; 

    double dist; 
    dist = sqrt(sideCsqd); 

    cout << "The calculated distance is "<< dist << endl; 

} 

Comment faire pour que le deuxième cout apparaisse dans main. J'essaie juste de le mettre en main, mais ensuite j'obtiens une erreur disant que dist n'est pas déclaré dans la portée.

Je souhaite pouvoir utiliser la valeur dist dans main, alors qu'elle a été calculée dans la fonction.

Répondre

5

Changer votre fonction:

double calcDistance (int x1, int y1, int x2, int y2) 
{ 
    int sideA = x2 - x1; 

    int sideB = y2 -y1; 

    int sideAsqd = sideA * sideA; 

    int sideBsqd = sideB * sideB; 

    int sideCsqd = sideAsqd + sideBsqd; 

    double dist = sqrt(sideCsqd); 

    return dist;  
} 

Et principal font ceci:

double res = calcDistance (x1, y1, x2, y2); 
cout << "The calculated distance is "<< res << endl; 
+0

avec quelques points-virgules sur la fin des lignes – doctorlove

+0

devrait écrire 'int Sidea = x2 - x1,' etc. – billz

+0

Peut-être qu'ils sont constants aussi ;-) – doctorlove

1

Compte tenu d'une fonction, disons

void calcDistance (int x1, int y1, int x2, int y2) 
{ 
    //... 
    double dist; 
    //... 
} 

La dist variables est hors de portée à la clôture accolade, non seulement vous ne pouvez pas vous y référer d'ailleurs, il n'existera pas à l'extérieur du fonction.
Si vous voulez la valeur ailleurs, le retourner:

double calcDistance (int x1, int y1, int x2, int y2) 
{ 
    //... 
    double dist; 
    //... 
    return dist; 
} 

Pour utiliser ailleurs vous suffit de saisir le retour:

double distance = calcDistance(1,2,3,4); 

Maintenant, vous avez une autre variable locale appelée distance que vous pouvez utiliser.

Questions connexes