Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

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

MARK18

c++ klasy

Rekomendowane odpowiedzi

Witam

 

Mam problem bo nie wiem jak zastoswac petle for w moim programie zeby nie wpisywac 5 razy podaj imie, nazwisko w programie (kodzie) tylko w petli to zawrzec, moze ktos pomoze zamieszczam kod programu ktory dziala:

 

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

class DaneKlasy

{

private:

string imie;

string nazwisko;

int numer;

 

public:

void dane();

void przedstaw();

};

 

void DaneKlasy::dane()

{

static int licznik = 0;

 

cout << endl << "Podaj imie: ";

cin >> imie;

getchar();

 

cout << endl << "Podaj nazwisko: ";

cin >> nazwisko;

getchar();

 

licznik++;

numer = licznik;

cout << endl << "numer ID = " << numer;

cout << endl;

};

 

void DaneKlasy::przedstaw()

{

cout << endl;

cout << "Witaj" << endl;

cout << "Nazywam sie " << imie << " " << nazwisko << endl;

cout << "Moj numer ID to " << numer << endl;

 

};

int main()

{

DaneKlasy osoba1;

DaneKlasy osoba2;

DaneKlasy osoba3;

 

cout << "Klasa osoba1" << endl;

osoba1.dane();

cout << "Klasa osoba2" << endl;

osoba2.dane();

cout << "Klasa osoba3" << endl;

osoba3.dane();

 

 

osoba1.przedstaw();

osoba2.przedstaw();

osoba3.przedstaw();

 

getchar();

return 0;

};

 

 

 

 

Prosze o pomoc

 

 

pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Szanowny pan/pani nauczy sie podstaw jezyka, czyli typy, petle, instrukcje warunkowe, funkcje a potem sie dopiero bierze za klasy

 

Bo to co tu widze to czarna rozpacz.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No to Ci pomoglem i pokazelem Co musisz wiedziec wczesniej zanim zaczniesz zabawe z klasami.

 

W innym wypadku jest to strata czasu.

 

Bo pewnie nawet slowo konstruktor jest Ci obce.

 

A sposob obslugi petli znajdziesz w kazdym kursie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Bo to co tu widze to czarna rozpacz.

 

Nie wiem za bardzo co ty wymyślasz, bo ten kod jest w miare ok i na pewno nie jest "czarną rozpaczą" - ja raczej wyczuwam tutaj próbe akcji typu "skrytykuje go to wyjdzie że ja jestem pr0". W przypadku tak prostego programu sam bym pobierał dane bezpośrednio w funkcji, zamiast przyjmować je przez parametry. A po co tu konstruktor to chyba tylko ty wiesz :D

 

A co do autora - o to ci chodzi?

 

DaneKlasy osoby[5];
 for (int i = 0; i < 5; i++)
 {
 cout << "osoba " << i << endl;
 osoby[i].dane();
 }

itd.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Nie wiem za bardzo co ty wymyślasz, bo ten kod jest w miare ok i na pewno nie jest "czarną rozpaczą" - ja raczej wyczuwam tutaj próbe akcji typu "skrytykuje go to wyjdzie że ja jestem pr0".

 

Ja zas wyczuwam probe akcji typu "pokaze jaka jestem matka teresa z kalkuty" bez dania zaplecza teoretycznego. Skad ma teraz wiedziec kiedy jest sprawdzany warunek, jakie sa inne petle w C++. Ale niech sie ucza na "poczatkujacego PHP-owca" majac w dupie wszelkie normy :thumbup:

(Ta twoja zlota mysl tez swietnie pasuje do twojego postu :thumbup:)

 

 

Krytykuje branie sie za rzeczy kiedy sie nie zna podstaw zeby je stosowac.

Wybacz, ale jesli uwazasz ze mu pomogles teraz podajac gotowca a w nastepnym programie zobaczy warunek, lub innego rodzaju petle, to krzyzyk na droge.

 

Poza tym czeste otwieranie wejscia czyszczenia buforu w kazdym miejscu, tudziez rodzynek

 

getchar();

cout << endl << "Podaj nazwisko: ";

 

A konstruktor mial sluzyc wlasnie wykonaniu instrukcji zawartych w funkcji dane, poniewaz konstruktory istnieja zawsze i sa po to zeby dobrze zainicjowac obiekt. Nic by nie trzeba bylo przekazywac przez parametr.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Skad ma teraz wiedziec kiedy jest sprawdzany warunek, jakie sa inne petle w C++.

Pętle musi umieć, ja uznałem że po prostu nie wie jak zrobić kolekcje klas i po nich iterować - a jeśli nie zna podstawowych pętli to i tak się bedzie musiał ich nauczyć. Poza tym wiadomo że musi umieć takie rzeczy, ja pisałem o twojej krytyce jego kodu - ten jest w miare ok, a ty piszesz że tragedia - tylko o to mi chodziło.

 

Poza tym czeste otwieranie wejscia czyszczenia buforu w kazdym miejscu

och well, bo to jest najważniejsza rzecz jaką powinień wiedzieć początkujący, i jak tego nie zauważa to jest "czarna rozpacz" z kodu =]

 

A konstruktor mial sluzyc wlasnie wykonaniu instrukcji zawartych w funkcji dane, poniewaz konstruktory istnieja po to zeby dobrze zainicjowac obiekt. Nic by nie trzeba bylo przekazywac przez parametr.

No, i jak będzie chciał później wpisać inne dane do tego obiektu, to wywoła drugi raz konstruktor? :D Ja tu widze jakiś antywzorzec który mu polecasz. Konstruktor domyślny powinien inicjować obiekt tak, żeby później w dowolnym miejscu można było wpisać do niego dane. Jeśli chcesz dać pobieranie danych z konsoli w konstruktorze, to idź się wstydzić...(wyobraż sobie że z takim konstruktorem chcesz utworzyć 100 obiektów i wpisać do nich dane z pliku... a i tak program odczytywałby te dane z konsoli).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po pierwsze to prosty program.

Po drugie to juz w rozleglych projektach w cialach zdarzen dodaje sie wywolanie funkcji/metody ktora obsluzy to zdarzenie. Tutaj nadal wystarczy konstruktor.

Po trzecie zauwaz ze pola klasy sa prywatne i innego sposobu autor nie zagwarantowal, wiec nie wiem jakbys chcial je pozniej inaczej wypelnic.

 

wiec wyobraż

sobie że z takim konstruktorem chcesz utworzyć 100 obiektów i wpisać do nich dane z pliku... a i tak program odczytywałby te dane z konsoli).

Inaczej tego przy tym interfejsie nie zrobisz wiec idz sie wstydzic ze nie widzisz modyfikatorow dostepu Oo

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Po pierwsze to prosty program.

właśnie dlatego nazywanie tego czarną rozpaczą jest dla mnie niezrozumiałe =]

Tutaj nadal wystarczy konstruktor.

Zastąpienie funkcji która pobiera dane konstruktorem domyślnym który pobiera te dane z konsoli uniemożliwiłby zmodyfikowanie wartości pól po utworzeniu obiektu, oraz uniemożliwiłby dodanie metod, które pobierają dane z innego źródła (bez uprzedniego odczytania tych danych z konsoli), no i w ogóle to coś po prostu śmiesznego =]

Po trzecie zauwaz ze pola klasy sa prywatne i innego sposobu autor nie zagwarantowal, wiec nie wiem jakbys chcial je pozniej inaczej wypelnic.

No tak, bo dopisanie do klasy metody dodającej jakąs funkcjonalność to problem, prawda? Bo klasy to mechanizm który ma ułatwiać, czy uniemożliwiać rozbudowanie programu? A bez dodawania dodatkowych metod to ty chcesz uniemożliwić używanie obiektu, zamykając jego funkcjonalność w konstruktorze xD

 

Poza tym zmieniasz temat, ja nie zamierzam uczyć przedszkolaków jak się powinno programować obiektowo, tylko stwierdzam że ten program jest ok jak na początkującego, a twoja krytyka była nieuzasadniona.

Radze ci skończ temat i przestań się pogrążać.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tylko nie zdaz sie rozcieszyc za mocno/

 

Zauwaz w moim poscie "przy obecnym interfejsie". Czytanie ze zrozumieniem to potega!

 

No tak, bo dopisanie do klasy metody dodającej jakąs funkcjonalność to problem, prawda?

Nie

Bo klasy to mechanizm który ma ułatwiać, czy uniemożliwiać rozbudowanie programu?

 

 

Konstruktor który pobiera dane z konsoli uniemożliwiłby zmodyfikowanie wartości pól po utworzeniu obiektu, oraz uniemożliwiłby dodanie metod, które pobierają dane z innego źródła, no i w ogóle to coś po prostu śmiesznego =]

Hahaha boki zrywac normalnie szampanska zabawa!

Czy mowilem o dodawaniu, lub odejmowaniu metod?

 
DaneKlasy::DaneKlasy()
{
dane();
}

 

I juz twoj zyciowy problem utrudniajacy rozbudowe klasy znika :<

Przy okazji ponownie wykorzystujemy kod, metoda o dziwo nie zniknela. Nie musi metody jawnie wywolywac na poczatku. I zawsze szybko mozemy zmienic cialo konstruktora, nie zmieniajac interfejsu.

 

Oczywiscie wyzej wymieniony sposob podalem tylko przykladowo. Tutaj smialo mozemy cialo metody wkleic do konstruktora. Ta ostatnia uwage pisze, bo znając zycie zaraz temat przeniesie sie na bezpieczenstwo watkowe.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...