Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z deklaracja

Ostatnio zmodyfikowano 2011-01-23 14:23
Autor Wiadomość
Tymek
Temat założony przez niniejszego użytkownika
Problem z deklaracja
» 2011-01-22 23:00:19
C/C++
#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??
P-26877
jsc
» 2011-01-23 00:47:24
Jesteś pewny, że struktura to dobre miejsce na deklaracje funkcji?
P-26893
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:
C/C++
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 :)
P-26894
Tymek
Temat założony przez niniejszego użytkownika
» 2011-01-23 01:29:37
C/C++
#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ę?
P-26895
dmx81
» 2011-01-23 02:55:27
C/C++
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 :)
P-26897
Tymek
Temat założony przez niniejszego użytkownika
» 2011-01-23 12:25:00
C/C++
#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
P-26903
malan
» 2011-01-23 12:29:47
No, chyba jednak nie łapiesz ;)

C/C++
struct wtf
{
    int WTF;
    void setWtf( int newWtf );
    int getWtf() const;
};

//...

wtf wtfObject;

wtfObject.setWtf( 69 );
std::cout << wtfObject.getWtf();
P-26904
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.
P-26905
« 1 » 2
  Strona 1 z 2 Następna strona