matematykaszkolna.pl
Dzaidek Gauss: Dziadek Mróz jesteś na forum ?
15 kwi 11:37
15 kwi 11:40
Gauss: Polecenie −http://wklej.to/KpSdz
15 kwi 11:47
Gauss: :(
15 kwi 12:15
Draghan: Nie smutaj. emotka Czy pierwszy link to ów "poprzedni program" z polecenia?
15 kwi 13:21
Gauss: Draghan ogarniasz to może ? pierwszy link to kod który trzeba przerobić, w drugim linku jest polecenie
15 kwi 13:23
Draghan: Pierwszy program jest na pewno dobry? Bo nie chce mi się sprawdzać. Jeśli tak, to mało masz do zrobienia. emotka
15 kwi 13:27
Draghan: Masz teraz strukturę + funkcje. Musisz zrobić klasę. Klasa to struktura, rozszerzona o funkcje... emotka Łapiesz powoli...? emotka
15 kwi 13:29
Gauss: Nie bardzo, pomógłbyś napisać kod, to bym przenalizował ? HELP
15 kwi 13:33
Draghan: Tak wygląda Twoja obecna sytuacja w uproszczeniu: struct przyklad { int a, b, c; } abc; void AddAB() { abc.c = abc.a + abc.b; } A po wprowadzeniu klasy, masz tak: class przyklad { int a, b, c; public: // musi być, jeśli chcesz żeby Twoja funkcja mogła być wywołana "na zewnątrz" klasy void AddAB() { c = a + b; /* już nie podajesz abc.a, czy przyklad.a, bo jesteś w środku klasy, masz w domyśle to, że wywołasz coś na rzecz tej właśnie klasy */ } };
15 kwi 13:35
Draghan: Czy to, co napisałem wyżej, jest zrozumiałe? emotka Jeśli chociaż jakiegoś fragmentu nie rozumiesz − pytaj. Nie ma głupich pytań. emotka
15 kwi 13:36
Gauss: i to jest całe rozwiązanie do tego zadania ? bo już lekki nieogar
15 kwi 13:37
Draghan: To jest na razie przykład. Do Twojego zadania dojdziemy za chwilę. Chciałbym, żebyś to zrozumiał.
15 kwi 13:38
Gauss: Ok, ja potrzebuje mięc rozwiązanie tego konkretnego zadania emotka Dasz radę pomóc ?
15 kwi 13:42
Draghan: Szkoda.emotka Jak dla mnie, to nie jest pomoc. Ale proszę, Twój kod. Wyciągnij wnioski. emotka http://pastebin.com/TqqMx3a5
15 kwi 13:46
Dziadek Mróz: Draghan, struktury też mają funkcje.
15 kwi 13:49
Gauss: A mogę Cię jeszcze o coś prosić ?
15 kwi 13:51
Draghan: W C nie mają. Ale nie dlatego tak napisałem − po prostu nie chciałem mieszać koledze.
15 kwi 13:51
Gauss: Ale możesz to tak zrobić żeby dane były prywatne, a funkcje publiczne. ?
15 kwi 13:53
Draghan: Mnie możesz prosić, jasne. emotka Ale masz już obecnego swojego Dziadka, więc chyba nie jestem potrzebny. emotka
15 kwi 13:53
Draghan: Można tak zrobić, jasne. Tylko że dalej w oryginalnym programie odnosisz się bezpośrednio do tych danych − musiałbyś zrobić gettery i settery do tego.
15 kwi 13:55
Dziadek Mróz: struct nazwa_struktury { char pole1; int pole2; ... void funkcja1(); int funkcja2(char); int funkcja3(int); ... nazwa_struktury(); nazwa_struktury(char, int); ... ~nazwa_struktury(); }; void nazwa_struktury :: funkcja1() { cout << pole1 << " " << pole2 << endl; } int nazwa_struktury :: funkcja2(char ch) { return (int)ch; } int nazwa_struktury :: funkcja3(int val) { return val; } nazwa_struktury :: nazwa_struktury() { cout << "Konstruktor domyślny struktury" << endl; pole1 = '0'; pole2 = 0; } nazwa_struktury :: nazwa_struktury(char p1, int p2) { cout << "Konstruktor struktury" << endl; pole1 = p1; pole2 = p2; } ~nazwa_struktury :: nazwa_struktury() { cout << "Destruktor struktury" << endl; cout << "Usuwam strukturę" << endl; }
15 kwi 13:56
Gauss: Ale musi być tak zrobione właśnie, że dane prywatne, a funkcję publiczne
15 kwi 13:56
Dziadek Mróz: Ale on w C++ pisze to może
15 kwi 13:56
Dziadek Mróz: to co za problem w strukturze dajesz private i po problemie
15 kwi 13:57
Gauss: chodzi o ten program który podesłał Draghan
15 kwi 13:57
Dziadek Mróz: struct nazwa_struktury { private: char pole1; int pole2; ... public: void funkcja1(); int funkcja2(char); int funkcja3(int); ... nazwa_struktury(); nazwa_struktury(char, int); ... ~nazwa_struktury(); }; void nazwa_struktury :: funkcja1() { cout << pole1 << " " << pole2 << endl; } int nazwa_struktury :: funkcja2(char ch) { return (int)ch; } int nazwa_struktury :: funkcja3(int val) { return val; } nazwa_struktury :: nazwa_struktury() { cout << "Konstruktor domyślny struktury" << endl; pole1 = '0'; pole2 = 0; } nazwa_struktury :: nazwa_struktury(char p1, int p2) { cout << "Konstruktor struktury" << endl; pole1 = p1; pole2 = p2; } ~nazwa_struktury :: nazwa_struktury() { cout << "Destruktor struktury" << endl; cout << "Usuwam strukturę" << endl; }
15 kwi 13:57
15 kwi 13:57
Draghan: Gauss, w C++ struktury i klasy mają zatarte granice − można powiedzieć, że struktura to jest klasa z domyślnym dostępem publicznym, niczym więcej się nie różnią. W poleceniu było napisane, żeby zrobić klasę − tak też uczyniłem. Nic nie stoi na przeszkodzie, żeby dać tam strukturę, jak pisze Dziadek.
15 kwi 14:01
Gauss: Draghan zobacz to nie wiem co jest źle ? http://wklej.to/VR5Rj
15 kwi 14:06
Dziadek Mróz: public samochod() { } public samochod(String imie, String nazwisko) { this.Marka = marka; this.Model = model; } imię i nazwisko dla auta?
15 kwi 14:12
Gauss: Dziadek a wiesz jak zrobić to zadania już nie patrząc na mój kod ? Jakiś inny do drugiego zadania
15 kwi 14:13
Dziadek Mróz: Jeżeli w klasie zwracasz pola lub funkcje to nie trzeba używać this public samochod() { } public samochod(String imie, String nazwisko) { Marka = marka; Model = model; }
15 kwi 14:13
Draghan: A co ma być źle...? Pewnie nie możesz stworzyć obiektu, hmmm? Masz prywatny konstruktor. No i akcesory wraz z mutatorami też powinny być raczej publiczne. Poza tym: 1) nie tworzysz obiektu tej klasy, jak jest w poleceniu, 2) niepotrzebnie piszesz "this" wszędzie − jeśli go nie napiszesz, i tak będzie domyślnie wywołany, więc niepotrzebnie męczysz klawiaturę. 3) zgubiłeś średnik na końcu...?
15 kwi 14:14
Draghan: Okej, ja się stąd zmywam, bo się tylko z Dziadkiem duplikujemy. Miłego dnia. emotka
15 kwi 14:15
Dziadek Mróz: class ... { ... }; int main() { ... }
15 kwi 14:15
Draghan: ...jeszcze tylko pytanie na szybko: czy typ String Ci działa...?
15 kwi 14:16
Dziadek Mróz: int main() { moja_klasa obiekt1_klasy(); // obiekt1_klasy.pole1, itd moja_klasa *obiekt2_klasy = new moja_klasa(); // i tu wtedy obiekt2_klasy−>pole1, itd }
15 kwi 14:17
Gauss: właśnie string nie działa i chciałem to jakoś przerobić ale nie wiem co dać zamist stringa ?
15 kwi 14:18
Draghan: Nie "String", tylko "std::string". I będzie trybić. emotka
15 kwi 14:19
Dziadek Mróz: Lub dać za bibliotekami: using namespace std; Proste programy można tak obchodzić.
15 kwi 14:22
Gauss: nadal wywala błąd w 15 linijce
15 kwi 14:30
Dziadek Mróz: Nic tam nie ma, pusta jest. Podaj kod błędu i jego treść
15 kwi 14:31
Gauss: kod jest tutaj http://wklej.to/HoWbt
15 kwi 14:33
Dziadek Mróz: ALE JAKI BŁĄD?
15 kwi 14:34
Gauss: error expected ':' before 'void'
15 kwi 14:36
Dziadek Mróz: Jaka jest różnica między: public: samochod i public void setMarka
15 kwi 14:37
Dziadek Mróz: to tak jakbyś w wypracowaniu napisał żubr i rzubr w jednym zdaniu
15 kwi 14:38
Gauss: czyli void samochod ?
15 kwi 14:39
Dziadek Mróz: samochod() jest konstruktorem nie potrzebuje typu public samochod() a Ty masz public: samochod()
15 kwi 14:40
Dziadek Mróz: poczekaj bo mi się C# z C++ miesza
15 kwi 14:42
Dziadek Mróz: najlepiej nie mieszaj w kodzie i wszystko co ma być private pisz w bloku: private: ... i co public w bloku: public: ...
15 kwi 14:43
Gauss: dzieki
15 kwi 14:43
Dziadek Mróz: nie jakieś: private int Rok; private char Marka[20]; public Samochod() {} public Samochod(int rok, char *marka) {} tylko: private: int Rok; char Marka[20]; public: Samochod() Samochod(int rok, char *marka) {}
15 kwi 14:45
Dziadek Mróz: Działa?
15 kwi 14:55
Gauss: tak, jest ok teraz
15 kwi 15:37
Dziadek Mróz: W C++ nie ma czegoś jak: public void funkcja(); tylko blok dostępu: public: void funkcja(); ...
15 kwi 15:44