Napisano 29 Grudzień 200519 l MAM taki program(a wlasiwie dopiero jego poczatek :/) #include #include using namespace std; struct GOSC { char nazwisko[20]; char imie[10]; // tutaj nie wiem czy imie i nazwisko ma byc w jednej tablicy int ile_dni; // chyba tak ma byc ale nie wiem czy nie bedzie problemu pozniej w tej aktualizacji float cena_za_dobe; float rozmowy_tele; float konsumpcja; float koszt; bool obcokrajowiec; }; int main() { fstream plik; // koniecznie ma byc plik binarny GOSC gosc; int wybor; cout cout cout cout cout cout cout do { cout>wybor; switch(wybor) { case 1: plik.open("hotel.dta", ios::out | ios::binary); // tutaj trzeba zastosowac raczej tryb app czyli dopisywania ale mi nie wychodzi if(!plik) cout else { cout cout // nie mam pojecia dlaczego mi nie chce zapisac imienia cout cout>gosc.ile_dni; cout>gosc.cena_za_dobe; cout>gosc.rozmowy_tele; cout>gosc.konsumpcja; cout>gosc.obcokrajowiec; plik.write((char*)&gosc, sizeof(GOSC)); plik.close(); } break; case 2: plik.open("hotel.dta", ios::in | ios::binary); plik.read((char*)&gosc, sizeof(GOSC)); cout plik.close(); break; case 3: cout case 4: cout case 5: cout case 6: cout default: cout }; } while(wybor!=6); system("PAUSE"); return 0; } /* skonstruowac baze danych opisywaną przez strukture GOSC zlozona z nastepujacych pol: * Nazwisko i imie goscia * Nr pokoju * ile dni pobytu * cena za dobe * rozmowy telefoniczne * konsumpcja * koszt=cenazadobe*ilednipobytu+rozmowytelef+konsumpcja W programie uwzglednic nastepujace opcje: 1. Nowy element (dopisanie na koniec pliku HOTEL) 2. Wyswietlenie wszystkich elementow 3. Wyswietlenie gosci zagranicznych 4. Wyszukanie goscia, ktory sednio zaplacil najwiecej za jeden dzien pobytu 5. KONIEC PROGRAMU */ mianowicie nie mam pojecia co zrobic aby dane byly dopisywane do konca pliku a nie ciagle od poczatku (case1). probowalem zmienic tryb otwarcia na app(ale wtedy mam blad otwarcia pliku) probowalem tez cos takiego seekg(0, ios::end) ale to wpisalem albo nie w tym miejscu albo nie wiem czemu nie dziala;; Bardzo prosilbym tez o rade jesli chodzi o case2 gdzie trzeba wypisac caly plik. Narazie tyle pytan bo za aktualizacje i tam dalej sie jeszcze nie biore jak nie bede mial tego bardzo prosze o szybka odpowiedz
Napisano 29 Grudzień 200519 l Dodanie flagi ios::app powinno wystarczyc. Po otwarciu w ten sposob: plik.open("hotel.dta", ios::out | ios::binary | ios::app); moglem bez problemu dopisywac. No chyba ze wpisywales samo ios::app, wtedy wiadomo ze bedzie blad. Co do case2 to musisz czytac i wypisywac kolejnych gosci do momentu napotkania znaku konca pliku.
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto