» »

[NALOGA][C] fri-vsp - strukture (struct)

[NALOGA][C] fri-vsp - strukture (struct)

atlet ::

Ima kdo kako podobno nalogo tej, ali kak primer? Mi lahko kdo resi to nalogo? :p

Napisi funkcijo dodaj, ki v definiran seznam doda novo besedo in vrne kazalec na zacetek novega seznama. Kazalec na zacetek seznama in niz znakov, ki ga dodajamo, sta podana kot argument funkcije.

struct elCrka {
char crka;
struct elCrka *naslednja;
}
struct elBeseda {
struct elCrka *crke;
struct elBeseda *naslednja;
}
Enostaven program za fakturiranje -> www.quibi.net

OwcA ::

Pri čem imaš težave?
Otroška radovednost - gonilo napredka.

atlet ::

Nevem, kako bi dodau v seznam elBeseda, besedo, ki je sestavljena iz seznama elCrka. ;)
Enostaven program za fakturiranje -> www.quibi.net

OwcA ::

Če dodajaš na konec, se po "naslednja" se oddričaš do konca in zadnjo "naslednja" nastaviš na novo besedo. Dodajanjenje na začetek je še bolj preprosto, ker le "naslednja" novi besedi nastaviš na dosedanji začetek seznama.
Otroška radovednost - gonilo napredka.

Zgodovina sprememb…

  • spremenilo: OwcA ()

atlet ::

struct elBeseda *dodaj(struct elBeseda *z, char *niz[])
{
	struct elBeseda *be;
	struct elCrka *bes;
	int i=0;
	
	be = (struct elBeseda*) malloc (sizeof (struct elBeseda));
	bes  = (struct elCrka*) malloc (sizeof (struct elCrka));

	bes->crka=niz[i];
	be->naslednja=be;
	
	while (niz[i] != '\0')
	{
  	bes=(struct elCrka*) malloc (sizeof (struct elCrka));
   	bes->crka=niz[i];
   	bes->naslednja=bes;
   	i++;
  }  
}


Bo pravilno? :p
Enostaven program za fakturiranje -> www.quibi.net

Zgodovina sprememb…

  • spremenil: atlet ()

Gundolf ::

Ne, ni pravilno.

Morda si opazil, da si pozabil uporabiti z.
Poleg tega narediš to napako, da vsak 'naslednji' pointer povežeš nazaj nase.
V zanki bo nekaj v tem stilu mnogo bolje:
struct elCrka *prejsnjaCrka = bes;
bes=(struct elCrka*) malloc (sizeof (struct elCrka));
bes->crka=niz[i];
prejsnjaCrka->naslednja=bes;

in podobno za besedo.

Zgodovina sprememb…

  • spremenil: Gundolf ()

atlet ::

struct elBeseda *dodaj(struct elBeseda *z, char *niz[])
{
	struct elCrka *bes;
	struct elBeseda *be;
	int i=0;
	
	be = (struct elBeseda*) malloc (sizeof (struct elBeseda));
	bes  = (struct elCrka*) malloc (sizeof (struct elCrka));

	bes->crka=niz[i];
	be->crke=bes;
	be->naslednja=z;
	
	while (niz[i] != '\0')
	{
		struct elCrka *prejsnjaCrka = bes;
		bes=(struct elCrka*) malloc (sizeof (struct elCrka));
		bes->crka=niz[i];
		prejsnjaCrka->naslednja=bes;
   	i++;
  }

  return be;
}

Sedaj pa bi moglo bit pravilno?
Enostaven program za fakturiranje -> www.quibi.net

Zgodovina sprememb…

  • spremenil: atlet ()

Gundolf ::

Če hočeš biti 100% da pravilno dela boš moral sprobat.

atlet ::

Vem. S tem se sedaj ukvarjam, pa nekako ne dela... Mi javlja Segmentation fault...bo ze pocasi. :p
Enostaven program za fakturiranje -> www.quibi.net

atlet ::

Izpisujem pravilno? printf("%c", p->crke->crka);
Enostaven program za fakturiranje -> www.quibi.net

Vesoljc ::

ja ce reces se tole
if( p && p->crke && p->crke->crka )
{
   printf...
}


:)
Abnormal behavior of abnormal brain makes me normal...


Vredno ogleda ...

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

[C] kazalčni seznam

Oddelek: Programiranje
122863 (2677) MrBrdo
»

C strukture, kazalci naloga pomoc

Oddelek: Programiranje
51385 (1280) DavidJ
»

zlobni C ali kako sprogramirat sledeč program =)

Oddelek: Programiranje
141701 (1260) charlotte
»

[C] Povezani seznami in kazalci

Oddelek: Programiranje
242476 (2043) Good Guy
»

[C] Narascajoce sortiranje linearnega seznama

Oddelek: Programiranje
71767 (1656) Jebiveter

Več podobnih tem