C# Tablice dynamiczne

0

Mam plik txt, w którym przechowuje zarówno tekst jak i liczby. Potrzebuje pobrać z tego dokumentu liczby, jednakże ich liczba może być zupełnie przypadkowa. Mam wyrażenie regularne, które rozpoznaje liczby i potrafię dodać dana liczbę do następnej kolumny.
DataTable dt = new DataTable();
DataColumn dc;
dt.Columns.Add(word); <--to wszytsko wykonuje się w pętli,
Jak teraz w danym momencie utrzyć wiersz, przypisać kolumnie połozenie 0 i zapisywać kolejne liczby w tym wierszu?

Z góry dzięki za pomoc bo w ogóle nie mogę sobie poradzić z tym problemem:(

0

Ale po co w ogóle to DataTable? Nie wystarczy List<double> czy tam List<int>?

0

Daje przykład dokument tekstowego:

Marka Audi BMW Mercedes
A1 23 32 43
A2 123 4324 34
A3 4 3 34

Potrzbuje odczytac te dane w formie macierzy, List jest wektorem, a nie chce szukac na której pozycji co stoi tylko zsumowac np. wszytskie parametry dla audi petla for, dlatego potrzbuje zapisac te dane w formie tabeli, chyba, ze macie jakis inny pomysł?

0

Chyba wielkość liczb może być różna, a nie ich ilość w danym wierszu (tak wnioskuję po powyższym przykładzie)? Chyba najwygodniej z czytać całą linię, podzielić stringa i tak podzielonego wrzucić do tablicy dwuwymiarowej. Głowy nie dam, że coś takiego przejdzie, ale warto spróbować.

0

Własnie, chodzi o to, ze prowadzący może dać mi plik z którego będe zczytywał dane z bardzo rózna ilosc wierszy i kolumn...dlatego nie moge twardo zadeklarować, że moja tablica to np.4x3, moze to być równie dobrze 10x10. Dlatego wydaje mi się rozsądne zastosować tablic dynamicznych, ale o tym pisałem juz w pierwszym poście:)

1

To sobie zrób

List<List<int>>
0

Liczba kolumn w pliku chyba jest stała, więc można równie dobrze List<int[]> zrobić.
Albo klasę opisującą jeden taki wiersz, obstawiam, że na przyszłość się przyda i tak.

0

W tym pliku jest stała, ale może byc rozszerzeona...może byc 100 kolumn i 250 wierszy...czyli rozumiem, ze mam zrezygnowac z tablicy dynamicznej, tak?

A zwykła tablica zawsze musi mieć kryteria 'dlugosci' i 'wysokosci'?

0

w C# każda tablica jest w tym sensie dynamiczna. jako rozmiar przy tworzeniu tablicy można podać zmienną.

0
cl3hna napisał(a)

W tym pliku jest stała, ale może byc rozszerzeona...może byc 100 kolumn i 250 wierszy...czyli rozumiem, ze mam zrezygnowac z tablicy dynamicznej, tak?

Przy otwieraniu tego dowolnego pliku możesz stwierdzić ile masz kolumn, prawda? No i niech będzie, że jest ich np. 20.
Wtedy deklarujesz sobie listę tablic o 20 kolumnach, czyli:

List<int[]> daneZPliku = new List<int[20]>();

A teraz już możesz przetwarzać wiersze z pliku i dodawać do listy:

// to oczywiście musi być w jakiejś pętli:
int[] daneZWiersza = new int[20];
// konwersja danych z pliku w liczby 
daneZWiersza[0] = ...
daneZWiersza[1] = ...
...
daneZWiersza[19] = // cośtam

// i dodanie do listy
daneZPliku.Add(daneZWiersza);
 

I to wszystko, masz chyba wszystko to, co chciałeś.

0

Dzięki bardzo za to co napisałeś, ale... co jeśli kolumn będzie 240?
chodzi o uniwesalność, zeby moja tablica miała tyle mijesc ile liczb będe wczytywał...bo tak mija sie to wszytsko z celem...i tyle wierszy ile wierszy będę miał w swoim dokumencie:)

0

Tak jak napisałem - liczbę kolumn sprawdzasz przy odczytywaniu pliku, np. parsując pierwszy wiersz i tworzysz tablicę o takiej właśnie liczbie kolumn. Zamiast na stałe 20 używasz jakiejś zmiennej. Podobnie odczyt i parsowanie kolejnych kolumn w wierszu musisz zrobić w pętli.

0

Zrobiłem to właśnie w taki sposób. A przy okazji tematu tablic zapytam tutaj o macierz. Mam np. tablice 4x5, mozemy ją wyświetlić w formie macierzowej np. za pomocą messegebox'a? badz zapisać pod jakas zmienną i potem wyeksportować do pliku txt?

1 użytkowników online, w tym zalogowanych: 0, gości: 1