» »

Naloga v C-ju pomoč

Naloga v C-ju pomoč

siamon ::

Nujno rabim pomoč pri izvedbi te naloge. Rabim jo v C-kodi, če pa ne gre bo tudi C++ uredu.
-------------------------------

Treemap ©

Napišite program, ki implementira podatkovno strukturo TreeMap iz Jave, kjer namesto rdeče-črnih dreves uporabite navadno binarno drevo (binarni slovar). Za binarni slovar (binarno iskalno drevo) velja, da je ključ v korenu večji od ključa v levem poddrevesu in manjši od ključa v desnem poddrevesu za vsako vozlišče v drevesu.

Pri binarnem slovarju je potrebno implementirati konstruktor (ki ustvari prazno strukturo), destruktor (ki sprosti vse vire, ki jih je zasedla struktura, na primer pomnilnik), metode put(k,v), get(k), clear(), containsKey(k), containsValue(v), isEmpty(), remove(k) in size(). Vrednost elementa naj bo poljuben niz znakov, katerega dolžina ne presega 255 znakov, ključ pa je celo število. Število elementov v tej strukturi naj ne bo omejeno. Vse funkcije naj kot parameter prejmejo kazalec na strukturo.

Delovanje napisanih funkcij preverite v programu, ki najprej zgradi strukturo, katere elemente prebere iz datoteke. Elementi strukture so v datoteki zapisani po vrsticah. V vsaki vrstici je najprej eno celo število, ki predstavlja ključ elementa, temu pa sledi presledek in niz znakov (dolžine največ 255 znakov), ki predstavlja vrednost elementa. Niz z vrednostjo je zapisan v narekovajih. Ko slovar zgradite, ga izpišite (način izpisa je poljuben, le na začetku naj se v oklepaju izpiše tudi njegova dolžina). Operacije nad zgrajenim slovarjem so zapisane v drugi datoteki, vsaka v svoji vrstici, in sicer v naslednji obliki (vrednost je vedno zapisana v narekovajih, med oznako operacije, ključem in vrednostjo pa je presledek):

p ključ "vrednost" pomeni dodajanje elementa v slovar,
g ključ pomeni izpis vrednosti elementa s tem ključem,
k ključ vrne 1, če je podan ključ v slovarju, sicer vrne 0,
v "vrednost" vrne 1, če je podana vrednost v slovarju, sicer vrne 0,
r ključ pomeni brisanje elementa iz slovarja.

Pred brisanjem elementa iz slovarja vedno najprej preverite, ali ni slovar slučajno prazen.

Po vsaki operaciji naj program na zaslon izpiše rezultat operacije oziroma trenutno velikost slovarja (v oklepaju) in njegove elemente. Na koncu slovar tudi izpraznite in uničite (klic destruktorja). Imeni obeh datotek sta podani kot argumenta programa.

Primer datoteke z elementi slovarja:

5 "to je prvi niz"
1 "drugi niz"
7 "vrednost v slovarju"
3 "se ena vrednost ..."

Primer datoteke z operacijami nad slovarjem:

p 2 "dodamo ta niz"
p 2 "zamenjamo niz"
g 5
g 3
g 7
k 2
k 3
r 3
v "dodamo ta niz"

Primer izpisa za zgornjo datoteko (način izpisa slovarja je poljuben):

(4) 1 "drugi niz", 3 "se ena vrednost ...", 5 "to je prvi niz", 7 "vrednost v slovarju"
(3) 1 "drugi niz", 5 "to je prvi niz", 7 "vrednost v slovarju"
(4) 1 "drugi niz", 2 "dodamo ta niz", 5 "to je prvi niz", 7 "vrednost v slovarju"
(4) 1 "drugi niz", 2 "zamenjamo niz", 5 "to je prvi niz", 7 "vrednost v slovarju"
"to je prvi niz"
0
"vrednost v slovarju"
1
0
0
------------------

Hvala za pomoč.

charlotte ::

Kr naenkrat poplava nalog v C-ju, FRI bruci smo nasankal:D

siamon ::

ampak res


*bump!

Tutankhamun ::

V google vpiš "C binary tree" pa dobiš tega ko... Pol pa mau predeli da bo zate primern.
AMD Phenom QUAD 9950 Black Edition, 8GB

Stipex ::

lol, js sm isto nalogo dubu :D
edit: nism vidu da je 2008 heh

Zgodovina sprememb…

  • spremenilo: Stipex ()

Ajrina ::

No, pa še eno vprašanje iz FRI :) Besedilo naloge je:
Napiši funkcijo int vsotaStevk(char * ID), ki kot parameter prejme študentsko vpisno številko in izračuna in vrne vsoto števk. Primer: klic funkcije vsotaStevk("63090987") naj vrne 42. Funkcija naj tudi preveri pravilnost parametra (ali je res vpisna številka: 8 števk, prvi dve sta 6 in 3). Če parameter ni pravilne oblike, naj funkcija vrne -1. Funkcijo vsotaStevk kliči iz glavnega programa (to je iz funkcije main()), pred tem pa parameter (vpisno številko) preberi iz tipkovnice.

Z argumenti sem naredila. Z branjem iz tipkovnice pa nikakor ne gre. Kakor koli obrnem - nič. Vsak namig dobrodošel!

P1P1 ::

Namig: Počakaj do današnjih predavanj :D
Q6600 3.2Ghz, Rampage Formula, X-FI Titanium Fatal1ty,
9800GTX+, Velociraptor 300Gb, Teamgroup Extreme dark

Infinity ::

Jao sam res :D use te naloge so FRI bruci :P

Tutankhamun ::

int vsotaStevk (char *ID)
{
	int len = strlen (ID);

	if (len != 8)
		return -1;

	if (ID [0] != '6' || ID [1] != '3')
		return -1;

	int sum = 6+3;

	for (int i = 2; i < 8; i++)
	{
		if (ID [i] < '0' || ID [i] > '9')
			return -1;

		sum += ID [i] - '0';

	}

	return 0;
}
AMD Phenom QUAD 9950 Black Edition, 8GB

Ajrina ::

Hvala za pomoč Tutankhamun!
Malo sem preuredila, popravila in je. Pri svojih poskusih sem samo pozabila na sum = 0 :|

Tutankhamun ::

aja šele zdej sm opazu da rabš sam branje s tipkovnce :).

int vsota;
char studentID [9]; // 8 mestna številka + \0

scanf ("%s", studentID);
vsota = vsotaStevk (studentID);

if (vsota == -1)
	printf ("nekaj je narobe z ID stevilko\n");
else
	printf ("vsota stevk stevilke %s = %u\n", studentID, vsota);


Pa prej ko sm odgovoru za funkcijo vsotaStevk (...) funkcija more nakonc vračat return sum; namesto return 0;
AMD Phenom QUAD 9950 Black Edition, 8GB

keworkian ::

Samo a ni to brezveze, sprasujes na forumu za namige, katere bi moral sam ugotovit, ter sam pridet do njih. Slabi programerji boste to.:>
Obscenities in B-Flat


Vredno ogleda ...

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

program, ki ti najde vse kombinacije črk oz. številk, ki mu jih podaš (strani: 1 2 )

Oddelek: Programiranje
7038982 (3674) XyNOBvxWVJ
»

Python - težava s slovarji - vnos

Oddelek: Programiranje
51056 (878) RatedR
»

Python - pomoč (strani: 1 2 3 )

Oddelek: Programiranje
10315878 (6626) black ice
»

Naloga iz Putka - UPM

Oddelek: Programiranje
241783 (1119) NejcSSD
»

python-pomoč pri nalogi z nizi

Oddelek: Programiranje
181313 (1011) galu

Več podobnih tem