ZADANIE 1 -- Sprawdzamy czy punkt C należy do odcinka |AB|: #include #include // dla std::min i std::max using namespace std; int main() { double A_x, A_y, B_x, B_y, C_x, C_y; cout << "Punkt A. Podaj x: "; cin >> A_x; cout << "Punkt A. Podaj y: "; cin >> A_y; cout << "Punkt B. Podaj x: "; cin >> B_x; cout << "Punkt B. Podaj y: "; cin >> B_y; cout << "Punkt C. Podaj x: "; cin >> C_x; cout << "Punkt C. Podaj y: "; cin >> C_y; double wyznacznik = A_x * B_y + B_x * C_y + C_x * A_y - B_y * C_x - C_y * A_x - A_y * B_x; if (wyznacznik == 0) { if ((C_x >= min(A_x, B_x)) && (C_x <= max(A_x, B_x)) && (C_y >= min(A_y, B_y)) && (C_y <= max(A_y, B_y))) { cout << "C leży na |AB|." << endl; } else { cout << "C nie leży na |AB|, choć jest z nim współliniowy." << endl; } } else { cout << "Niestety punkt C nie leży na tym odcinku. :(" << endl; } return 0; } ZADANIE 2 -- POTĘGOWANIE SZYBKIE #include #include int main() { int n, x; std::cout << "Podaj podstawę x: "; std::cin >> x; std::cout << "Podaj wykładnik n: "; std::cin >> n; int w = 1; int m = floor(log2(n)) + 1; // liczba miejsc binarnych liczby n for (int i = m - 1; i >= 0; i--) { int c = (n >> i) & 1; // i-ta cyfra binarna liczby n w = w * w; // kwadrat w każdej iteracji if (c == 1) { w = w * x; // mnożenie przez x, gdy i-ta cyfra binarna to 1 } } std::cout << "Wynik: " << w << std::endl; return 0; } ============================================================================================================= Zadanie 1. Dane są prosta o równaniu ogólnym Ax+By+C=0 i punkt P=(x0,y0) Napisz program, który obliczy odległość punktu P od tej prostej. Współrzędne punktu oraz współczynniki prostej: A,B,C należy wprowadzić z klawiatury. Zadanie 2. Dane są prosta o równaniu Ax+By+C=0 i odcinek |AB|, gdzie A=(xA,yA)i B=(xB,yB) . Napisz program, który sprawdzi, czy odcinek |AB| leży na tej prostej. Wszystkie potrzebne dane wprowadź z klawiatury. Zadanie 3. Dane są punkt P=(x0,y0) i odcinek |AB| , gdzie A=(xA,yA) i B=(xB,yB). Napisz program, który sprawdzi, czy punkt P jest środkiem odcinka |AB|. Współrzędne punktów należy wprawadzić z klawiatury. Zadanie 4. Dane są punkt P=(x0,y0) i odcinek |AB| , gdzie A=(xA,yA) i B=(xB,yB). Napisz program, który sprawdzi, czy punkt P leży powyżej, czy poniżej odcinka |AB| Współrzędne punktów należy wprawadzić z klawiatury. Jeśli okaże się, że punkty A, B i P są współliniowe, program ma wyświetlić użytkownikowi prośbę o podanie kolejnego zestawu danych. Zadanie 5. Dany jest odcinek |AB|, gdzie A=(xA,yA) i B=(xB,yB) Napisz program, który będzie odnajdywał końce odcinka |CD| , gdzie C=(xC,yC) i D=(xD,yD). Odcinek |CD| powinien mieć taką samą długość jak odcinek |AB| i przecinać odcinek |AB| w połowie jego długości pod kątem prostym. Współrzędne końców odcinka |AB| powinien podać użytkownik. ------------- #include #include using namespace std; int main() { // zadanie1 { double A, B, C, x0, y0; cout << "Zadanie 1: Obliczanie odleglosci punktu od prostej\n"; cout << "Podaj wspolczynniki prostej (A, B, C): "; cin >> A >> B >> C; cout << "Podaj wspolrzedne punktu (x0, y0): "; cin >> x0 >> y0; double distance = fabs(A * x0 + B * y0 + C) / sqrt(A * A + B * B); cout << "Odleglosc punktu P od prostej wynosi: " << distance << endl; } // zadanie2 { double A, B, C, xA, yA, xB, yB; cout << "\nZadanie 2: Sprawdzanie, czy odcinek lezy na prostej\n"; cout << "Podaj wspolczynniki prostej (A, B, C): "; cin >> A >> B >> C; cout << "Podaj wspolrzedne punktu A (xA, yA): "; cin >> xA >> yA; cout << "Podaj wspolrzedne punktu B (xB, yB): "; cin >> xB >> yB; if (A * xA + B * yA + C == 0 && A * xB + B * yB + C == 0) { cout << "Odcinek AB lezy na prostej." << endl; } else { cout << "Odcinek AB nie lezy na prostej." << endl; } } // zadanie3 { double x0, y0, xA, yA, xB, yB; cout << "\nZadanie 3: Sprawdzanie, czy punkt jest srodkiem odcinka\n"; cout << "Podaj wspolrzedne punktu P (x0, y0): "; cin >> x0 >> y0; cout << "Podaj wspolrzedne punktu A (xA, yA): "; cin >> xA >> yA; cout << "Podaj wspolrzedne punktu B (xB, yB): "; cin >> xB >> yB; if (x0 == (xA + xB) / 2 && y0 == (yA + yB) / 2) { cout << "Punkt P jest srodkiem odcinka AB." << endl; } else { cout << "Punkt P nie jest srodkiem odcinka AB." << endl; } } // zadanie4 { double x0, y0, xA, yA, xB, yB; cout << "\nZadanie 4: Sprawdzanie, czy punkt lezy powyzej lub ponizej odcinka\n"; while (true) { cout << "Podaj wspolrzedne punktu P (x0, y0): "; cin >> x0 >> y0; cout << "Podaj wspolrzedne punktu A (xA, yA): "; cin >> xA >> yA; cout << "Podaj wspolrzedne punktu B (xB, yB): "; cin >> xB >> yB; double determinant = (xB - xA) * (y0 - yA) - (yB - yA) * (x0 - xA); if (determinant == 0) { cout << "Punkty A, B i P sa wspoliniowe. Podaj kolejny zestaw danych." << endl; } else { if (determinant > 0) { cout << "Punkt P lezy powyzej odcinka AB." << endl; } else { cout << "Punkt P lezy ponizej odcinka AB." << endl; } break; } } } // zadanie5 { double xA, yA, xB, yB; cout << "\nZadanie 5: Odnajdywanie koncow odcinka CD\n"; cout << "Podaj wspolrzedne punktu A (xA, yA): "; cin >> xA >> yA; cout << "Podaj wspolrzedne punktu B (xB, yB): "; cin >> xB >> yB; double midX = (xA + xB) / 2; double midY = (yA + yB) / 2; double length = sqrt((xB - xA) * (xB - xA) + (yB - yA) * (yB - yA)); double dx = (xB - xA) / length; double dy = (yB - yA) / length; double xC = midX + (dy * (length / 2)); double yC = midY - (dx * (length / 2)); double xD = midX - (dy * (length / 2)); double yD = midY + (dx * (length / 2)); cout << "Wspolrzedne punktu C: (" << xC << ", " << yC << ")" << endl; cout << "Wspolrzedne punktu D: (" << xD << ", " << yD << ")" << endl; } return 0; }