Думаю, ты хочешь этого по искривлению земли. Ваши две точки и центр земли находятся на плоскости. Центр Земли - это центр круга на этой плоскости, и две точки (примерно) расположены по периметру этого круга. Из этого вы можете рассчитать расстояние, узнав, что угол от одной точки к другой.
Если точки не совпадают с высотами, или если вам нужно учитывать, что земля не идеальная сфера становится немного сложнее.
Это происходит из-за того, что неявный фид строки, также известный как символ новой строки \n
, добавляется ко всем пользовательским вводам терминала, поскольку он сообщает потоку начать новую строку. Вы можете смело учитывать это, используя std::getline
при проверке нескольких строк ввода пользователя. Поведение по умолчанию std::getline
будет читать все до и включая символ новой строки \n
из объекта входного потока, который в этом случае является std::cin
.
#include <iostream>
#include <string>
int main()
{
std::string name;
std::string state;
if (std::getline(std::cin, name) && std::getline(std::cin, state))
{
std::cout << "Your name is " << name << " and you live in " << state;
}
return 0;
}
blockquote >Input: "John" "New Hampshire" Output: "Your name is John and you live in New Hampshire"
Все будет ОК, если вы измените исходный код следующим образом:
if ((cin >> name).get() && std::getline(cin, state))
get()
потребляет следующий символ. Есть также (std::cin >> name).ignore()
, которые я предложил ранее в своем ответе.
– 0x499602D2
26 March 2014 в 14:14
if (getline(std::cin, name) && getline(std::cin, state))
?
– Fred Larson
19 August 2016 в 19:41