logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Pascal - jak znaleźć maksymalną liczbę odcinków tworzących trójkąty?

Miles! 19 Gru 2007 18:49 1206 3
REKLAMA
  • #1 4604845
    Miles!
    Poziom 21  
    Posty: 495
    Pomógł: 4
    Ocena: 15
    Witam.

    Otóż otrzymałem dodatkowe zadanie na informatyce: Danych jest n odcinków. Podać max liczbę z n tak, że z każdych 3 odcinków jest trójkąt.

    Treść zadania pod względem gramatycznym i składni powala. Ale tak napisał nauczyciel (może dlatego, że robił to na szybko podczas przerwy). Prosiłbym o dokładne rozpisanie jak to powinno wyglądać. Za pomoc oddam wszystkie punkty jakie posiadam.

    Ps. Zrozumiem jeżeli mnie pojedziecie za lenistwo, ale mogę zapewnić, że nie z tego powodu zadania nie zrobiłem/nie potrafiłem zrobić. Długi czas spędziłem na rehabilitacji a teraz nadrabiam zaległości.

    Ps.II. Wszystko oczywiście w Pascal'u.
  • REKLAMA
  • #2 4605395
    Usako
    Poziom 14  
    Posty: 93
    Pomógł: 6
    Ocena: 1
    Ja bym do tego zabrał się tak:

    Napisałbym funkcję typu boolean która sprawdzałaby czy trzy odcinki które jej podasz tworzą trójkąt. Zapewne wiesz ale przypomnę że warunkiem stworzenia trójkąta jest to że suma długości dwóch odcinków jest większa od długości trzeciego. Jej paraetrami byłyby (a,b,c) czyli trzy odcinki a przymowałaby wartość prawda lub fałsz w zależności od tego czy trójkąt powstanie czy nie np:

    function sprawdz(a,b,c) : boolean;
    begin
    if (a+b > c) or (a+c > b) or (b+c > a) then sprawdz := true
    else sprawdz := false
    end;


    Lub coś w tym rodzaju a następnie wysyłałbym do niej wszystkie kombinacje trzech odcinków z N odcinków i gdyby zwracała true to zwiększałbym licznik o jeden. Sprawdź czy tam nie jest za mało nawiasów w tym warunku bo nie pamiętam już tak dobrze składni pascala. To już było parę ładnych lat temu... Gdy juz sprawdzisz wszystkie kombinacje będziesz miał tą swoją szukaną liczbę kombinacji z których może powstać trójkąt. Jeżeli to o to chodzi bo tak naprawdę to z tego zadania nic nie wynika....


    A tak wogóle to ten post powinien być na jakieś forum programistyczne a nie tu:D

    Kod proszę umieszczać w znacznikach code - krzychoocpp
  • REKLAMA
  • #3 4607107
    Smilox
    Poziom 18  
    Posty: 183
    Pomógł: 37
    Ocena: 30
    begin
    repeat 
     repeat
      repeat
      a:=dane[i];
      b:=dane[j];
      c:=dane[k];
       if (i<>k) and (j<>k) and (i<>j) then sprawdz(a,b,c);
      k:=k+1;  
      until k=n;
     j:=j+1;
     until j=n;
    i:=i+1;
    until i=n;


    Według takiego schematu zrobiłbym całą pętlę programu, korzystając z funkcji, którą napisał kolega Usako. Tylko pamiętaj, że wynik wtedy wyjdzie Ci 3 razy za duży, bo te same 3 odcinki pętla przeliczy 3 razy. Tak więc Tobie pozostawiam sposób zliczenia wyników :)
    Pozdrawiam

    Kod proszę umieszczać w znacznikach code - krzychoocpp
  • #4 4607245
    Miles!
    Poziom 21  
    Posty: 495
    Pomógł: 4
    Ocena: 15
    Dzięki za odpowiedzi, ale problem już rozwiązałem.
    usako, smilox - po 10 punktów za fatygę;)
    Temat zamykam.
REKLAMA