[C++] Dynamiczna tablica zbudowana z pliku + podstawowe operacje
Ostatnio zmodyfikowano 2014-03-30 12:32
daryll Temat założony przez niniejszego użytkownika |
[C++] Dynamiczna tablica zbudowana z pliku + podstawowe operacje » 2014-03-30 11:58:51 Witam, potrzebuje napisać program który wczyta zawartość pliku tekstowego do tablicy dynamicznej. Pierwsza liczba w tym pliku ma określać ile liczb znajduje się w nim (przykładowo, plik 100 liczb, pierwsza liczba 100). Nie bardzo wiem z której strony to ugryźć ponieważ zanim utworzę tablicę muszę przeczytać 1wsza linię pliku... poki co rozwiazalem to tak, gdyz nie mam zielonego pojecia co musze uzyc by odczytac 1wsza linie pliku i wstawic ja do size? funkcja getline? ale jak tego uzyc? int main() { int size = 0; ifstream plik; plik.open( "liczby.txt" ); cout << "podaj rozmiar tablicy"; cin >> size; int tmp = 0; int * tab = new int[ size ]; while( !plik.eof() ) plik >> tab[ tmp++ ]; plik.close();
w kazdym razie, na zbudowanej tablicy mam wykonywac operacje jak dodawanie, usuwanie czy wyszukiwanie. Poki co probowalem dodawanie na poczatek tablicy w taki sposob cout << "Podaj wartosc jaka chcesz dodac na poczatek tabeli" << endl; int war; cin >> war; cout << endl;
for( int i = 1; i <= size; i++ ) { tab[ i++ ] = tab[ i ]; } tab[ 1 ] = tab[ 0 ]; tab[ 0 ] = war;
niestety wynik jest inny niz zamierzony, na 1wszym miejscu tablicy rzeczywiscie jest inna wartosc, ale pozniej wszystko sie sypie... aha, dodam iż elementy tablicy maja byc 4bajtowymi liczbami calkowitymi ze znakiem(int?) oraz nie wolno mi uzyc bibliotek STL (o czym przeczytalem gdy zrobilem caly program z uzyciem vector'a ;<) |
|
SeaMonster131 |
» 2014-03-30 12:03:45 Po otwarciu pliku: file >> size; int * tab = new int[ size ];
|
|
daryll Temat założony przez niniejszego użytkownika |
» 2014-03-30 12:32:15 to takie proste... dziękuje ;) edit# co do dodawania... napisalem cos takiego (dodawanie elementu na poczatek tablicy) cout << "Jaka wartosc chcesz dodac na poczatek tablicy?" << endl; int war_pocz; cin >> war_pocz;
int size = 0; ifstream plik; plik.open( "liczby.txt" ); plik >> size;
int tmp = 0; int * tab = new int[ size ];
while( !plik.eof() ) plik >> tab[ tmp++ ];
plik.close();
int * tabnew = new int[ size + 1 ]; tabnew[ 0 ] = war_pocz; for( int i = 0; i < size + 1; i++ ) { tab[ i ] = tabnew[ i++ ]; }
for( int i = 0; i < size + 1; i++ ) cout << tabnew[ i ] << endl;
tworzy druga tablice, o 1 element wieksza niz poprzednia, nastepnie do tabnew[0] wpisuje zadana wartosc i dalej zaczynajac od tabnew[1] przypisuje wartosc tab[0], itd. Niestety jak puszcze program to faktycznie 1wsza linijka jest taka jak dodalem, ale reszta wystwietla sie jako adresy(?) np. dodam wartosc 10 na poczatek to wynik jest mniej wiecej taki 10 -84215... -84215... -84215... -84215... -84215... -84215... -84215... -84215... edit2# zmienilem fora na for( int i = 1; i < size + 1; i++ ) { tabnew[ i ] = tab[ i - 1 ]; }
i dziala.... nie rozumiem tylko czym to sie rozni ;O |
|
« 1 » |