2015-06-23 9 views
-2

Хорошо, так это то, что меня попросили сделать «сделать структуру под названием« Координата », которая содержит широту и долготу точки на поверхности Земли . Структура также должна хранить метку или имя для координаты (например, «Калгари»). Оба параметра широты и долготы должны иметь тип double и должны храниться в единицах радианов. После того, как структура определена, напишите функцию, чтобы прочитать метку/имя, а также широту и долготу одной координаты и сохранить их в структуре координат, которая затем возвращается в вызывающей функции. Функция должна запрашивать углы в единицах градусов, а затем конвертировать значения int o радиан (согласно вышеизложенному) ».Stuck on Structs (C++)

Это то, что я написал

struct coordinate 
{ 
    double latitude; 
    double longitude; 
    string city; 
}; 

void Readcoordinate(); 
int main() 
{ 
    coordinate startPt, endPt; 


} 

void Readcoordinate() 
{ 
    cout << "Enter Longitude(in degrees)" << endl; 
    cin >> startPt.latitude 
     >> startPt.longitude 
     >> startPt.city; 
} 

и я продолжаю получать ошибки. любая помощь? благодаря

+1

ли вы * прочитать * сообщение об ошибке? –

+0

Да, это говорит об ошибке ошибка C2065: 'startPt': необъявленный идентификатор – user3531022

+0

'startPt' определен в основном, но не в' Readcoordinate'. Либо передайте его указателем, либо верните значение. – meneldal

ответ

0

Вы объявили coordinate startPt, endPt; в main(), и вы пытаетесь получить доступ к ним Readcoordinate(). To resolve error you should declare координировать startPt, endPt; in Readcoordinate() `или передать их как аргумент.

coordinate Readcoordinate() 
{ 
    coordinate startPt; 
    cout << "Enter Longitude(in degrees)" << endl; 
    cin >> startPt.latitude 
     >> startPt.longitude 
     >> startPt.city; 
    return startPt; 
} 

или

int main() 
{ 
     coordinate startPt, endPt; 
     Readcoordinate(startPt); 
     Readcoordinate(endPt); 
} 
void Readcoordinate(coordinate &Pt) 
{ 
    cout << "Enter Longitude(in degrees)" << endl; 
    cin >> Pt.latitude 
     >> Pt.longitude 
     >> Pt.city; 
} 
+0

спасибо, но со вторым вариантом я получаю ошибку Ошибка ошибка C2679: двоичный '>>': оператор не найден, который принимает правый операнд типа 'std :: string' (или нет приемлемого преобразования) – user3531022

+0

добавить '#include ' в свой код – HadeS

+0

lol my bad, thanks – user3531022

0

Ваши переменные определены в main, поэтому сфера их применения ограничена только main. Вам необходимо определить их в функции, в которой вы их используете, или вы можете определить эти переменные как глобальные, чтобы они были доступны как в main, так и в вашей функции. Вам также может потребоваться вызвать функцию в главном.

Локальные переменные:

void Readcoordinate(); 
int main() 
{ 
    Readcoordinate(); 
} 

void Readcoordinate() 
{ 
    coordinate startPt, endPt; // Locally defined 
    cout << "Enter Longitude(in degrees)" << endl; 
    cin >> startPt.latitude 
    >> startPt.longitude 
    >> startPt.city; 
} 

Глобальные переменные:

coordinate startPt, endPt; // Globally defined 
void Readcoordinate(); 
int main() 
{ 
    Readcoordinate(); 
} 

void Readcoordinate() 
{ 
    cout << "Enter Longitude(in degrees)" << endl; 
    cin >> startPt.latitude 
    >> startPt.longitude 
    >> startPt.city; 
}