dybek Temat założony przez niniejszego użytkownika |
Klasy - inicjowanie pamieci » 2013-11-19 22:09:04 Witam, zdefiniowalem sobie klase i utowrzylem funkcje w niej. Funkcja wypisz(wypisuje dane) oraz funkcja wpisz(wpisuje dane). Chce wykorzystac pare razy funkcje wpisz ( gdzie wpisuje np imie i nazwisko) i po wywolaniu funkcji wypisz aby wypisalo mi wszystkie dane a nie tylko ta ostatnia wpisana. Nie wiem jak zarezerwowac pamiec dla nowo utworzonych danych tak aby byly pamietane. |
|
pekfos |
» 2013-11-19 22:18:26 std::vector<>? |
|
dybek Temat założony przez niniejszego użytkownika |
» 2013-11-19 22:36:42 Nie rozumiem, moglbys troche rozwinac ? |
|
dybek Temat założony przez niniejszego użytkownika |
» 2013-11-20 12:07:48 Zastosowalem sie do tego co powiedziales, ale teraz wypisuje mi ostatnia pozycje tyle razy ile razy wpisywalem dane. Nie wiem gdzie robie blad #include "student.h" #include <iostream> #include <vector> #include < string > #include <vector> using namespace std;
vector < student > tablica;
student::student( void ) : oceny( new int ) , imie( new char ) , nazwisko( new char ) { }
student::student( int * xoceny, char * ximie, char * xnazwisko ) : oceny( xoceny ) , imie( ximie ) , nazwisko( xnazwisko ) , counter( 0 ) { } student::~student( void ) { } void student::wypisz( void ) { for( int i = 0; i < tablica.size(); i++ ) { cout << tablica[ i ].imie << " " << tablica[ i ].nazwisko << " " << endl; for( int j = 0; j < 3; j++ ) cout << " " << "ocena - " << tablica[ i ].oceny[ j ] << endl; } } void student::wpisz( void ) { cout << "podaj imie\t"; cin >> imie; cout << endl; cout << "podaj nazwisko\t"; cin >> nazwisko; cout << endl; for( int i = 0; i < 3; i++ ) { cout << "ocena" << i + 1 << " - "; cin >> oceny[ i ]; } tablica.push_back( student( oceny, imie, nazwisko ) ); }
double student::srednia( void ) { double suma = 0; for( int i = 0; i < 3; i++ ) { suma = suma + oceny[ i ]; } double srednia = suma / 3; return srednia; }
#pragma once #include <string> #include <vector> class student { public: student( void ); student( int * xoceny, char * ximie, char * xnazwisko ); ~student( void ); int * oceny; char * imie; char * nazwisko; void wypisz( void ); void wpisz( void ); double srednia( void ); int counter; };
#include "student.h" #include <iostream> #include <string> #include <vector> using namespace std;
int main() { student nowy; int i; int znak = 0; while( znak != 9 ) { system( "cls" ); cout << "masz wybor !" << endl; cout << "wpisz - 1\n"; cout << "wypisz - 2\n"; cout << "srednia - 3\n"; cin >> znak; cout << endl; switch( znak ) { case 1: nowy.wpisz(); break; case 2: nowy.wypisz(); system( "pause" ); break; case 3: double sr; sr = nowy.srednia(); cout << "srednia = \t " << sr << endl; system( "pause" ); break; default: cout << "zle"; break; } } return 0; }
|
|
pekfos |
» 2013-11-20 13:37:02 Nie masz odpowiedniego konstruktora kopiującego i wychodzisz poza obszar tablicy. |
|
dybek Temat założony przez niniejszego użytkownika |
» 2013-11-20 19:40:57 Mam utworzyc nastepnego konstruktora ktory bedzie kopiowal ? jak mam kopiowac z jednego konstruktora do drugiego ? |
|
pekfos |
» 2013-11-20 19:45:50 Skoro nie masz i jest to błędem, to musisz go utworzyć. To chyba logiczne.. |
|
dybek Temat założony przez niniejszego użytkownika |
» 2013-11-27 17:41:55 Dalej mam problem z konstruktorem kopiujacym. To jest podobny program co jest umieszczony na stronce tylko tyly zamiast string sa odpowiednio char i int. Nie wiem jak uzyc go aby wypisywalo wszystkie dane a nie tylko ta ostatnia wiele razy. #include <iostream> #include <string> #include <vector>
using namespace std;
class student { public: char * imie; char * nazwisko; int * numer; public: static int ilosc_studentow; student() { ilosc_studentow++; } student( student & k ) { imie = k.imie; nazwisko = k.nazwisko; numer = k.numer; } student( char * name, char * surname, int * number ); void wypisz( void ) { cout << imie << " " << nazwisko << endl; for( int i = 0; i < 3; i++ ) { cout << numer[ i ] << endl; } } }; student::student( char * name, char * surname, int * number ) : imie( name ) , nazwisko( surname ) , numer( number ) { }
int student::ilosc_studentow;
int main() { char imie[ 50 ], nazwisko[ 50 ]; int numer[ 3 ]; vector < student > nowy; int znak = 0; while( znak != 3 ) { system( "cls" ); cout << "dopisz 1 \nwypisz 2 \n"; cin >> znak; switch( znak ) { case 1: cout << "imie "; cin >> imie; cout << "nazwisko "; cin >> nazwisko; for( int i = 0; i < 3; i++ ) { cout << "numer "; cin >> numer[ i ]; } nowy.push_back( student( imie, nazwisko, numer ) ); break; case 2: cout << " ilosc studentow : " << student::ilosc_studentow << endl; for( int i = 0; i < nowy.size(); i++ ) { cout << nowy[ i ].imie << " "; cout << nowy[ i ].nazwisko << "\n"; for( int j = 0; j < 3; j++ ) { cout << nowy[ i ].numer[ j ] << endl; } cout << "\n"; } system( "pause" ); break; default: cout << "koniec"; break; } } return 0; } |
|
« 1 » |