Pozdrav svima,
Imam problem u vezi jednog zadatka u C programskom jeziku. Naime, zadatak je sledeći:
Napisati program koji pronalazi sve Pitagorine trojke brojeva, od kojih nijedan nije veći od unetog broja n.
E sad, ovo rešenje nije najelegantnije jer ima duplikata (početne varijacije rade korektno,ali posle već ne) ali mi je bitno da shvatim kako funkcioniše ugnježdeni for. Konkretno, shvatam kako radi for unutar fora, ali ovaj zadatak zahteva i treći for i tu se maltene pogubim u postupku na koji program radi.
Početno rešenje;
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, i, j, k;
printf("Unesite najveci moguci broj za pitagorine trojke: ");
scanf("%i", &n);
printf("Pitagorine trojke su: \n");
for (i = 1; i <= n; i++){
for(j = 1; j <= n; j++)
for(k =1; k <= n; k++)
if (i * i == k * k - j * j)
printf("(%i, %i, %i)\n", i, j, k);
}
return 0;
}
Uzeću za primer da nam je n = 15 i za prvi par brojeva bi trebao da ispiše (3, 4, 5) i ono što me tu buni je kako ta 3 fora funkcionišu, u smislu kojim redosledom proveravaju uslove i ostalo?
Ovo je neko moje razmišljanje (za sad pogrešno):
1. Ulazimo u prvi for, gde se za i = 1 proverava da li je ono <= n. Uslov je tačan
2. Ulazi u drugi for gde je uslov takođe tačan
3. Ulazimo u treći for, takođe tačan
4. Proverava se da li je k na kvadrat = j na kvadrat + i na kvadrat. Uslov je netačan i za tu vrednost preskače se deo kod printf-a.
Iznad navedeno mi je jasno, e sad,deo koji mi nije najjasniji, kojim redosledom program dalje ide, tj. od kog fora tako da stigne baš do početnih brojeva 3/4/5 uzastopno?
Hvala puno unapred na pomoći.
|