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

[C++] Dynamiczna tablica zbudowana z pliku + podstawowe operacje

Ostatnio zmodyfikowano 2014-03-30 12:32
Autor Wiadomość
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?

C/C++
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

C/C++
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 ;<)
P-107465
SeaMonster131
» 2014-03-30 12:03:45
Po otwarciu pliku:
C/C++
file >> size;
int * tab = new int[ size ];
P-107466
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)

C/C++
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
C/C++
for( int i = 1; i < size + 1; i++ )
{
    tabnew[ i ] = tab[ i - 1 ];
}

i dziala.... nie rozumiem tylko czym to sie rozni ;O
P-107467
« 1 »
  Strona 1 z 1