Задача с цикли и функции
Напишете програма, която прочита от стандартния си вход: цяло положително число n (броят на координатите), последвано от n реда, всеки от които с по две дробни числа с до пет значещи цифри (координатите).
Такаа и за задачата трябва да взимам две по две координатите. Правя това:
int main() {
unsigned int n;
double x, y;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> x >> y;
}
}
Обаче не знам след това как да ги взимам две по две.
Условието е много дълго 3 стр. Накратко трябва да сметна дължина на отсечка тоест трябва да взема първата и втората точка, после втората и третата след това третата и четвъртата и т.н. до n-тата.
Тези точки, предполагам, са крайщата на различни по дължина отсечки, и ти трябва да изчислиш дължината на всяка от тях, така ли?
Точките са (x,y)
Пример:
0 3
4 5
Дължината е 5
Проблемът е, че отговорът е 5 само с уговорката, че има закръгляне на резултата към по-високата стойност. Иначе разстоянието между точките (което е по същество дължината на отсечката) се намира чрез съответната формула за разстояние между две точки в равнината. Но отговорът не е цяло число, още повече, че в условието е зададена точността на стойностите, които трябва да бъдат използвани. Изниква и друг въпрос - как ще съхраняваш резултатът? Ако трябва да бъде съхраняван, няма как задачата да бъде решена без някакви структури данни. Ако трябва просто да бъде изведен резултат, то тогава изчисленията трябва да стават непосредствено след въвеждането на данните. В случая, x и y ще бъдат само placeholder-и, и ще имаш нужда от още 4 променливи (x1, y1, x2, y2), които да играят роля в изчисленията. Изчисленията трябва да се реализират само до n, ако съм разбрал правилно. Не е като да се изисква разстоянието между всички точки да бъде изчислено, защото тогава е по-сложно (например, първата с последната, втората с четвъртата, и т. н.)
#include <iostream>
using namespace std;
const int pi = 3.14;
double distance(double x) {
double f = ((pi*x) / 2 + x) / 2; //функция f(x) , която ни дава приблизителната дължина на
разстоянието, изминато от играчите между две точки в равнината като приема за аргумент
дължината на отсечката между тези две точки.
return f;
}
int main() {
unsigned int n;
double x,y,x1, y1,x2,y2,ab;
double sum = 0;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> x1 >> y1;
cin >> x2 >> y2;
ab= sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
distance(ab);
sum += ab;
}
cout << sum;
}
Стигам до тук .. така точките са ми 2 пъти повече
Такъв е изразът, необходими са и 4-те точки. Само с 2 може да стане ако използваш struct, но това не е част от параметрите на задачата, доколкото разбирам.