cyklopek11 |
» 2012-09-18 20:50:59 Tablica alokowana statycznie: ilosc - musi być zmienną typu całkowitego ZNANĄ W CHWILI KOMPILACJI.Więc masz trzech uczniów nagle zachce ci się 10, 100, 100000 ...Za każdym razem musisz zmieniać to w kodzie i ponownie kompilować. Nie lepiej by było żeby określać rozmiar tablicy w chwili gdy z tej tablicy masz skorzystać? (albo niech program sam to określa) Do tego służy dynamiczna alokacja tablicy: Typ * wskaznik = new Typ[ ilosc ];
ilosc - zmienna typu calkowitego ktora bedzie znana dopiero w momencie skorzystania z tablicy. Program raz skompilowany a może mieć elementów ile ci się w danym momencie zachce. |
|
Sk_uter Temat założony przez niniejszego użytkownika |
» 2012-09-18 22:55:30 ok dopiero wrocilem i tylko jedno pytanie, bo kodowac jutro bede Typ * wskaznik = new Typ[ ilosc ]; wskaznik, co tutaj dac? ja myslalem, ze wskaznik to wlasnie to ta gwiazdka po typie. PS a w ilosci dac tablice, czy dac cos poczatkowego? PS masz moze gadu, bo widze, ze fajnie tlumaczysz, a potrzebowalbym kogos takiego jak ty :) |
|
cyklopek11 |
» 2012-09-19 01:06:58 Ty potrzebujesz wiedzy i tego forum (tu też jest ogrom wiedzy). A teraz przyznaj się tak szczerze: 1.) Na której części naszego kursu c++ jesteś ??? 2.) Czytasz chociaż jedną z zalecanych do nauki c++ książek ??? Jak chcesz się bawić obiektowo to wskaźniki musisz mieć opanowane do perfekcji !!! Wiem że są trudne bo ja z nimi też walczyłem kilka miesięcy :) Poza tym musisz dużo kodować, popełniać błędy i znajdywać to gdzie zrobiłeś błąd. Ja myślę, że tu na forum jest mnóstwo rzetelnych osób których można nazwać GURU więc korzystaj z tego portalu - i zadawaj pytania - po to on jest. Jednak przed zadaniem pytania warto sprawdzić czy już przypadkiem ktoś na to pytanie 100 razy nie odpowiadał. Poprawiłem Twój pierwotny kod (programowo i estetycznie). Przeanalizuj go i jako zadanie domowe masz dopisać: metodę klasy Uczniowie która będzie: A. (łatwiejsze) usuwać ucznia z końca tablicy (dla największego indeksu) B. (trudniejsze) usuwać ucznia spod dowolnego indeksu tablicy #include <iostream> #include <string> using namespace std;
class Uczen { public: Uczen(); virtual ~Uczen(); Uczen( string i, string n, int p, int m, int a, int pr ); void wypisz(); private: string imie, nazwisko; int polski, matematyka, angielski, programowanie; };
Uczen::Uczen() : imie( string( "bezimienny" ) ) , nazwisko( string( "bez nazwiska" ) ) , polski( 0 ) , matematyka( 0 ) , angielski( 0 ) , programowanie( 0 ) { }
Uczen::Uczen( string i, string n, int p, int m, int a, int pr ) : imie( i ) , nazwisko( n ) , polski( p ) , matematyka( m ) , angielski( a ) , programowanie( p ) { }
Uczen::~Uczen() { }
void Uczen::wypisz() { cout << "Imie: " << imie << endl << "Nazwisko: " << nazwisko << endl << "Ocena z j. polskiego: " << polski << endl << "Ocena z matematyki: " << matematyka << endl << "Ocena z j. angielskiego: " << angielski << endl << "Ocena z programowania: " << programowanie << endl; }
class Uczniowie { public: Uczniowie(); ~Uczniowie(); void dodajUcznia( const Uczen & var ); int ileUczniow(); void wypiszDaneUcznia( int numer ); private: Uczen * uczniowie_tab; int liczbaUczniow; };
Uczniowie::Uczniowie() : uczniowie_tab( NULL ) , liczbaUczniow( 0 ) { }
Uczniowie::~Uczniowie() { delete[] uczniowie_tab; uczniowie_tab = NULL; }
void Uczniowie::dodajUcznia( const Uczen & var ) { Uczen * tempWsk_tab = new Uczen[ liczbaUczniow + 1 ]; if( liczbaUczniow == 0 ) { * tempWsk_tab = var; uczniowie_tab = tempWsk_tab; liczbaUczniow++; } else { int i = 0; for(; i < liczbaUczniow; i++ ) { tempWsk_tab[ i ] = uczniowie_tab[ i ]; } tempWsk_tab[ i ] = var; delete[] uczniowie_tab; uczniowie_tab = tempWsk_tab; liczbaUczniow++; } }
int Uczniowie::ileUczniow() { return liczbaUczniow; }
void Uczniowie::wypiszDaneUcznia( int numer ) { if( numer > liczbaUczniow ) { cout << "Nie ma tylu uczniow" << endl; return; } else { uczniowie_tab[ numer - 1 ].wypisz(); } }
int main() { Uczen jakis1; Uczen tomek( "Tomek", "Kowalski", 5, 5, 4, 2 ); Uczniowie listaUczniow; cout << listaUczniow.ileUczniow() << endl; listaUczniow.dodajUcznia( jakis1 ); listaUczniow.dodajUcznia( tomek ); listaUczniow.dodajUcznia( jakis1 ); cout << listaUczniow.ileUczniow() << endl; listaUczniow.wypiszDaneUcznia( 1 ); listaUczniow.wypiszDaneUcznia( 2 ); listaUczniow.wypiszDaneUcznia( 3 ); return 0; }
|
|
Sk_uter Temat założony przez niniejszego użytkownika |
» 2012-09-19 14:08:26 oo widze, ze konkretnie moj program podrasowales, dzisiaj mi cos wyskoczylo i nie bede mogl programowac, odpalilem program i chodzi tak jak chcialem, bede musial go dokladnie przeanalizowac :)
Co do szczerosci to z waszego kursu nie korzystalem, jestem w technikum informatycznym i mam przedmiot programowanie i tam mnie podstaw nauczono, teraz przechodzimy do obiektowki i podobno w C najlepiej mozna zrozumiec to obiektowe pisanie a potem mamy przejsc na jave, aby pisac konkretne aplikacje, a pozniej nawet cos na telefon.
Widze, ze tutaj c++ mozna sie spokojnie z wami nauczyc, szkoda, ze nie macie jeszcze PHP-a, bo to ogolnie bardziej mnie interesuje, ale c++ na pewno sie przyda |
|
1 2 « 3 » |