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

Odczyt vektora struktur z pliku binarnego

Ostatnio zmodyfikowano 2013-12-16 00:58
Autor Wiadomość
Kefirek
Temat założony przez niniejszego użytkownika
» 2013-12-15 21:42:16
To jak tą część kodu poprawić?
P-99341
Monika90
» 2013-12-15 21:49:13
Zamiast wczytywać do vektor[j], to wczytuj do zmiennej typu klient, a nastepnie dodawaj ją na końcu wektora za pomocą push_back.
P-99343
pekfos
» 2013-12-15 21:55:57
Proszę wziąć przykład ze mnie - napisałem prosty program dla  potrzebujacego pomocy, poświęciłem swój czas i mam satysfakcję ze ktoś z tego skorzysta
Lepiej nie. Dawanie wskazówek, nawet lakonicznych, i wskazywanie problemu jest o wiele lepszą pomocą, niż podanie gotowego programu (którego pisanie najczęściej jest stratą czasu). Co z podania rozwiązania konkretnego przypadku, konkretnego problemu, gdy potrzebujący nie wyniesie z tego wiedzy, pozwalającej w przyszłości samodzielnie rozwiązać podobny problem? Chcesz pisać gotowce - pisz, ale miej na względzie, że możesz tym narobić więcej złego, niż dobrego.
P-99345
Kefirek
Temat założony przez niniejszego użytkownika
» 2013-12-15 21:59:41
Zrobiłem tak jak napisałaś:

C/C++
void Odczyt_do_ekranu() //wczytanie z pliku do pól struktury i odczyt na ekran
{
   
    ifstream do_ekranu( "C:\\Users\Dell\\Documents\\Visual Studio 2012\\Projects\\vektor\\vektor\\Kontrahenci.txt", ios::in | ios::beg | ifstream::binary );
    int j = 0;
    klient kup;
    while( do_ekranu.read(( char * ) & kup, sizeof( kup ) ) )
    {
        vektor.push_back( kup );
        cout << vektor[ j ].nazwa << endl;
        cout << vektor[ j ].kg << endl;
        cout << vektor[ j ].price << endl;
        j++;
    }
}


i na razie dalej bez zmian - "help" the Beatels
P-99346
Kefirek
Temat założony przez niniejszego użytkownika
» 2013-12-15 22:16:26
Odp do Pekfos
Może masz rację ale tylko połowicznie.
Na pewno pisanie gotowców nie jest do końca dobrym rozwiązaniem.
Dlaczego - jeżeli zainteresowany nie przeanalizuje kodu i czegoś się z tego nie nauczy to masz rację.
Ja załączyłem kod - czyli coś zrobiłem sam , ale znalazłem się w ślepym zaułku i jestem w nim 2 tyg.
Dlatego zapisałem się do tego forum i liczyłem na konstruktywną fachową pomoc - niestety trochę jestem rozczarowany.
Dlaczego - dlatego że niewielka cześć tego co napisałem wymaga modyfikacji aby program działał poprawnie.
Po takiej podpowiedzi mogę sam dojść co źle zrobiłem - i w ten sposób czegoś się nauczyć.
Potem tą wiedzę można dalej przekazać - no ale niestety bawimy się w podchody.
Pozdrawiam Kefirek
P-99348
Monika90
» 2013-12-15 22:43:20
Pokaż aktualny kod w całości, ale taki, który da się skompilować i uruchomić. Tzn:
- nie używaj niestandardowych nagłówków
- używaj nawiasów <> dla standardowych nagłówków
- użyj main, a nie jakiegoś _tmain
- usuń wszystkie wywołania system
- nie używaj absolutnych ścieżek przy otwieraniu plików
Inaczej nie będę mogła Ci pomóc.
P-99355
Kefirek
Temat założony przez niniejszego użytkownika
» 2013-12-15 23:15:37
Oto jest:
C/C++
#include <stdafx.h>
#include <iostream>
#include <fstream>
#include <vector>
#include <string>


using namespace std;
const int Size = 30;
struct klient
{
    char nazwa[ Size ];
    double kg;
    double price;
};

vector < klient > vektor;

int ilu_klientow;

void Dodaj_klienta();
void Show_wprow_dane();
void Zapis_plik();
void Odczyt_do_ekranu();

int main()
{
   
    //system("chcp 1250");
    //system("cls");
   
    Dodaj_klienta();
    Show_wprow_dane();
    Zapis_plik();
    Odczyt_do_ekranu();
    cout << endl;
    char koniec;
    cin >> koniec;
    //system("PAUSE");
    return 0;
}

void Dodaj_klienta()
{
    cout << "Ilu klientów chcesz wprowadzić: ";
   
    cin >> ilu_klientow;
    klient kupujacy;
    for( int i = 0; i < ilu_klientow; ++i )
    {
        cout << "Wprowadź nazwę klienta: ";
        cin.get();
        cin.getline( kupujacy.nazwa, 30 );
        cout << "Ile kg sprzedano: ";
        cin >> kupujacy.kg;
        cout << "Podaj cenę za kilogram: ";
        cin >> kupujacy.price;
        vektor.push_back( kupujacy );
    }
   
}


void Show_wprow_dane()
{
    cout << "Wprowadzono dane: " << endl;
    for( int i = 0; i < ilu_klientow; ++i )
    {
       
        cout << vektor[ i ].nazwa << endl;
        cout << vektor[ i ].kg << endl;
        cout << vektor[ i ].price << endl;
    }
   
    cout << endl;
}

void Zapis_plik()
{
   
   
    ofstream do_pliku( "C:\\Kontrahenci.txt", ios::out | ios::app | ifstream::binary ); // otwarcie pliku
   
    do_pliku.write(( char * ) & vektor.front(), vektor.size() * sizeof( klient ) ); //zapis binarny do pliku
   
    do_pliku.close();
}

void Odczyt_do_ekranu() //wczytanie z pliku do pól struktury i odczyt na ekran
{
   
    ifstream do_ekranu( "C:\\Kontrahenci.txt", ios::in | ios::beg | ifstream::binary );
    int j = 0;
    klient kup;
    cout << "Odczyt z pliku : " << endl;
    while( do_ekranu.read(( char * ) & kup, sizeof( kup ) ) )
    {
        vektor.push_back( kup );
        cout << vektor[ j ].nazwa << endl;
        cout << vektor[ j ].kg << endl;
        cout << vektor[ j ].price << endl;
        ++j;
    }
}
P-99357
Kefirek
Temat założony przez niniejszego użytkownika
» 2013-12-15 23:28:11
Program pisany na konsolę w Visual studio 2012
P-99358
1 2 « 3 » 4
Poprzednia strona Strona 3 z 4 Następna strona