Problem z deklaracja
Ostatnio zmodyfikowano 2011-01-23 14:23
Tymek Temat założony przez niniejszego użytkownika |
Problem z deklaracja » 2011-01-22 23:00:19 #include <iostream.h> #include <fstream.h> using namespace std;
struct firmy { char nazwa[ 20 ]; float przychod; void wprowadz_dane(); void zapis_danych(); void odczyt_danych(); void koniec(); };
void wprowadz_dane() { cout << "Wprowadz nazwe firmy: "; cin >> firma.nazwa; cout << "Wprowadz przychod: "; cin >> firma.przychod; }
void zapis_danych() { ofstream plik1( "dane_firmy.dat", ios::binary | ios::app | ios::out ); plik1.write( reinterpret_cast < char *>( & firma ), sizeof( firma ) ); plik1.close(); }
void odczyt_danych() { int i = 1; ifstream plik( "dane_firmy.dat", ios::binary | ios::in ); while( 1 ) { plik.read( reinterpret_cast < char *>( & firma ), sizeof( firma ) ); if( plik.eof() ) break; cout << i << " " << firma.nazwa << " " << firma.przychod << endl; i++; } plik.close(); }
void koniec() { cout << "koniec programu" << endl; system( "pause" ); } int main() { firmy firma; int wybor; int opcja; cout << "wprowadz opcje" << endl; switch( opcja ) { case 1: wprowadz_dane(); break; case 2: zapis_danych(); break; case 3: odczyt_danych(); break; case 4: koniec(); break; default: cout << "Wybrano niewlasciwa opcje (nacisnij dowolny klawisz aby kontynuowac)"; system( "pause" ); break; } }
Mam błąd taki że nie widzi że (firmy firma) jak powinienem to zdefiniować żeby funkcje to widziały?? |
|
jsc |
» 2011-01-23 00:47:24 Jesteś pewny, że struktura to dobre miejsce na deklaracje funkcji? |
|
BlackDante |
» 2011-01-23 01:12:50 1. Jeżeli chcesz deklarować funkcje w strukturze i potem pisać ich definicję to musisz pamiętać że to idzie tak: struct foo { int x; void set_x( int x ); }; void foo::set_x( int x ) { this->x = x; }
2. Zapominasz o pobraniu zmiennej opcja 3. Chyba jednak lepiej zastosować tutaj klase a nie strukture :) |
|
Tymek Temat założony przez niniejszego użytkownika |
» 2011-01-23 01:29:37 #include <iostream.h> #include <fstream.h> using namespace std;
struct firmy { char nazwa[ 20 ]; float przychod; void wprowadz_dane(); void zapis_danych(); void odczyt_danych(); void koniec(); };
void firmy::wprowadz_dane() { cout << "Wprowadz nazwe firmy: "; cin >> firma.nazwa; cout << "Wprowadz przychod: "; cin >> firma.przychod; }
void firmy::zapis_danych() { ofstream plik1( "dane_firmy.dat", ios::binary | ios::app | ios::out ); plik1.write( reinterpret_cast < char *>( & firma ), sizeof( firma ) ); plik1.close(); }
void firmy::odczyt_danych() { int i = 1; ifstream plik( "dane_firmy.dat", ios::binary | ios::in ); while( 1 ) { plik.read( reinterpret_cast < char *>( & firma ), sizeof( firma ) ); if( plik.eof() ) break; cout << i << " " << firma.nazwa << " " << firma.przychod << endl; i++; } plik.close(); }
void firmy::koniec() { cout << "koniec programu" << endl; system( "pause" ); } int main() { firmy firma; int wybor; int opcja; cout << "wprowadz opcje" << endl; switch( opcja ) { case 1: wprowadz_dane(); break; case 2: zapis_danych(); break; case 3: odczyt_danych(); break; case 4: koniec(); break; default: cout << "Wybrano niewlasciwa opcje (nacisnij dowolny klawisz aby kontynuowac)"; system( "pause" ); break; } }
pobrać tak? zapis_danych(firmy firma) ? mam właśnie problem ze wskaźnikami ze strukturą i funkcją . w int main chce napisać firmy firma; żeby szło dla każdej funkcji i nie musieć wszędzie tego pisać odzienie....... da się? |
|
dmx81 |
» 2011-01-23 02:55:27 wprowadz_dane( firmy & firma )
w definicjach funkcji mozesz tam uzywac tylko: zmiennych przekazanych jako argumenty zmiennych lokalnych, ktore tworzysz wewnatrz funkcji zmiennych globalnych ( u ciebie beda to te w strukturze - nie masz tam zmiennej firma, pojawia sie dopiero w funcji main, wiec musisz ja tam przekazac jako argument - wpisz deklaracje jak ja tu wyzej, no i pozniej w definicji bedzie ok (tylko dopisz do listy arg.) jesli cos pominalem, niech mnie ktos poprawi :) |
|
Tymek Temat założony przez niniejszego użytkownika |
» 2011-01-23 12:25:00 #include <iostream.h> #include <fstream.h> using namespace std;
struct firmy { char nazwa[ 20 ]; float przychod; void wprowadz_dane( firmy & firma ); void zapis_danych( firmy & firma ); void odczyt_danych( firmy & firma ); void koniec( firmy & firma ); };
void firmy::wprowadz_dane( firmy & firma ) { cout << "Wprowadz nazwe firmy: "; cin >> firma.nazwa; cout << "Wprowadz przychod: "; cin >> firma.przychod; }
void firmy::zapis_danych( firmy & firma ) { ofstream plik1( "dane_firmy.dat", ios::binary | ios::app | ios::out ); plik1.write( reinterpret_cast < char *>( & firma ), sizeof( firma ) ); plik1.close(); }
void firmy::odczyt_danych( firmy & firma ) { int i = 1; ifstream plik( "dane_firmy.dat", ios::binary | ios::in ); while( 1 ) { plik.read( reinterpret_cast < char *>( & firma ), sizeof( firma ) ); if( plik.eof() ) break; cout << i << " " << firma.nazwa << " " << firma.przychod << endl; i++; } plik.close(); }
void firmy::koniec( firmy & firma ) { cout << "koniec programu" << endl; system( "pause" ); }
int main() { firmy firma; int wybor; int opcja; cout << "wprowadz opcje" << endl; switch( opcja ) { case 1: wprowadz_dane( firmy & firma ); break; case 2: zapis_danych( firmy & firma ); break; case 3: odczyt_danych( firmy & firma ); break; case 4: koniec( firmy & firma ); break; default: cout << "Wybrano niewlasciwa opcje (nacisnij dowolny klawisz aby kontynuowac)"; system( "pause" ); break; } }
Fakt , łapie tylko mam jeszcze 2 błędy w case expected primary-expression before '&' token `zapis_danych' undeclared (first use this function) Wyskakuje że nie zdeklarowałem funkcji ale zdeklarowałem xd |
|
malan |
» 2011-01-23 12:29:47 No, chyba jednak nie łapiesz ;) struct wtf { int WTF; void setWtf( int newWtf ); int getWtf() const; };
wtf wtfObject;
wtfObject.setWtf( 69 ); std::cout << wtfObject.getWtf();
|
|
Drraven |
» 2011-01-23 12:31:01 a czy my jesteśmy debugerami ? Masz problem kompilator wypluł błąd - próbujesz naprawić. Nie wiesz jak analizujesz Sam kod i wyciągasz wnioski. |
|
« 1 » 2 |