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

[C] bład w programie do liczenia min i max wartości f. kwadratowej na przedziale

jackyy 07 Kwi 2011 02:07 1520 5
REKLAMA
  • #1 9370172
    jackyy
    Poziom 2  
    Posty: 2
    Witam,
    na studiach dostałem temat:
    Napisać program liczący minialna i maksymalna wartość funkcji kwadratowej wybranej przez użytkownika na wybranym przez użytkownika przedziale.
    Niby banał jednak program nie bierze pod uwage jednego z moich warunków i wychodzą 2 wyniki, jeden dobry drugi zły...
    Próbowałem juz wszystkiego, pewnie to jakaś drobnostka... Programowania uczę sie od 2 dni więc proszę o wyrozumiałość :)

    Kod:
    Kod: C#
    Zaloguj się, aby zobaczyć kod
    [/code]
  • REKLAMA
  • #2 9370275
    chudybyk
    Poziom 32  
    Posty: 1537
    Pomógł: 196
    Ocena: 297
    Witam!
    Kilka uwag:
    1. Używaj nawiasów. W instrukcji if() masz takie koszmarki: if(a<0&&m<=yw<=n) - sam nie wiem jaką wartość będzie miała ta funkcja, bo trudno zgadnąć jak program sobie poradzi z kolejnością działań.
    2. Rób wcięcia. Program lepiej się czyta i "widać" konstrukcję funkcji.
    3. Komentarze. Kiedy ktoś czyta Twój program, to musi zgadywać, po co Ci jakaś zmienna lub funkcja. Nawet gdy jest to oczywiste.
    4. Algorytm. W zasadzie to Twoja sprawa, w jaki sposób rozwiążesz problem, ja bym to zrobił iteracyjnie - dzieląc na połowy i przesuwając się w kierunku minimum i maksimum.
    Pozdrawiam!
  • REKLAMA
  • #3 9370515
    ed-ek
    Poziom 34  
    Posty: 1814
    Pomógł: 275
    Ocena: 42
    Z treści zadania wynika że wybrana fcja kwadratowa jest dowolna, czyli parabola wcale nie musi przecinać (być styczna) osi X. Np wierzchołek paraboli może leżeć w pkcie (x0,y0)=(4,5). Trzeba tak ułożyć algorytm szukania max, min aby rozwiązanie dotyczyło wszystkich przypadków.
  • REKLAMA
  • #4 9370574
    jackyy
    Poziom 2  
    Posty: 2
    No dobra, ale jak mam w if'ie poradzić sobie z tymi nawiasami ? Mam zrobić if (a>0) && (m<=yw<=n) ?

    ed-ek wydaje mi się, że rozwazyłem wszystkie możliwe przypadki :)

    Chodzi o to, że program nie bierze mi pod uwagę tego warunku (m<=yw<=n).
  • REKLAMA
  • #5 9370769
    piki1987
    Poziom 12  
    Posty: 27
    Pomógł: 5
    Rozbij to na dwa nawiasy (a<b<c) => (a<b) && (b<c)
  • #6 9372088
    ed-ek
    Poziom 34  
    Posty: 1814
    Pomógł: 275
    Ocena: 42
    Trochę inne podejście:
    Kod: text
    Zaloguj się, aby zobaczyć kod
REKLAMA