Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

fuzija dva niza celih brojeva

[es] :: C/C++ programiranje :: fuzija dva niza celih brojeva

[ Pregleda: 2138 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nenadnesta
Nenad Stojkovic
student

Član broj: 263759
Poruke: 23
*.mts.telekom.rs.



Profil

icon fuzija dva niza celih brojeva14.12.2010. u 11:29 - pre 162 meseci
fuzija dva niza celih brojeva koji su uredjeni po neopadajucem redosledu u treci, na isti nacin uredjeni niz....
evo programa

#include <stdio.h>
#define N 100

main () {
int a[N], na, b[N], nb, c[2*N], nc, ia, ib, ic;
while (1) {
printf ("na? "); scanf ("%d", &na);
if (na<0 || na>N) break;
printf ("A ? "); for (ia=0; ia<na; scanf ("%d", &a[ia++]));
if (na == 0) printf ("\n");
printf ("nb? "); scanf ("%d", &nb);
if (nb<0 || nb>N) break;
printf ("B ? "); for (ib=0; ib<nb; scanf ("%d", &b[ib++]));
if (nb == 0) printf ("\n");
for (ia=ib=ic=0; ia<na&&ib<nb; c[ic++] = (a[ia]<b[ib]) ? a[ia++] : b[ib++]);
while (ia < na) c[ic++] = a[ia++];
while (ib < nb) c[ic++] = b[ib++];
nc = ic;
printf ("C = "); for (ic=0; ic<nc; printf ("%d ", c[ic++]));
printf ("\n\n");
}
}

ovaj izraz c[ic++] = (a[ia]<b[ib]) ? a[ia++] : b[ib++]); uporedjuje elemente nizova a i b i u niz c upisuje manju vrednost. sad mene zanima sta se desava kada clanovi niza imaju iste vrednosti ?
zasto se koriste potom ove dve while petlje kada prethodni izraz upisuje elemente u niz c?
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: fuzija dva niza celih brojeva14.12.2010. u 11:43 - pre 162 meseci
Ako su vrednosti iste onda uslov < nije zadovoljen i vraća se element iz niza b. To praktično znači da ako imamo po nekoliko elemenata iste vrednosti u oba niza onda se prvo potroše svi elementi niza b, a zatim svi elementi niza a, a onda se nastavlja normalno sa svim ostalim elementima.

Razlog za dodatne dve while petlje je taj što for petlja radi dok se ne potroše elementi iz jednog niza (onog koji ima manji najveći element). Posle toga je ostalo samo da se iskopira ostatak iz drugog niza, ali pošto se ne zna iz kog, onda kopiramo sve što je preostalo iz oba. U jednom nije preostalo ništa, i jedna while petlja neće ništa uraditi, ali ne znamo koja, pa zato ipak imamo dve petlje.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
212.200.65.*

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: fuzija dva niza celih brojeva14.12.2010. u 11:56 - pre 162 meseci
Baš je lep ovaj C jezik, po staroj "sistemskoj" orjentaciji - što jezgrovitije, to neazumljivije - al je Koooool.

Onako odokativno, ako je jedan niz zadovoljio uslov (ia<na&&ib<nb), recimo tipično ako je ceo jedan niz van granica drugog - petlja ispada, a C niz ostade nenapunjen. Tada je bolje ostatak iskopirati, pa koji god niz ostao nedotaknut, tj nedovršen.

 
Odgovor na temu

nenadnesta
Nenad Stojkovic
student

Član broj: 263759
Poruke: 23
*.mts.telekom.rs.



Profil

icon Re: fuzija dva niza celih brojeva15.12.2010. u 11:36 - pre 162 meseci
hvala ljudi,
meni je ovo bilo od velike koristi,
odgovori su kratki i jasni,
nadam se da ce jos neko iskoristiti ove primere...
pozz
 
Odgovor na temu

[es] :: C/C++ programiranje :: fuzija dva niza celih brojeva

[ Pregleda: 2138 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.