Matematické Fórum

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

#1 22. 11. 2010 15:30

misaj
Zelenáč
Příspěvky: 22
Reputace:   
 

Rozklad na tri sčítance

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

  • (téma jako vyřešené označil(a) misaj)

#2 22. 11. 2010 17:17

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Rozklad na tri sčítance

Co treba takhle:

Code:

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:

Code:

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

 

#3 22. 11. 2010 17:31

misaj
Zelenáč
Příspěvky: 22
Reputace:   
 

Re: Rozklad na tri sčítance

dekuji moc, to mě teda taky mohlo napadnout

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson