Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

dzedziczenie...c++


Rekomendowane odpowiedzi

Opublikowano

Witam ...rozmawiałem z sopelkiem ale on nie bardzo ma teraz czas więc zwracam się do was ...

Mam problem ze zrozumieniem dziedziczenia.

Jest taki kodzik...I teraz nie rozumiem dlaczego

skoro jest ta linijka

 

class trojkat : public figura

ta klasa dziedziczy te obiekty,które są pod protected przecież powinna tylko te pod public.Wiem ,że protected pozwala na dziedziczenie jej zawartości więc narazie tłumaczę sobie to tak , w tej linijce

class trojkat : public figura

publik nie oznacza publikuj publiczne , tylko publikuj(czyli te co mozesz ).

Napiszcie czy dobrze rozumiem ...z góry dzięki...

 

 
#include <iostream>
using namespace std;
class figura
{
     protected:
     int szerokosc;
     int wysokosc;
     public:
     void ustaw(int x,int y)
     {
          szerokosc=x;
          wysokosc=y;
     }
     void wypisz()
     {
          cout <<szerokosc<<endl<<wysokosc<<endl;
     }
     virtual void pole()
     {
     }
};
class trojkat : public figura
{
      public:
             void pole()
             {
                 cout<<szerokosc * wysokosc/2 << endl;
             }
friend void pole(trojkat);
};
void pole(trojkat a)
{
     cout <<a.szerokosc*a.wysokosc/2<<endl;
}
int main()
{
   trojkat tr;
   tr.ustaw(3,3);
   figura * wskaz =&tr;
   wskaz->ustaw(4,5);
   tr.pole();
   pole(tr);
   wskaz->pole();
system ("pause");
}

-Jestem habilitowanym profesorem,magistrem, który nie umie zawiązać sobie butów.

-A ja jestem technikiem który daje ci prace.

Opublikowano

Ten operator określa w jaki sposób maja być "widziane" w klasie pochodnej elementy klasy bazowej. Public określa, se elementy tej będą miały ten sam operator co w klasie bazowej, protected zmienia elementy public na protected. Analogicznie do protected działa private.

Opublikowano

już wszystko rozumiem dzieki ... :D

-Jestem habilitowanym profesorem,magistrem, który nie umie zawiązać sobie butów.

-A ja jestem technikiem który daje ci prace.

Opublikowano

a tak na marginesie mam pytanie ... :P ...macie jakiś pomysł aby wynik działania program z czytał mi odkońca(morzecie nie zrozumieć o co mi chodzi więc podam przykładowy kod ,który na szybko napisałem.

Wynik otrzymamy w systemie binarnym jednak zamiast dla liczby 8 otrzymać 1010 , otrzymamy 0101.

Co zrobić by odczytało mi to od końca.Myślałem by władować to do tablicy tylko jak to potem odczytac od konca :v

 

 
#include <iostream>
using namespace std;
void binary(int liczba,int wynik)
{
for(liczba;liczba>0;liczba/=2)
{
    wynik = liczba%2; 
    cout <<wynik<<endl; 
}
}
 
int main()
{
int liczba,wynik;
cout <<"podaj liczbe w systemie dziesietnym"<<endl;
cin >>liczba;
binary(liczba,wynik);
system("pause");
}

-Jestem habilitowanym profesorem,magistrem, który nie umie zawiązać sobie butów.

-A ja jestem technikiem który daje ci prace.

Opublikowano

dla liczby 8 powinieneś otrzymać 1000 od tego zacznijmy ;d

rozumiem, że chciałbyś otrzymać (z nieznanych mi powodów) 0001, tak?

Przyjmuję, że w funkcji binary() chcesz tą liczbę od razu wyświetlić. W takim razie wyglądało by to tak

#include <iostream>
using namespace std;
void binary(int liczba)
{
    for(int i = 1; liczba >= i; i *= 2)
    {
        int wynik = (liczba & i) != 0;
        cout << wynik << endl;
    }
}

int main()
{
    binary(8);
    return 0;
}

napisałem też wersję, która jest, jak myślę, bardziej zbliżona to oczekiwanego efektu końcowego

 

#include <iostream>
#include <string>
using namespace std;
string binary(const int liczba)
{
    string wynik;
    for(int i = 1; liczba >= i; i *= 2)
        wynik += static_cast<char>(((liczba & i) != 0) + '0');
    return wynik;
}

int main()
{
    string liczbaWBinarnym = binary(8);
    cout << liczbaWBinarnym;
    return 0;
}

w razie czego pytaj

Opublikowano

źle sie zrozumieliśmy , ja właśnie otrzymuje dla liczby (chciałem napisać 10 sorry :P)10, 0101 w programie ,a chcaiłby otrzymać 1010 :D.

a , i nie rozumiem tego zapisu

 

int wynik = (liczba & i) != 0;

czyli , że co int wynik jest równy coś tam różny od zera :P

-Jestem habilitowanym profesorem,magistrem, który nie umie zawiązać sobie butów.

-A ja jestem technikiem który daje ci prace.

Opublikowano

zmienna i za każdą iteracją ma 'zaświecony' kolejny bit
czyli kolejno końcówka zmiennej i powiedzmy dla liczba=10
0001
0010
0100
1000

za każdą iteracją wykonywany jest bitand z liczba, czyli z (ważna jedynie końcówka w tym wypadku) 1010
czyli jakby iterujemy po kolejnych bitach zmiennej liczba i w zależności od tego, czy jest zapalony czy nie wypisujemy 1 lub 0


nie zrozumieliśmy się trochę, w takim wypadku najlepszym rozwiązaniem jest zwrócenie odwróconego stringa.
poniżej poprawiony kod

 


#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string binary(const int liczba)
{
string wynik;
for(int i = 1; liczba >= i; i *= 2)
wynik += static_cast<char>(((liczba & i) != 0) + '0');
std::reverse(wynik.begin(), wynik.end());
return wynik;
}

int main()
{
string liczbaWBinarnym = binary(10);
cout << liczbaWBinarnym;
return 0;
}

 

sorry za posypane formatowanie, ale jestem na lapku i cos sie dzieje z firefoxem, a IE ssie pałe

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...