» »

[C++] Problem z datotekami in sortiranjem

[C++] Problem z datotekami in sortiranjem

madviper ::

Pišem en preprost program, ki bi mi iz datoteke prebral maile in jih posortiral v druge datateke odvisno od končnice. Program sem sicer napisal, sam imam nekje napako :(
Kje?

 int main
{
	ifstream mail;
	ofstream si, hr, it, de, ru, com;
	fstream temp;
	char vrstica;
	int j=0;

	mail.open("C:\\mailsort\\mail.txt");
	si.open("C:\\mailsort\\si.txt");
	hr.open("C:\\mailsort\\hr.txt");
	it.open("C:\\mailsort\\it.txt");
	de.open("C:\\mailsort\\de.txt");
	ru.open("C:\\mailsort\\ru.txt");
	com.open("C:\\mailsort\\com.txt");
	if ( !mail.good() ) {
		return 1;
	}

	while ( !mail.eof() ) {
		vrstica = mail.getline();
		temp.open("C:\\mailsort\\temp.txt");
		temp.put(vrstica);
		int i=0;
		char znak, konc;
		

		while ( !temp.eof() ) {
			znak = temp.get;
			i++;
		}

		temp.ignore(j=i-3);
		konc = temp.getline;

		if ( konc = ".si" )
			si.put(vrstica);
		if ( konc = ".hr" )
			hr.put(vrstica);
		if ( konc = ".at" || ".de" )
			de.put(vrstica);
		if ( konc = ".it" )
			it.put(vrstica);
		if (konc = ".ru" )
			ru.put(vrstica);
		else (com.put(vrstica))

		temp.close("C:\\mailsort\\temp.txt");
	}
	
	mail.close("C:\\mailsort\\mail.txt");
	si.close("C:\\mailsort\\si.txt");
	hr.close("C:\\mailsort\\hr.txt");
	it.close("C:\\mailsort\\it.txt");
	de.close("C:\\mailsort\\de.txt");
	ru.close("C:\\mailsort\\ru.txt");
	com.close("C:\\mailsort\\com.txt");

	return 0;
}
 


Kdo najde rešitev ma v dobrem pir pr men!

Lp, madviper
I'd like to do something crazy!
  • spremenil: madviper ()

madviper ::

Aja, če koda je zaščitena - :DJoke:D

Če komu koristi, naj kr izvoli, sam men trenutno ne deluje :(
I'd like to do something crazy!

Brane2 ::

ČIsto tako laično- zakaj je vrstica definirana kot "char", potem jo pa getlineaš ?

A ne bi morala biti tipa string ali vsaj char[] ? :\
On the journey of life, I chose the psycho path.

madviper ::

Hmmm... zanimivo vprašanje. Mogoč zato, kr je napača :D
Hvala
I'd like to do something crazy!

Zgodovina sprememb…

  • spremenil: madviper ()

madviper ::

@Brane2
Je očitno še kak dodaten bug not. A teb prevede kodo? Men debuger vrže cel kup napak ven.

Prva napaka je v tej vrstici
vrstica = mail.getline();
I'd like to do something crazy!

Zgodovina sprememb…

  • spremenil: madviper ()

Brane2 ::

Nimam zdaj časa za compile. Pa tudi nimam nekih izkušenj. Ravno sem naredil prvi prehod Bruce Eckelove bukve "Thinking in C++" in se pripravljam za drugi.
Tole sem zinil bolj tko usput. Čisto možno da sem kaj zaj* :D
On the journey of life, I chose the psycho path.

Zgodovina sprememb…

  • spremenil: Brane2 ()

madviper ::

Nisi zaj* kr sem odstrano približno tretino napak, če ne še več, ko sem popravo to kar si svetoval.
Hvala ti!:D
I'd like to do something crazy!

Brane2 ::

če je tako, potem lahko "konc" predelaš na isti način, ker tudi ta je sedaj "char", vanj bi pa rad spravil (get)line...
On the journey of life, I chose the psycho path.

madviper ::

To sem že popravo, takoj ko si povedal ka sem zabluzo.
I'd like to do something crazy!

Brane2 ::

A pri closeanju vseh fileov rabiš met v kot vhodni podatek file, ki ga closeaš ?

Saj kličeš member funkcije same instance, ki valjda vedo, kaj v objektu za en fajl je sploh bil odprt...
On the journey of life, I chose the psycho path.

Zgodovina sprememb…

  • spremenil: Brane2 ()

madviper ::

Ja najbrž res ne bi rabo, sam škodi pa sicer ne.
Kr sem len pisati, sem sam skopiral odpiranje in sem pol sam spremenil open v close.

Sicer pa lahk to tud spremenim.
I'd like to do something crazy!

BigWhale ::

Kaj ce bi teh nekaj vrstic napisal v kakem skriptnem jeziku? Bash, perl, phyton? Bos prej fertik... ;)

madviper ::

Odkrito povedano, skripte niso moje področje. Zaenkrat jih ne obvladam.
A je kaka dobra duša da mi to naredi:D ?
I'd like to do something crazy!

krneki0001 ::

namesto " vrstica = mail.getline(); "
vpiši " mail.getline(vrstica,300,'\n'); "

BigWhale ::

Evo ti bash skripta...

for bla in `sed 's/\(.*\)\(\.[a-z,A-Z]*$\)/\2/' mail.txt | sort -u` 
do
  grep ${bla} mail.txt > mail${bla};
done



Edini pogoj, da tole deluje je, da imas v vsaki vrstici samo en mail naslov, ki se konca z .nekaj, ce se ne, pojma nimam kaj se zgodi... :P

PS: nucamo bash syntax highlighting! :P

Zgodovina sprememb…

  • spremenil: BigWhale ()

jype ::

madviper> Odkrito povedano, skripte niso moje področje. Zaenkrat jih ne obvladam.

Ja, ampak C++ tudi ne.

No, ker ti je zadevo napisal ze BigWhale, se ne bom matral :)

madviper ::

Ja, ampak C++ tudi ne.


Sej nisem reko, da je. O C++ se mi nekaj sanja, mal poznam osnovne funkcije, kar pa za druge jezike ne morem trdit.

@BigWhale
Hvala ti! Sam še eno vprašanje. Kaj je to bash syntax highlighting?
I'd like to do something crazy!

BigWhale ::

Hm, barvanje sintakse na forumu.

madviper ::

A ni bash sam za linux sisteme? Al deluje tud na windowsih (kako?)?
I'd like to do something crazy!

BigWhale ::

Za bash na windows bos nucal cygwin. Zadostovala bo ze minimalna instalacija, ki bo vsebovala tudi sed, grep in sort.

madviper ::

Ok. Tud to sem zadaj dal gor. Hvala!

Zdaj pa nasledna serija vprašanj.
Kako shranit skripto?
In kako skripto potem zagnati, da bo pravilno delovala?

Prosim za ta pojasnila če niso odveč.
I'd like to do something crazy!

iNN ::

Zivijo

Takole gre v cistem linuxu, ce ti kaj pomaga
Najprej pac ce v recimo nano text editorju napises skripto, in jo normalno shranis. Nato jo chmodas v executable (chmod +x mojaskripta), potem pa zazenes ( ./mojaksripta). That's all.
==

madviper ::

Ok stvar deluje tud pod cygwin-om.
I'd like to do something crazy!

BigWhale ::

Prva vrstica v skripti naj bo

#!/bin/bash

Just to be on the safe side.

madviper ::

Star sicer laufa (tud brez vrstice), sam rabo bi da mi mail sortira skupaj v en file. Kakšna ideja?
I'd like to do something crazy!

madviper ::

A mi zna kdo povedat, zakaj mi javla da ne najde ukaza getline v knižici ifstream oz. fstream?
I'd like to do something crazy!

krneki0001 ::

Zato ker ga tam ni!

BigWhale ::

Kak mail, da ti sortira? iz katerega filetka v kateri file?

ce bi rad samo sortiran mail, pote naredis cat mail.txt | sort > sortedmail.txt


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

c++ Branje dolocene vrstica iz .txt-ja

Oddelek: Programiranje
281558 (1297) technolog
»

Pomoc pri nalogi

Oddelek: Programiranje
151855 (1661) FuI2cY
»

c++ BRANJE IZ DATOTEKE

Oddelek: Programiranje
202486 (1899) Tutankhamun
»

[Naloga][C++] podatkovni tip sklad in istoležne vrstice v datotekah

Oddelek: Programiranje
81951 (1820) matjaz1111
»

[c++]file read problem

Oddelek: Programiranje
151521 (1256) 'FireSTORM'

Več podobnih tem