Skocz do zawartości
grzybis

Z Pliku Do Tablicy [bcb,c++]

Rekomendowane odpowiedzi

Witam,

jestem raczej zielony ale musze wykonac w C++ (konkretnie w Borlandzie) pewna czynnosc. Otoz z pliku tekstowego musze pobrac dane i wpisac do tablicy. Plik sklada sie z kolejnych numerkow i oddzelonych TAB'em podporzadkowanym im roznym wartosciom (od 1 do 255). Tak jakby kolejne argumenty i wartosci funkcji. Wygladac to moze tak:

 

1 12

2 121

3 24

...

128 75

 

Pomijajac numery porzadkowe musze te wartosci wpisac do tablicy int[128]. Czyli bedzie sie ona skladala z kolejnych wartosci np. [12,121,24,...,75]

 

Bardzo bym prosil o pomoc bo problem mnie przerasta

Mesayah

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeżeli chodzi tobie o to ,że liczby porządkowe są ustawione kolejno i trzeba po prostu je zignorować to można to zrobić np.tak:

int tab[128];

int n;

for(int i=0;i<128;i++)

{cin>>n;

cin>>tab;}

a jeżeli liczby porządkowe są w przypadkowej kolejności chyba coś takiego:

int tab[128];

int n;

for(int i=0;i<128;i++)

{cin>>n

cin>>tab[n-1];}

Z tym że ten sposób zadziała jeżeli ilośc dannych w pliku będzie taka sama jak wielkośc tablicy.

No i oczywiście jeżeli pierwsza liczba w porządku będzie miała liczbę porządkową1, wtedy odpowiadająca jej wartość zostanie zzapisana do pierwszej komórki tablicy czyli o indeksie 0 :D

Edytowane przez zgredźmin

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ja bym to zrobil tak (ale napisze Ci tylko algorytm, skodowac sprobuj sam).

 

Z tego co widze chodzi Ci o to, aby z pliku wpisac liczby do tablicy. Zakladamy wiec, ze nie wiemy jakiej wielkosci ma byc tablica. Najpierw przelec caly plik i w petli while pobieraj liczby, po kazdym pobraniu inkrementuj licznik, bedziesz wiec wiedzial ile jest tych liczb. Potem zamknij plik, otworz go ponownie, abys byl na poczatku, zamallocuj czy np w C++ przy uzyciu new walnij dynamiczna tablice z wielkoscia inkrementowana, i spokojnie dodawaj w petli while liczby do tablicy.

 

powinno dzialac

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dziekuje za wszystkie rady. Problem rozwiazany:

 

if(OpenDialog1->Execute())

{

in=fopen(OpenDialog1->FileName.c_str(), "r");

a=new double*[128];

for(i=0;i<128;i++)

a=new double[128];

for(i=0;i<128;i++)

{

for(j=0;j<2;j++)

fscanf(in,"%lf",&a[j]);

}

fclose(in);

 

for(i=0;i<128;i++)

{

punkty3=a[1];

}

 

}

 

Moge isc na piwo :)

Pozdrawiam

Mesayah

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...