Trójkąt prostokątny – nie rozumiem treści zadania

0

Napisz program wyznaczający 10 pierwszych trojek liczb spełniających warunek trójkąta prostokątne go.
Nie rozumiem treści zadania, nawet nie wiem od czego zacząć. Proszę o pomoc :(

0

Trójkąt prostokątny , trzy boki.
Zalezność jest taka, że :

pierwszyBok + drugiBok > trzeciBok

trzeciBok to zawsze ten najdłuższy.

Ewentualnie z pitagorasa:

trzeciBok^2 = pierwszyBok^2 + drugiBok^2
0

Dalej nie rozumiem treści tego zadania. Mam wypisać 3 boki i zrobić tak żeby wynik był taki, że trzeciBok ma być "True" (?), większy od pierwszy i drugi bok?

0
bool fun (double pierwszyBok, double drugiBok, doubleTrzeciBok){
if( (pow(pierwszyBok,2) + pow(drugiBok,2) == pow(TrzeciBok,2)
return true;
else
return false; 
}
0

Chodzi chyba o liczby całkowite, nie? Wtedy ma sens to zadanie. Robimy:

  • licznik = 0
  • a = 1
  • b = 2
  • pętla dopóki licznik < 10:
  • jeśli c = sqrt(a*a+b*b) jest liczbą całkowitą, to wyświetl a, b, c i zwiększ licznik o 1
  • zwiększ a o 1
  • jeśli a == b to b też zwiększ o 1
  • koniec pętli (i programu)
2
Smutny Młot napisał(a):

Napisz program wyznaczający 10 pierwszych trojek liczb spełniających warunek trójkąta prostokątne go.

Co sprawia, że pewna trójka jest wcześniejsza niż inna? Ja bym szukał trójek liczb pierwszych ;)

0

Dużo zależy czy w zadaniu chodzi tylko o liczby naturalne czy dowolne liczby dodatnie.

0
Hodor napisał(a):

Dużo zależy czy w zadaniu chodzi tylko o liczby naturalne czy dowolne liczby dodatnie.

FTW? Chyba chodziło Ci o całkowite, ale wtedy nie ma najmniejszej, chyba, że co do wartości bezwzględnej, ale wtedy...:)

0

Nic się tu nie dzieje, a przecież w kilka sekund można znajść na necie wzór na generowanie tych trójek , chyba, że już rozwiązane, a nie wiemy...

0

No to najprościej można zrobić tak:

#include <iostream>
using namespace std;

bool isRectangularTriangle(int a, int b, int c)
{
	if ((a*a + b*b == c*c) || (a*a + c*c == b*b) || (b*b + c*c == a*a)) return true;
	return false;
}

int main(int argc, char *argv[])
{
	int a = 1, b = 1, c = 1;
	int counter = 0;
	
	while (counter < 10)
	{
		if (isRectangularTriangle(a, b, c))
		{
			counter++;
			cout << "znaleziono trojkat prostokatny: " << a << " " << b << " " << c << endl;
		}
		
		c++;
		if (c > 80)
		{
			b++;
			c = 1;
		}
		if (b > 80)
		{
			a++;
			b = 1;
		}
	}
	
	return 0;
}

czyli zwiększamy c o jeden a gdy przekroczy pewną wartość to zwiększamy b o jeden i gdy ta też przekroczy pewną wartość to zwiększamy a o jeden.
Założyłem że (3, 4, 5) to inna trójka niż (3, 5, 4).

Pewnie można by to jakoś zoptymalizować biorąc pod uwagę to że zbyt duże rozbieżności między liczbami nie dadzą trójkąta prostokątnego albo coś w tym stylu.

0

Pitagorasa przecież uczą w podstawówce, co to za upośledzenie wśród młodzieży?

0
Zakręcony Ogórek napisał(a):

Pitagorasa przecież uczą w podstawówce, co to za upośledzenie wśród młodzieży?

I do tego jeszcze wyszukiwarek nie używają: http://mathworld.wolfram.com/PythagoreanTriple.html :
Wystarczy iterować od 2 w górę po:
(2m,m^2-1,m^2+1) :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1