C++ odczytywanie z pliku
Ostatnio zmodyfikowano 2016-11-30 07:25
TaRaNTuLaH Temat założony przez niniejszego użytkownika |
C++ odczytywanie z pliku » 2016-11-29 22:21:16 Cześć ! Jutro w szkole mamy drobną loterię fantów (zbiórka na cele charytatywne). Pogrzebałem więc na stronce pomodyfikowałem troszkę kody, które tu znalazłem ale mam problem z odczytywaniem pliku (na wypadek gdyby ktoś przez przypadek zamknął plik, zapis jest już zrobiony !!!) #include <iostream> #include <cstdlib> #include <ctime> #include <fstream> using namespace std;
bool czyBylaWylosowana( int iLiczba, int tab[], int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( tab[ i ] == iLiczba ) return true; i++; } while( i < ile ); return false; }
int wylosuj() { return( rand() % 58 ) + 1; }
int main() { int liczba; srand( time( NULL ) ); int wylosowane[ 58 ]; int wylosowanych = 0; int max = 58; fstream plik; do { liczba = wylosuj(); if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false ) { wylosowane[ wylosowanych ] = liczba; wylosowanych++; } } while( wylosowanych < 58 ); wylosowanych = 0; cin.get(); do { TUTAJ CHC Ę ODCZYTYWANIE ZROBI Ć ! cout << "Pozostala ilosc losow:" << max - wylosowanych - 1 << "/" << max << endl; cout << "Twoj numer to: "; cout << wylosowane[ wylosowanych ] << endl; wylosowanych++; cout << "Twoja nagroda to: "; if( wylosowane[ wylosowanych - 1 ] >= 1 && wylosowane[ wylosowanych - 1 ] <= 1 ) cout << "Dlugopis\n"; if( wylosowane[ wylosowanych - 1 ] >= 2 && wylosowane[ wylosowanych - 1 ] <= 7 ) cout << "Ksiazka\n"; if( wylosowane[ wylosowanych - 1 ] >= 8 && wylosowane[ wylosowanych - 1 ] <= 8 ) cout << "Torba\n"; if( wylosowane[ wylosowanych - 1 ] >= 9 && wylosowane[ wylosowanych - 1 ] <= 16 ) cout << "Pluszak\n"; if( wylosowane[ wylosowanych - 1 ] >= 17 && wylosowane[ wylosowanych - 1 ] <= 21 ) cout << "Sluchawki\n"; if( wylosowane[ wylosowanych - 1 ] >= 22 && wylosowane[ wylosowanych - 1 ] <= 23 ) cout << "Komplet Dlugopisow\n"; if( wylosowane[ wylosowanych - 1 ] >= 24 && wylosowane[ wylosowanych - 1 ] <= 37 ) cout << "Bryloczek\n"; if( wylosowane[ wylosowanych - 1 ] >= 38 && wylosowane[ wylosowanych - 1 ] <= 42 ) cout << "Notes\n"; if( wylosowane[ wylosowanych - 1 ] >= 43 && wylosowane[ wylosowanych - 1 ] <= 45 ) cout << "Czerwony Notes\n"; if( wylosowane[ wylosowanych - 1 ] >= 46 && wylosowane[ wylosowanych - 1 ] <= 48 ) cout << "Frisbee\n"; if( wylosowane[ wylosowanych - 1 ] >= 49 && wylosowane[ wylosowanych - 1 ] <= 49 ) cout << "Ksiazka\n"; if( wylosowane[ wylosowanych - 1 ] >= 50 && wylosowane[ wylosowanych - 1 ] <= 51 ) cout << "Kubek\n"; if( wylosowane[ wylosowanych - 1 ] >= 52 && wylosowane[ wylosowanych - 1 ] <= 54 ) cout << "Zawieszka\n"; if( wylosowane[ wylosowanych - 1 ] >= 55 && wylosowane[ wylosowanych - 1 ] <= 56 ) cout << "Mydelko\n"; if( wylosowane[ wylosowanych - 1 ] >= 57 && wylosowane[ wylosowanych - 1 ] <= 57 ) cout << "Plyn z Sephory\n"; if( wylosowane[ wylosowanych - 1 ] >= 58 && wylosowane[ wylosowanych - 1 ] <= 58 ) cout << "Krem pod prysznic H&M \n"; plik.open( "plik.txt", ios::out | ios::app ); if( plik.good() == true ) plik << wylosowane[ wylosowanych - 1 ] << endl; plik.close(); cin.get(); } while( wylosowanych < 58 ); return 0; }
|
|
karambaHZP |
» 2016-11-30 05:54:04 |
|
karambaHZP |
» 2016-11-30 05:54:17 |
|
TaRaNTuLaH Temat założony przez niniejszego użytkownika |
» 2016-11-30 06:38:30 Przeczytałem.. Zastosowałem się do tego co jest tam napisane ale program nadal nie działa tak jak należy..
Po obiegu pętli do program wypisuje liczby, są one spisywane w plik.txt. Jeżeli przypadkowo zamknę program, przy następnym uruchamianiu programu, program najpierw sczyta co jest w pliku "plik.txt" i gdzieś to będzie przechowywał, żeby dwa razy te same liczby nie padły :/
Jak to zrobić? Na końcu jest zapisywanie do pętli, zrobiłem odczytywanie przed pętla i nie działa jak należy.. :( |
|
TaRaNTuLaH Temat założony przez niniejszego użytkownika |
» 2016-11-30 06:43:45 Jeszcze prościej mówiąc..
Plik ma sczytać dane z SAMEGO SIEBIE, i je wstawić do tych które już padły |
|
karambaHZP |
» 2016-11-30 07:25:08 Ciężko zrozumieć ten opis.
Proponuję takie rozwiązanie. Na początku program wczytuje dane z pliku z listą fantów i zapisuje w jakiejś tablicy (string, ew. struct). Z drugiego pliku wczytujesz (plik otwarty w trybie odczyt/zapis i dodawaniem do pliku) do drugiej tablicy (indeksów int). Losujesz indeks. Sprawdzasz, czy był już taki. Jeśli nie dopisz indeks do pliku.
Ja zrobiłbym vector fantów i vector indeksów. Losował element vectora i po wyświetlaniu fanta, usunął element z vectora i nadpisal plik indeksów pozostałymi w vectorze. Chyba, że fanty są inne za każdym razem, więc wystarczy usuwać z vectora fantów i nadpisywać plik fantów po każdym losowaniu. |
|
« 1 » |