• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Znajdywanie trójek Pitagorejskich

Object Storage Arubacloud
0 głosów
1,569 wizyt
pytanie zadane 23 października 2020 w C i C++ przez patrykcyranek Nowicjusz (160 p.)

Piszę program który po wprowadzeniu danej liczby całkowitej, wypisuje trójki Pitagorejskie stowrzone z liczb mniejszych od tej wprowadzonej, samemu wymyśliłem coś takiego ale nie działa kompletnie i nie potrafię stwierdzić dlaczego

#include <iostream>
using namespace std;

int main() {
	cout << "Podaj liczbę: ";
	unsigned int n;
	cin >> n;
	for(unsigned int a=1, b=1, c=1; a<=n, b<=n, c<=n;)
	{
		if(a*a+b*b==c*c)
		{
			cout << a << " " << b << " " << c << endl;
		}
	a++;
		if(a*a+b*b==c*c)
		{
			cout << a << " " << b << " " << c << endl;
		}
	c++;
		if(a*a+b*b==c*c)
		{
			cout << a << " " << b << " " << c << endl;
		}
	b++;
	}
	return 0;
}

Zacząłem szukać na internecie i znalazłem coś takiego

#include <iostream>
using namespace std;

int main() {
	cout << "Podaj: ";
	int a, b, c, n;
	cin >> n;
	a = 0;
	b = 0;
	c = 0;

	for (a = 1; a<n; a++)
		for (b = 1; b<n; b++)
			for (c = 1; c<n; c++)
				if ( (a*a) + (b*b) == (c*c))
				{
					{
						cout << a << " " << b << " " << c << endl;
					}
				}
	return 0;
}

Tylko mam problem bo kompletnie nie rozumiem w jaki sposób działają te pętle kiedy są zapisane pod sobą i nie mogę tego też nigdzie znależć.

Byłbym wdzięczny gdyby ktoś mógł mi powiedzieć czy ten pierwszy kod ma prawo działać albo w jaki sposób działa ten drugi.

komentarz 23 października 2020 przez Whiskey_Taster Pasjonat (15,610 p.)

Jak chcesz, aby zachodziły trzy warunki jednocześnie, to musi być:

a <= n && b <= n && c <= n

Rozdzielanie warunków przecinkiem jest błędem, bo przecinek to separator, a nie spójnik. 

Oczywiście nie wiem, czy to załatwia sprawę, to tak tylko na pierwszy rzut oka. 

komentarz 23 października 2020 przez patrykcyranek Nowicjusz (160 p.)
Dzięki na pewno załatwiło sprawe ze złymi warunkami ale całość niestety nadal nie działa;/

1 odpowiedź

0 głosów
odpowiedź 23 października 2020 przez overcq Pasjonat (21,650 p.)

Ten drugi kod wyszukuje dla każdej wartości a, dla każdej wartości b i dla każdej wartości c. Natomiast można to zoptymalizować, ponieważ wiadomo na przykład, że a < c i b < c. A myślę, że można znaleźć jeszcze dokładniejsze ograniczenia.

Twój pierwszy kod zawsze przechodzi do kolejnego obiegu pętli z takimi samymi wartościami ab i c, więc nie znajdzie rozwiązań. Poza tym sprawdzasz tylko, czy c <= n, reszta jest pomijana.

komentarz 24 października 2020 przez patrykcyranek Nowicjusz (160 p.)
Czemu nie zwiększa wartości abc? Instrukcja a++ itd. jest poza warunkiem if, czemu to się nie wykonuje?
komentarz 24 października 2020 przez overcq Pasjonat (21,650 p.)

Wykonuje się, ale jednocześnie wszystkie a, b i c w każdym obiegu pętli.

Sprawdzasz tylko dla

  1. a równego b równego c równego 1 na początku, a następnie
  2. a większego o 1, a następnie
  3. c większego o 1, równego a

I w następnym obiegu pętli wszystko zaczyna się od nowa dla zmiennych równych 2.

Podobne pytania

0 głosów
2 odpowiedzi 505 wizyt
0 głosów
1 odpowiedź 124 wizyt
0 głosów
1 odpowiedź 103 wizyt
pytanie zadane 7 lutego 2021 w C i C++ przez Nabuchadonozor Gaduła (3,120 p.)

92,547 zapytań

141,390 odpowiedzi

319,509 komentarzy

61,931 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...