|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
19.3.2012, 20:46 | #1 |
Novi član
Član od: 30.1.2008.
Lokacija: Novi Sad
Poruke: 14
Zahvalnice: 6
Zahvaljeno 2 puta na 2 poruka
|
Treba mi pomoć oko pisanja programa [C++]
Treba mi da napišem program [C++] koji će izvući određene podatke iz TXT fajlova i snimiti ih u fajl, tj u tabelu u određenom sheet-u u njemu. Razlog zašto to ne radim ručno je jer toga ima izuzetno mnogo(i fajlova i podataka u njima).
Idem prvo sa jednostavnijom varijantom: Fajl izgleda ovako: I iz njega bi mi trebale 3 ili 4 kolone sa podacima da se snime kao iste takve kolone u exel fajlu u određenom sheet-u. Recimo kolone ADAPS, MDAPS i HWAMS. Da kasnije ne bi bilo "što odmah nisi sve rekao" evo ostatka problema: U glavnom folderu imam dvadesetak podfoldera(podfolder1),a svaki od tih 20 podfoldera sadrži još 6-7 podfoldera(podfolder2) u kojima se nalaze fajlovi iz kojih treba izvući podatke. Fajlovi se uvek isto zovu (evaluate.out). Ideja mi je da napravim program (uz nadam se vašu veliku pomoć ) koji bi se pokrenuo iz glavnog foldera(nije potrebno da bude u prozoru mislio sam da se pokreće iz command line-a, pretpostavljam da je to i jednostavnije), pročešljao podfoldere i u svakom od podfoldera1 napravio excel fajl (sa recimo imenom <evaluate - ime podfoldera1.xls>) gde bi u sheet sa imenom podfoldera2 smestio podatke izvučene iz evaluate fajla, koji se nalazio u tom podfolderu 2. Znači taj jedan excel fajl bi imao 6-7 sheet-ova. Za početak me interesuje kako izvući te kolone sa podacima... PS: Nisam početnik u programiranju, ali bi možda bilo dobro da me tako tretirate jer sam dobrano zarđao... Ovaj problem bih taman iskoristio da (ponovo) naučim C++. Za početak me interesuje kako izvući te kolone sa podacima... PS: Nisam početnik u programiranju, ali bi možda bilo dobro da me tako tretirate jer sam dobrano zarđao... Ovaj problem bih taman iskoristio da (ponovo) naučim C++. |
19.3.2012, 21:23 | #2 | |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Evo nesto na brzinu, mozda moze i bolje:
Recimo evaluate.txt je ovaj: Kod:
1 97 1 1 MZ 84 -99 -99 -99 -99 162 ABC 1 31 1 1 MZ 84 -99 -99 -99 -99 107 ABC 1 42 1 1 MZ 84 -99 -99 -99 -99 184 ABC 1 56 1 1 MZ 84 -99 -99 -99 -99 111 ABC Kod:
#include <iostream> #include <sstream> #include <fstream> #include <vector> int main() { try { std::fstream in("evaluate.txt", std::ios::in); std::vector<std::string> vout; std::string line; while(std::getline(in, line)) { std::stringstream sstr; sstr << line; std::string tmp, out; for(std::size_t i = 0; i < 12; ++i) { if(i == 1) { sstr >> out; out += ' '; } else if(i == 10) { tmp.clear(); sstr >> tmp; out += tmp; vout.push_back(out); out.clear(); } else { sstr >> tmp; } } } const auto& end = vout.end(); auto it = vout.begin(); for(; it != end; ++it) { std::cout << *it << std::endl; } } catch (const std::exception& e) { std::cerr << e.what() << std::endl; } std::cin.ignore(); return 0; } Citat:
|
|
Sledeći korisnik se zahvaljuje korisniku Belphegor na korisnoj poruci: | ||
Demosten (21.3.2012) |
20.3.2012, 15:00 | #3 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Evo ti kompletnije resenje u attachmentu, src i test folderi, samo posaljes kao argument stazu do root foldera. Ako sam dobro razumeo strukturu kako si objasnio.
Koristio sam LibXL biblioteku za snimanje .xls dokumenata (TRIAL), nadji nesto bolje ili iplementiraj sam. Ima na par mesta treba da se prepravi kod jer sam zbrcko na brzaka ali radi. |
Sledeći korisnik se zahvaljuje korisniku Belphegor na korisnoj poruci: | ||
Demosten (21.3.2012) |
20.3.2012, 18:52 | #4 |
Starosedelac
Član od: 8.4.2006.
Lokacija: Beograd
Poruke: 2.590
Zahvalnice: 919
Zahvaljeno 585 puta na 364 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Evo za sat vremena, bar sam naucio nesto novo, ovo ispalo lakse od skolskog primera.
Koristio sam free biblioteku za .xls fajlove, trebalo bi da odradjuje posao za ovakave simple stvari. http://code.google.com/p/excellibrary/ Samo ubacis .exe i .dll u taj glavni folder pokrenes i sve ti ispise sta je uradio. Ubacio sam neke osnovne provere, i javlja ako naleti na neki dzumbus u .OUT fajlovima. |
20.3.2012, 19:03 | #5 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Kod:
using ExcelLibrary.SpreadSheet; Treba mi pomoć oko pisanja programa [C++] Mada je ocigledno da mu je za ovo bolje i brze resenje C#. |
20.3.2012, 19:16 | #6 |
Starosedelac
Član od: 8.4.2006.
Lokacija: Beograd
Poruke: 2.590
Zahvalnice: 919
Zahvaljeno 585 puta na 364 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Mogao sam i da uradim preko COM Interop ali to bi zahtevalo da ima instaliranu odogovarajucu verziju MS office excel-a i kod izgleda malo glupavije, ovako radi i bez office-a.
Kod:
using Microsoft.Office.Interop.Excel; Btw. nisi morao da radis da cita komandnu linuju, napisao je da moze i samo da se stavi u taj osnovni folder. Ne znam kako se radi sa COM objektima u C++, ali sigurno je neko karabudzenje. |
20.3.2012, 19:24 | #7 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Jeste karabudzenje za C++, nailazio sam na neke primere, da se prekrstis nogom i rukom. A vidim neki predlazu csv pa da se posle importuje ali ne znam da li bi onda mogao u vise sheetova da rasporedi.
A pogledaj samo koliko kosta za ovaj LibXL: |
20.3.2012, 19:29 | #8 |
Starosedelac
Član od: 8.4.2006.
Lokacija: Beograd
Poruke: 2.590
Zahvalnice: 919
Zahvaljeno 585 puta na 364 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Ufff koja cena, a za .NET ima tih free biblioteka kolko hoces cak i nije tolko tesko sa COM objektom, ali za razliko ovo treba da radi perfektno i imas podrsku dok ovo free sto sam ja upotrebio, samo sam pogledao na Issues deo na code.google i ima svasta od nemogucnosti otvaranja (u kodu) velikih fajlova do nekompatabilnosti sa razim verzijama Excela.
|
Sledeći korisnik se zahvaljuje korisniku zokocx na korisnoj poruci: | ||
Demosten (21.3.2012) |
20.3.2012, 20:10 | #9 |
Član
Član od: 16.4.2010.
Lokacija: Pančevo
Poruke: 462
Zahvalnice: 41
Zahvaljeno 68 puta na 63 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Mislim da bih mu ovde CSV parser savršeno završio posao.
U C# bi kod izgledao ovako nešto: http://www.switchonthecode.com/tutor...edb-csv-parser , a za c++ srećno . |
20.3.2012, 20:36 | #10 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Nasao sam nesto "free" http://www.codeproject.com/Articles/...Format-Library upravo prelistavam src. S'obzirom da mu treba bazicna funkcionalnost mozda ce moci nesto da iskopa.
|
21.3.2012, 0:22 | #11 |
Novi član
Član od: 30.1.2008.
Lokacija: Novi Sad
Poruke: 14
Zahvalnice: 6
Zahvaljeno 2 puta na 2 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Hvala puno svima na pomoći, pre sve pre svega Zokocx. Sada ću da ga skinem i probam.
Jeste da sam rekao C++, ali to je zato što sam mislio da iskoristim ovo kao priliku da se ponovo malo podučim programiranju i mislo sam da je dobra ideja da krenem od C-a. Nisam znao da li je iz nekog jezika to lakše ili teže uraditi. Definitivno ovakvoj Zokocxooj pomoći ne smem da gledam u zube, pa makar da je pisao i u LILA-777, a pogotovo i zato što baš i nemam suviše vremena za sve. Kada sredim ove podatke onda ću se udubiti da vidim, kako i da li se to moglo uraditi u C++ ili kom drugom jeziku... Inače javim se uskoro za drugi deo problema. Rekao sam na početku da je ovo lakši deo... |
21.3.2012, 1:16 | #12 |
Starosedelac
Član od: 8.4.2006.
Lokacija: Beograd
Poruke: 2.590
Zahvalnice: 919
Zahvaljeno 585 puta na 364 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Pa nije bilo nesto tesko, realno da bi morao ovo da uradim u C++ dosta bi se pomucio, jer slabije poznajem jezik i jos slabije biblioteke.
Svaka cast Balphegor-u sto je probao to da uradi u C++, jedino da prepravi da program gleda samo foldere u folderu gde se pokrene i to je to. |
21.3.2012, 3:40 | #13 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
...i trebaju malo da se seckaju stringovi jer hoce da mu se generisani xls-ovi zovu kao i "podfolder1" a sheetovi "podfolder2_sheet", ali me mrzelo. To je ionako malo posla.
|
22.3.2012, 12:25 | #14 |
Novi član
Član od: 30.1.2008.
Lokacija: Novi Sad
Poruke: 14
Zahvalnice: 6
Zahvaljeno 2 puta na 2 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Uf, konačno sam uspeo da ga nateram da radi...
Najveći problem je bio što nisam uspevao da pročitam koju grešku prijavljuje zbog teget boje slova na crnoj pozadini. Neku grešku bi mi prijavljvao, neke excel fajlove bi napravio, kada bih probao da ih otvorim Excel bi mi javljao da nisu ispravni, da su koruptovani... Na kraju sam otkrio tek uz pomoć screenshoot-a i photoshop-a... Prijavljivao mi je više od jednog .out fajla u folderu. Greška je do mene jer niste imali sve informacije. U krajnjim direktorijumima je bilo više .OUT fajlova, ne samo Evaluate.out nego i SoilWatBal.out i Overview.out, što Zokocx nije znao kada je pravio proveru da li ima više .OUT falova. A podaci u SoilWatBal(koji je inače drugi deo problema) i Overview nisu istog formata kao u Evaluate iako su isto TXT fajlovi. Malo sam pročačkao kod i uspeo da ga nateram da proradi. A koliko vidim radi savršeno. Još jednom hvala. Evo ovde je bila "greška"(boldovao sam "problem"): Kod:
foreach (string sub2Dir in DataDirStruct[sub1Dir]) { string SheetName = Path.GetFileNameWithoutExtension(sub2Dir); string[] inFile = Directory.GetFiles(sub2Dir, "*.OUT", SearchOption.TopDirectoryOnly); // if there's more than one .OUT file in subdir2 if (inFile.Length > 1) { Console.ForegroundColor = ConsoleColor.DarkBlue; Console.WriteLine("Subdir2: " + sub2Dir + "\ncontains more than 1 .OUT files for evaluation\nOnly sheet for first file can be created!"); Console.WriteLine("Continue? (Y/N)"); ConsoleKeyInfo cki = Console.ReadKey(false); if (cki.Key == ConsoleKey.N) return; } // just process first one .OUT file else if(inFile.Length > 0) { // sheet for subdir2 worksheet = new Worksheet(SheetName); using (StreamReader inStream = new StreamReader(inFile[0])) { // Move to line 4 for (int i = 0; i < 3; i++) Kod:
foreach (string sub2Dir in DataDirStruct[sub1Dir]) { string SheetName = Path.GetFileNameWithoutExtension(sub2Dir); string[] inFile = Directory.GetFiles(sub2Dir, "Evaluate.OUT", SearchOption.TopDirectoryOnly); // if there's more than one .OUT file in subdir2 if (inFile.Length > 1) { /* Console.ForegroundColor = ConsoleColor.DarkBlue; Console.WriteLine("Subdir2: " + sub2Dir + "\ncontains more than 1 .OUT files for evaluation\nOnly sheet for first file can be created!"); Console.WriteLine("Continue? (Y/N)"); ConsoleKeyInfo cki = Console.ReadKey(false); if (cki.Key == ConsoleKey.N) return; */ } // just process first one .OUT file else if(inFile.Length > 0) { // sheet for subdir2 worksheet = new Worksheet(SheetName); using (StreamReader inStream = new StreamReader(inFile[0])) { |
22.3.2012, 13:01 | #15 |
Starosedelac
Član od: 8.4.2006.
Lokacija: Beograd
Poruke: 2.590
Zahvalnice: 919
Zahvaljeno 585 puta na 364 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Stavio sam ja proveru da li ima vise .OUT fajlova, malo nisam pazio na boju texta
Kod:
Console.ForegroundColor = ConsoleColor.DarkBlue; Console.WriteLine("Subdir2: " + sub2Dir + "\ncontains more than 1 .OUT files for evaluation\nOnly sheet for first file can be created!"); Kod:
Console.ForegroundColor = ConsoleColor.Yellow; Da si samo spomenuo da svi ti fajlovi se zovu Evaluate.out, uradio bi kako treba. Evo nabrzinu ispravljeno sad gleda samo jedan jedini evaluate.out (velika/mala slova fajla nisu bitna). |
Sledeći korisnik se zahvaljuje korisniku zokocx na korisnoj poruci: | ||
Demosten (22.3.2012) |
22.3.2012, 13:08 | #16 | ||
Novi član
Član od: 30.1.2008.
Lokacija: Novi Sad
Poruke: 14
Zahvalnice: 6
Zahvaljeno 2 puta na 2 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Citat:
Citat:
Hvala još jednom ... |
||
22.3.2012, 13:46 | #17 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Vidim iz tvojih ranijih postova da se bavis "medicinom", nadam se samo da ti je ovaj projekat edukativnog tipa, jer ako ga budes koristio u druge svrhe jedna greska moze da kosta nekog pacijenta zivota!
|
22.3.2012, 16:26 | #18 | |
Novi član
Član od: 30.1.2008.
Lokacija: Novi Sad
Poruke: 14
Zahvalnice: 6
Zahvaljeno 2 puta na 2 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Citat:
Sada je u pitanju agronomija, tako da ako nešto omašim može samo da nam izrastu ruke na leđima od onoga što pojedemo... |
|
Sledeći korisnik se zahvaljuje korisniku Demosten na korisnoj poruci: | ||
Belphegor (22.3.2012) |
22.3.2012, 16:44 | #19 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Pao sam sa stoilice..
|
22.3.2012, 18:49 | #20 |
Starosedelac
Član od: 8.4.2006.
Lokacija: Beograd
Poruke: 2.590
Zahvalnice: 919
Zahvaljeno 585 puta na 364 poruka
|
Re: Treba mi pomoć oko pisanja programa [C++]
Zato sam ja stavio tamo GPL licencu, bez garancije , a i meni nece nist da izraste ja jedem domacu hranu
|
Bookmarks sajtovi |
|
|
Slične teme | ||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Pomoć u vezi brisanja programa | jokics | Kvarovi | 4 | 31.12.2009 10:16 |
Pomoć oko programa za mountovanje imagea | Hold | Aplikativni softver | 6 | 2.7.2009 11:59 |
Pomoć! Treba li nešto promeniti? | AcaDS1989 | ŠDK - Osnovne komponente | 8 | 26.11.2008 0:08 |
Pomoć! Treba mi driver za webcam... | stallich | Ostale komponente | 2 | 27.10.2008 15:10 |
Kako postici anonimnost kod koriscenja P2P programa | The Finest Serbian Since '82 | Internet tehnologije | 31 | 7.8.2007 1:35 |