» »

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

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

matjaz1111 ::

zdravo,

prosil bi vas za pomoč pri tej nalogi:(C++)


Napisi razred za podatkovno strukturo Sklad ketere elementi so besede.Tip za besedo naj bo string.Maxi. dolžina besede naj bo 80 znakov.Sklad naj ima metode pop push ,jePrazen.Metoda jePrazen vrne logično vrednost true ko je sklad prazen sicer vrne logično vrednost false.Ločeno napišite efinicijo razreda ,implementacije razreda in glavni program,v keterem je prikaz uporabe tega razred.

in
napišite program, ki odpre dve vhodni datoteki prva.txt in druga.txt. program iz obeh datotek prebere istoležni vrstici, ju primerja in če se razlikujeta, ju porgram izpiše na zaslon. na koncu program izpiše še število , koliko istoležnih vrstic se razlikuje. datoteki sta lahko različno dolgi.

(pri tej nalogi bi samo rabil tisti del, ki primerja dve datoteki in kako izpiše število, koliko istoležnih vrstic se razlikuje...)

ne uspe mi nikakor spravit skup teh nalog...
hvala,lp
matjaž
  • spremenilo: CCfly ()

snow ::

Prvo preberi navodila o oblikovanju naslovov tem.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Tutankhamun ::

za 2. nalogo (neki u tem stilu :)).
int main (int argc, char *argv [])
{
	ifstream datoteka1, datoteka2;
	string vrstica1, vrstica2;
	int razlik = 0;
	
	datoteka1.open (argv [1]); // datoteka1.txt
	datoteka2.open (argv [2]); // datoteka2.txt
	
	while (datoteka1.eof () || datoteka2.eof ())
	{
		getline (datoteka1, vrstica1);
		getline (datoteka1, vrstica2);
		if (vrstica1 != vrstica2)
		{
			++razlik; // število različnih vrstic
			/* izpiši različni istolezni vrtici */
			cout << "1. vrstica: " << vrstica1 << endl;
			cout << "2. vrstica: " << vrstica2 << endl;
		}
	}
	
	cout << "Različnih vrstic = " << razlik << endl;
	
	return 0;
}
AMD Phenom QUAD 9950 Black Edition, 8GB

Zgodovina sprememb…

snow ::

Mogoče mankja tukaj kakšen ! (not).
while (datoteka1.eof () || datoteka2.eof ())
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Tutankhamun ::

Res je ;). Nism nč testiru, sam tok sm naredu da se je prevedl :D.
AMD Phenom QUAD 9950 Black Edition, 8GB

bozjak ::

Ok, ne vem ce sem prav razumel prvo nalogo (kaj naredi funkcija "pop push"?). Tuki imas primer classa, ce kaj ni uredu naj ti bo to za vzorec, ce pa je vredu ti pa prikaz nebi smelo bit problem za napisat.

#include <string.h>

typedef char string[80]

class sklad {
	string beseda;
	public:
		sklad () { strcpy(beseda, ""); }
		void pop_push (string in) { strcpy(beseda, in); }
		boolean jePrazen() {
			if (strcmp(beseda, "") == 0) return true; 
			else retrun false;
		}
};



P.S. Sm lih v sluzbi, tko da sm napisal zelo na hitro in nisem probal prevesti, a moralo bi delati.

EDIT: Ravnokar sem se enkrat prebral navodilo. Ce bi moral ta razred simulirati delovanje sklada, potem zgornji primer seveda ni pravilen. Ce naj simulira sklad potem prosim, da bolj podrobno napises kako naj bi stvar delovala? Mora pisati na sklad, ali je potrebno uporabiti dinamičen seznam, etc..

LP
http://upor.blogec.si
http://bozjak.deviantart.com

Zgodovina sprememb…

  • spremenil: bozjak ()

BigWhale ::

Kaj sta 'istolezni vrstici' ?!

Tutankhamun ::

Vrjetn pomen, da je 5. vrstica v 1. datoteki enaka 5. vrstici v drugi datoteki...


Uuuu pa še eno napako sm vidu tm v vrstici while (datoteka1.eof () || datoteka2.eof ())

Tko bi mogl bit
while (datoteka1.eof == 0 && datoteka2.eof () == 0)

Pomoje :D

pa še prva naloga :D :
class CSklad
{
public:
	int push (string value)
	{
		if (value.size () > 80) /* max string size */
			return -1;

		m_sklad.push_back (value);
		return 0;
	}

	string pop ()
	{
		string tmp = m_sklad.back ();
		m_sklad.pop_back ();

		return tmp;
	}

	int is_empty ()
	{
		if (m_sklad.size () > 0)
			return 0;
		return 1;
	}

private:
	vector <string> m_sklad;
};

int main (int argc, char *args [])
{
	CSklad sklad;

	sklad.push ("tadaaa1");
	sklad.push ("tadaaa2");
	sklad.push ("tadaaa3");
	sklad.push ("tadaaa4");
	sklad.push ("tadaaa5");
	sklad.push ("tadaaa6");
	sklad.push ("tadaaa7");

	while (!sklad.is_empty ())
	{
		cout << sklad.pop () << endl;
	}
	return 0;
}
AMD Phenom QUAD 9950 Black Edition, 8GB

Zgodovina sprememb…

matjaz1111 ::

hvala vsem za pomoč, sam tega nebi skupaj spravo.

Kaj sta 'istolezni vrstici' ?!
Kaj sta 'istolezni vrstici' ?!
- ki sta v prvi in drugi datoteki v isti vrstici (tak kot je tutankhamun napiso)

(kaj naredi funkcija "pop push"?)

- Sklad lahko manipuliramo z ukazi push in pop. Push vnese podatke v sklad, pop jih odstrani)

lp, matjaž


Vredno ogleda ...

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

C# pomoč pri razmišljanju

Oddelek: Programiranje
352293 (1437) urozz
»

[c] Enaki datoteki

Oddelek: Programiranje
71029 (889) Spura
»

[C] Branje iz datoteke

Oddelek: Programiranje
101716 (1547) BigWhale
»

[Pascal] Kako program prepričati, da preskoči vrstico

Oddelek: Programiranje
81153 (876) joze67
»

dvojna while zanka- problem

Oddelek: Programiranje
121128 (1008) T(he) Boss

Več podobnih tem