Использование локальной переменной функции в main

0

Я пробовал искать тентов, но все потоки - разные языки.

#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;

}

Как сделать второй cout в главном. Я пытаюсь просто поместить его в основное, но потом я получаю сообщение об ошибке, что dist не объявлен в области.

Я хочу иметь возможность использовать значение dist в main, в то время как оно было рассчитано в функции.

Теги:
function

2 ответа

5
Лучший ответ

Измените свою функцию:

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;    
}

И в основном делайте это:

double res =  calcDistance (x1,  y1,  x2,  y2);
cout << "The calculated distance is "<< res << endl;
  • 0
    с точкой с запятой в конце строки
  • 0
    следует написать int sideA = x2 - x1; и т.п.
Показать ещё 2 комментария
1

Учитывая функцию, скажем,

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

Переменная dist выходит за пределы области действия в закрывающей скобке, поэтому вы можете не только не ссылаться на нее из других источников, она не будет существовать, если вне функции.
Если вы хотите получить значение в другом месте, верните его:

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

Чтобы использовать его в другом месте, просто запишите возврат:

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

Теперь у вас есть другая локальная переменная, называемая distance которое вы можете использовать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню