Skocz do zawartości

Wczytanie Pliku Do Tablicy Ansi C


elorap

Rekomendowane odpowiedzi

Dzień dobry. Szukałem na necie jak to zrobić, ale z nie najlepszym rezultatem. Programista ze mnie żaden, potrzebuję po prostu napisać jeden program dla własnych potrzeb. Problem jest natury technicznej nie algorytmicznej, czyli każdy średnio doświadczony programista zrobiłby to w 5 min, a dla mnie to męka.

 

plik wejściowy

 

1324, 1234, 12354, 1234, 1234

1324, 1234, 12354, 1234, 1234

1324, 1234, 12354, 1234, 1234

1324, 1234, 12354, 1234, 1234

1324, 1234, 12354, 1234, 1234

.

.

.

 

 

kilka tysięcy linii z pięcioma czy też sześcioma intami (0-10000). Chcę je wczytać do tablicy dwuwymiarowej, tablica będzie powiększona o dodatkowe kilka kolumn, gdzie będę chciał pisać jakieś wyniki późniejszych operacji.

 

Proszę o pomoc

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli potrzebujesz napisać coś dla własnych potrzeb to zmień język, szybciej się nauczysz pythona niż to skończysz w C.

 

#!/usr/bin/env python
#-*- coding:utf-8 -*-

with open('/home/lucas/dane.txt') as txt:
dane = [ line.rstrip('\n').split(', ') for line in txt]

# wypisz
for row in dane: print row

# dodaj kolumnę
for i, row in enumerate(dane):
dane[i] += ['cos']

# wypisz
for row in dane: print row

# pobierz 2 wiersz, 3 kolumnę
print
print dane[2][3]

Odnośnik do komentarza
Udostępnij na innych stronach

Witam, napisalem tutaj, bo w wynikach google dla mojego zapytania wyrzucilo mi kilka for, miedzy innymi to, a na Waszym forum byla najswiezsza odpowiedz na podobny problem.

 

Co do jezyka, to C troche pamietam z LO, poza tym, zdazylem juz przeczytac tutorial C z wikibooks, a pythonaa na oczy nie widzialem. Jestem juz po wstepnych ogledzinach tutoriala z wikibooks i wydaje sie byc calkiem ok, ale mimo wszystko jest dla mnie totalna nowoscia, a C az tak totalna nie.

 

 

Ogólnie chce napisac mniej wiecej taki programik

 

wczytac te dane do tablicy

 

for i=1 to 10
   for j=1 to 10
       for k=1 to 50
           for kazdy wiersz z tablicy (+- 2000)
               i tutaj kilka funkcji dzialajacych na kilku wierszach (maksymalnie i+j ilosci)
               plus wypisanie do pliku wyników dla kazdej trójki i, j, k

 

To bedzie jakies 10 mln wykonan najglebszej petli, a funkcji bedzie kilka i beda braly za argumenty po kilka wartosci z wierszy. Bede na pewno potrzebowal double float, nie wiem czy python ma cos takiego

 

Patrzac mniej wiecej na to co chce zrobic, latwiej mi bedzie w pythonie, czy jednak w C?

 

 

aaaa... i dzieki borzole za kod

Odnośnik do komentarza
Udostępnij na innych stronach

Patrząc mniej więcej na to co chcę zrobić, łatwiej mi będzie w pythonie, czy jednak w C?

Zawsze będzie łatwiej w pythonie, ale program będzie wykonywał się wolniej niż napisany w C. Tych operacji nie będzie aż tak strasznie dużo to może być nawet w pythonie, chociaż jeśli bardzo zależy Ci na wydajności to lepiej C.
Odnośnik do komentarza
Udostępnij na innych stronach

Zawsze będzie łatwiej w pythonie, ale program będzie wykonywał się wolniej niż napisany w C. Tych operacji nie będzie aż tak strasznie dużo to może być nawet w pythonie, chociaż jeśli bardzo zależy Ci na wydajności to lepiej C.

Na wydajności zupełnie mi nie zależy. Ma się robić, a jak się będzie robić jest zupełnie nieważne.

No to ok, uczymy się pythona :D

 

Dzięki za pomoc, pozdro

Odnośnik do komentarza
Udostępnij na innych stronach

a jeszcze takie coś...

bo pierwotnie to miało być po dwa i, j, k, czyli i, i1, j, j1= {1..10} k, k1={1..50} i to wszystko zapętlone w forach. czyli 5000 do kwadratu razy jeszcze 2000, bo ilośc wierszy tablicy. Czyli w sumie 5*10^10 wykonań najgłębszej pętli, czy mogę tak zrobić, czy za dużo tego?

Odnośnik do komentarza
Udostępnij na innych stronach

Czyli w sumie 5*10^10 wykonan najglebszej petli, czy moge tak zrobic, czy za duzo tego?

To zalezy na czym zamierzasz to odpalac i przede wszystkim od tego jakie operacje bedziesz wykonywal wewnatrz petli. Samo przejscie po takiej pustej petli to nie jest nic nadzwyczajnego, ale jak skomplikujesz przetwarzanie wczytanych liczb to mozesz nie doczekac konca :) Stwórz sobie taki plik i spróbuj przejechac go petla (nie drukuj nic na wyjscie, bo w ten sposób zabijesz wydajnosc). Python dosyc slabo radzi sobie z wielkimi zbiorami danych (widzialem kiedys przyklad, ze na drzewach nie dawal rady, kiedy java dopiero sie rozgrzewala), ale napisanie takiego programiku zajmie Ci chwile i bedziesz wiedzial wszystko.
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...