Gość sasa121 Napisano 29 Grudzień 2005 Napisano 29 Grudzień 2005 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
lechoo Napisano 29 Grudzień 2005 Napisano 29 Grudzień 2005 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.
El Wieczor Napisano 25 Styczeń 2006 Napisano 25 Styczeń 2006 W ANSI C to fseek i ftell się robiło, jeśli dobrze skumałem problem.
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się