Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
DObrý den, mám nalézt všechny rozklady daného čísla na tři sčítance, s tím, že rozklady lišící se pouze pořadím sčtanců nejsou různé. a právě o to mi jde. Nevím , jak mám program ošetřit, aby mi vypisoval každou trojici jen jednou. Program jsem vytvořila takhle:
program triscitance;
var a,
n,
b,
c:integer;
begin
read (n);
for a:=1 to n-2 do
for b:= 1 to n-2 do
for c:= 1 to n-2 do
if a+b+c=n then
writeln (a, ' ', b, ' ', c, ' ')
end.
Offline

Co treba takhle:
program triscitance;
var a,
n,
b,
c:integer;
begin
read (n);
for a:=1 to n-2 do
for b:= a to n-2 do
for c:= b to n-2 do
if a+b+c=n then
writeln (a, ' ', b, ' ', c, ' ')
end.Zmenene akorat ty dva 'for' cykly - ze 'b' jde od 'a' a 'c' jde od 'b'.
Jeste me napadlo, ze by se to dalo napsat priblizne takhle:
program triscitance;
var a,
n,
b,
c:integer;
begin
read (n);
for a:=1 to (n div 3) do
for b:= a to ((n-a) div 2) do begin
c := n-a-b;
writeln (a, ' ', b, ' ', c, ' ');
end
end.Coz by melo by efektivnejsi, ale jestli ti staci to nahore, tak si tohoto nevsimej :-)
Offline
Stránky: 1