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
» 2011-01-23 12:54:33
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()
{
    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();
        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;
    }
}
Jeżeli cię uraziłem to przepraszam .
Mój błąd jest taki że jak mam Zdeklarowane funkcje w Struct to case tego nie widzi , a jak pod struckt to nie widza tego Struct::funkcje ......
P-26907
malan
» 2011-01-23 12:57:22
Czytałeś, co Ci napisałem? :)

1.
C/C++
void firmy::wprowadz_dane()
{
    cout << "Wprowadz nazwe firmy: ";
    cin >> nazwa;
    cout << "Wprowadz przychod: ";
    cin >> przychod;
}
Analogicznie musisz poprawić resztę metod.

2.
C/C++
firmy firma;
//...
switch( opcja ) {
case 1:
    firma.wprowadz_dane();
    break;
case 2:
    firma.zapis_danych();
    break;
case 3:
    firma.odczyt_danych();
    break;
case 4:
    koniec();
    break;
    default:
   
    cout << "Wybrano niewlasciwa opcje (nacisnij dowolny klawisz aby kontynuowac)";
    system( "pause" );
    break;
}

3. Po co Ci metoda
koniec
?
P-26909
Tymek
Temat założony przez niniejszego użytkownika
» 2011-01-23 13:18:40
C/C++
#include <iostream.h>
#include <fstream.h>
using namespace std;

struct firmy
{
    char nazwa[ 20 ];
    float przychod;
   
    void wprowadz_dane();
    void pokaz_dane();
    void odczyt_danych();
};

//**********************************************
void firmy::wprowadz_dane()
{
    firmy firma;
    ofstream plik1( "dane1.dat", ios::binary | ios::app | ios::out );
    cout << "Ile firm chcesz wprowadzic?" << endl;
    int n;
    cin >> n;
    cout << endl;
    for( int i = 0; i < n; i++ )
    {
        cout << "Podaj nazwe firmy: ";
        cin >> firma.nazwa;
        cout << "Podaj przychod firmy: ";
        cin >> firma.przychod;
        plik1.write( reinterpret_cast < char *>( & firma ), sizeof( firma ) );
    }
    plik1.close();
}
//**********************************************
void firmy::pokaz_dane()
{
    firmy firma;
    cout << "Dane z pliku: " << endl << endl;
   
    ifstream plik1( "dane1.dat", ios::binary | ios::in );
   
    while( 1 )
    {
        plik1.read( reinterpret_cast < char *>( & firma ), sizeof( firma ) );
        if( plik1.eof() ) break;
       
        cout << firma.nazwa << " " << firma.przychod << endl;
    }
    plik1.close();
    system( "pause" );
}
//**********************************************
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();
   
}
//****************************************************

//***********************************************
int main()
{
    firmy firma;
    int wybor;
    int opcja;
    cout << "wprowadz opcje" << endl;
    cin >> opcja;
    switch( opcja ) {
    case 1:
        firma.wprowadz_dane();
        break;
    case 2:
        firma.pokaz_dane();
        break;
    case 3:
        firma.odczyt_danych();
        break;
        default:
       
        cout << "Wybrano niewlasciwa opcje (nacisnij dowolny klawisz aby kontynuowac)";
        system( "pause" );
        break;
    }
}

Działa poprawnie , dziękuje za pomoc
P-26910
malan
» 2011-01-23 14:23:31
Tak, działa, ale tylko w Twoim przypadku. Szkoda, że nie jest poprawnie zrobione :). Nie tak się posługuje strukturami :).

Skompiluje sobie ten program i zobacz output. Ty masz błąd tego samego typu.
C/C++
#include <string>
#include <iostream>

struct Company
{
    std::string name;
    int income;
   
    void read();
    void showData();
};

void Company::read()
{
    Company newCompany;
   
    std::cout << "Name: ";
    std::cin >> newCompany.name;
   
    std::cout << "Income: ";
    std::cin >> newCompany.income;
}

void Company::showData()
{
    Company newCompany;
    std::cout << "Company name: " << newCompany.name << ", income: " << newCompany.income << std::endl;
}

int main()
{
    Company * company = new Company[ 3 ];
   
    for( int i = 0; i < 3; i++ )
    {
        std::cout << "#" << i + 1 << std::endl;
        company[ i ].read();
    }
   
    for( int i = 0; i < 3; i++ )
    {
        std::cout << "#" << i + 1 << std::endl;
        company[ i ].showData();
    }
   
    delete[] company;
    return 0;
}

Poprawny kod:
C/C++
#include <string>
#include <iostream>

struct Company
{
    std::string name;
    int income;
   
    void read();
    void showData();
};

void Company::read()
{
    std::cout << "Name: ";
    std::cin >> name;
   
    std::cout << "Income: ";
    std::cin >> income;
}

void Company::showData()
{
    std::cout << "Company name: " << name << ", income: " << income << std::endl;
}

int main()
{
    Company * company = new Company[ 3 ];
   
    for( int i = 0; i < 3; i++ )
    {
        std::cout << "#" << i + 1 << std::endl;
        company[ i ].read();
    }
   
    for( int i = 0; i < 3; i++ )
    {
        std::cout << "#" << i + 1 << std::endl;
        company[ i ].showData();
    }
   
    delete[] company;
    return 0;
}
P-26913
1 « 2 »
Poprzednia strona Strona 2 z 2