Reklama
Strona 1 z 2 12 OstatniaOstatnia
Pokazuje wyniki od 1 do 15 z 16

Temat: znowu c++ ćwiartki

  1. #1
    Avatar Kaplarek
    Data rejestracji
    2009
    Posty
    361
    Siła reputacji
    15

    Domyślny znowu c++ ćwiartki

    Napisz program, który poda, przez które ćwiartki układu współrzędnych przechodzi funkcja liniowa f(x) = ax + b.

    Wejście:
    Podane są dwie liczby rzeczywiste a i b.

    Wyjście:
    Należy wypisać numery ćwiartek w kolejności rosnącej (I - dodatnie wartości X i Y; II - ujemne X i dodatnie Y; III - ujemne X i ujemne Y; IV - dodatnie X i ujemne Y).

    Przykład:

    Dane:

    1.0 -1.0
    Wynik:

    I III IV



    jako, że pętle, boole, getche i while umiem to z ifami mam lekkie problemy.

    wnioskuję, że powinno się to opierać na zasadzie if (x>0; y>0) cout "I";
    ale
    to ma mi wypisywać parę jednocześnie.

    piwo dla wygranego
    nie świecę

  2. #2
    Avatar Kusterek
    Data rejestracji
    2013
    Położenie
    Warszawa
    Wiek
    31
    Posty
    1,710
    Siła reputacji
    13

    Domyślny

    a > 0 to funkcja jest rosnąca
    a < 0 to funkcja jest malejąca
    a=0 to funkcja jest stała

    punkt b jest to punkt przecięcia się wykresu funkcji liniowej z osią OY tzn. punkt (0,b),bo dla f(0)=a * 0 + b=b

    Teraz już łatwo ustalisz przez jakie ćwiartki przechodzi funkcja, w zależności od różnych wartości a i b np:
    dla a > 0 i b > 0 funkcja przechodzi przez I,II i III ćwiartkę układu współrzędnych.
    starczy Ci czy napisać Ci kod?

  3. Reklama
  4. #3
    Avatar Kaplarek
    Data rejestracji
    2009
    Posty
    361
    Siła reputacji
    15

    Domyślny

    Cytuj Kusterek napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    starczy Ci czy napisać Ci kod?
    jeśli będzie miło, to mógłbyś napisać. ja sobie na to zerknę i sam spróbuję napisać :P
    nie świecę

  5. #4
    Avatar Kusterek
    Data rejestracji
    2013
    Położenie
    Warszawa
    Wiek
    31
    Posty
    1,710
    Siła reputacji
    13

    Domyślny

    Kod:
    if(a>0 && b>0)
    	cout << "I II III";
    if(a>0 && b==0)
    	cout << "I III";
    if(a>0 && b<0)
    	cout << "I III IV";
    if(a==0 && b>0)
    	cout << "I II";
    if(a==0 && b==0)
    	cout << "chuj wie";
    if(a==0 && b<0)
    	cout << "III IV";
    if(a<0 && b>0)
    	cout << "I II IV";
    if(a<0 && b==0)
    	cout << "II IV";
    if(a<0 && b<0)
    	cout << "II III IV";
    takie na piechote wystarczy?

    #edit
    chcialem cos pyknac algorytmem ale nie wiem czy sie da nawet :P
    Ostatnio zmieniony przez Kusterek : 27-09-2013, 21:14

  6. #5
    Avatar Kaplarek
    Data rejestracji
    2009
    Posty
    361
    Siła reputacji
    15

    Domyślny

    lvalue required as left operand of assigment
    taki błąd jak f9
    nie świecę

  7. #6
    Avatar MasterMappi
    Data rejestracji
    2005
    Położenie
    Poznan
    Wiek
    34
    Posty
    1,480
    Siła reputacji
    19

    Domyślny

    kod prosty jak 2+2, stary patrz na blad, patrz ktora linijka i rusz glowa, bo to, co dal Kusterek dziala
    masz tu calosc
    Kod:
    using namespace std;
    #include <iostream>
    int a,b;
    void main()
    {
    	cout << "Podaj a: ";
    	cin >> a;
    	cout << "Podaj b: ";
    	cin >> b;
    	if(a>0 && b>0)
    		cout << "I II III";
    	if(a>0 && b==0)
    		cout << "I III";
    	if(a>0 && b<0)
    		cout << "I III IV";
    	if(a==0 && b>0)
    		cout << "I II";
    	if(a==0 && b==0)
    		cout << "chuj wie";
    	if(a==0 && b<0)
    		cout << "III IV";
    	if(a<0 && b>0)
    		cout << "I II IV";
    	if(a<0 && b==0)
    		cout << "II IV";
    	if(a<0 && b<0)
    		cout << "II III IV";
    	cout << endl;
    	system("pause");
    }
    tylko bog moze nas sadzic / yolo / hwdp / acab

  8. #7
    Avatar Kaplarek
    Data rejestracji
    2009
    Posty
    361
    Siła reputacji
    15

    Domyślny

    dziekuje
    do zamkniecia
    nie świecę

  9. #8
    Avatar Tibiarz
    Data rejestracji
    2008
    Położenie
    Tibiantis
    Wiek
    4
    Posty
    16,029
    Siła reputacji
    27

    Domyślny

    Po co tyle tych ifów?
    To już lepiej na przykład:
    Kod:
    if (a > 0) {
       if (b > 0) {
          cout << "I II III";
       } else if (b < 0) {
          cout << "I III IV";
       } else {
          cout << "I III";
       }
    } else if (a < 0) {
       if (b > 0) {
          cout << "I II IV";
       } else if (b < 0) {
          cout << "II III IV";
       } else {
          cout << "II IV";
       }
    } else {
       if (b > 0) {
          cout << "I II";
       } else if (b < 0) {
          cout << "III IV";
       } else {
          cout << "chuj wie";
       }
    }
    A jak już piszecie w taki sposób każdy przypadek z osobna, to warto w tych kolejnych liniach pisać "else if", bo jeśli już pierwszy warunek zostanie spełniony, to po co program ma sprawdzać pozostałe?

  10. #9
    Avatar Gray
    Data rejestracji
    2007
    Położenie
    Gdańsk
    Posty
    2,847
    Siła reputacji
    18

    Domyślny

    Można i tak:
    Kod:
    if (a > 0 || b > 0)
    	cout << "I ";
    if (a < 0 || b > 0)
    	cout << "II ";
    if (a > 0 || b < 0)
    	cout << "III ";
    if (a < 0 || b < 0)
    	cout << "IV";

  11. #10
    Avatar Kusterek
    Data rejestracji
    2013
    Położenie
    Warszawa
    Wiek
    31
    Posty
    1,710
    Siła reputacji
    13

    Domyślny

    Cytuj Gray napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Można i tak:
    Kod:
    if (a > 0 || b > 0)
    	cout << "I ";
    if (a < 0 || b > 0)
    	cout << "II ";
    if (a > 0 || b < 0)
    	cout << "III ";
    if (a < 0 || b < 0)
    	cout << "IV";
    a jezeli a=0 i b=0? nie sprawdziiles wszystkich warunkow i Twoj kod jest kompletnie bez sensu

  12. #11
    Avatar Gray
    Data rejestracji
    2007
    Położenie
    Gdańsk
    Posty
    2,847
    Siła reputacji
    18

    Domyślny

    Cytuj Kusterek napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    a jezeli a=0 i b=0? nie sprawdziiles wszystkich warunkow i Twoj kod jest kompletnie bez sensu
    To go sobie przetestuj i porównaj wyniki z tymi wyżej. Sprawdziłem tyle ile trzeba ;>

    A jeśli a=0 i b=0 to nie wiadomo czy uznać że przechodzi przez wszystkie, czy przez żadną, więc nie powinno być takiego przypadku w ogóle.

  13. #12
    Avatar Tibiarz
    Data rejestracji
    2008
    Położenie
    Tibiantis
    Wiek
    4
    Posty
    16,029
    Siła reputacji
    27

    Domyślny

    Cytuj Gray napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Można i tak:
    Kod:
    if (a > 0 || b > 0)
    	cout << "I ";
    if (a < 0 || b > 0)
    	cout << "II ";
    if (a > 0 || b < 0)
    	cout << "III ";
    if (a < 0 || b < 0)
    	cout << "IV";
    Można i to jest całkiem sprytne rozwiązanie. Ale czy optymalne? W przypadku mojego kodu program zrobi zawsze 2-4 porównania. W twoim jeśli dobrze patrzę, to zawsze 6 (chyba, że a==0 i b==0, to wtedy nawet 8)? Więc wychodzi, że jest to gorsze niż wypisanie każdego przypadku osobno (tak, jak ktoś na początku podał, tyle że w kolejnych liniach dać dać else if).

  14. #13

    Data rejestracji
    2010
    Posty
    2,657
    Siła reputacji
    16

    Domyślny

    zle myslisz, kod porowna warunek 1 i jesli jest true, reszta jest pomijana ze wzgledu na logiczny operator OR ( || )

    Graya kod jest najbardziej optymalny po skompilowaniu , prosze nawet nie handlować z tym ;]

  15. #14
    Avatar Celestian hunter
    Data rejestracji
    2006
    Położenie
    Gliwice
    Wiek
    32
    Posty
    1,059
    Siła reputacji
    19

    Domyślny

    Cytuj Havaran napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    zle myslisz, kod porowna warunek 1 i jesli jest true, reszta jest pomijana ze wzgledu na logiczny operator OR ( || )
    Przecież uwzględnił to w swoim poście
    Jeśli np a=5 to:
    Kod:
    if (a > 0 || b > 0) //1 porównanie
    	cout << "I ";
    if (a < 0 || b > 0)//3
    	cout << "II ";
    if (a > 0 || b < 0)//4
    	cout << "III ";
    if (a < 0 || b < 0)//6
    	cout << "IV";


    Choć i tak nie wiem po co dyskutować o optymalności tak małego programu :P

  16. #15
    Avatar Tibiarz
    Data rejestracji
    2008
    Położenie
    Tibiantis
    Wiek
    4
    Posty
    16,029
    Siła reputacji
    27

    Domyślny

    Cytuj Havaran napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    zle myslisz, kod porowna warunek 1 i jesli jest true, reszta jest pomijana ze wzgledu na logiczny operator OR ( || )

    Graya kod jest najbardziej optymalny po skompilowaniu , prosze nawet nie handlować z tym ;]
    O czym ty mówisz?

    Są 4 osobne ify. W każdym na pewno sprawdzi pierwszy warunek, co daje nam minimum 4 porównania. W dodatku na pewno w dwóch przypadkach (jeśli a będzie równe 0, to w każdym) będzie musiał też sprawdzić drugi warunek, co daje łącznie 6 (lub 8 jeśli a = 0).

    W moim kodzie program wykona minimum 2 a maksymalnie 4 porównania.

    edit.
    Cytuj Celestian hunter napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Choć i tak nie wiem po co dyskutować o optymalności tak małego programu :P
    Teoretycznie nie ma to znaczenia, ale typ pisał, że się dopiero uczy i nie ogarnia ifów, więc chyba chodzi mu też o to, żeby się czegoś nauczyć, a nie tylko wziąć gotowca. Tak wnioskuję z jego posta.
    Ostatnio zmieniony przez Tibiarz : 29-09-2013, 02:13

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. Znowu jakiś event?
    Przez Krfafy w dziale Tibia
    Odpowiedzi: 3
    Ostatni post: 22-04-2011, 16:35
  2. Znowu mass bany!
    Przez Berafiiiito w dziale Tibia
    Odpowiedzi: 39
    Ostatni post: 09-12-2009, 01:27
  3. o0 znowu mass ban poleciał?
    Przez Holczan w dziale Tibia
    Odpowiedzi: 24
    Ostatni post: 05-05-2009, 22:05

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •