niz i novi niz

niz i novi niz

offline
  • Pridružio: 24 Mar 2004
  • Poruke: 3962
  • Gde živiš: Zemun

Pozdrav
Zapeo sam kada radim neke kombinacije sa nizovima.
upitanju je jezik c.
U ovom slucaju zelim da iz jednog niza u novi ubacim samo podatke koji se ne ponavljaju vise od 1. dakle ako je prvi niz 1, 2, 3, 3, 3, 4, da novi niz bude 1, 2, 3, 4
Nesto sam zapeo....
evo kako sam nesto petljao, ali fali zadnji clan.
      for(i = 0; i < x-1; i++) {          for(j = i+1; j < x; j++ ) {             if(niz[i]==niz[j])                break;          }          if(j==x) {                niz1[p++] = niz[i];          }       }
znaci proveravam 0 clan sa sledecim i tako dalje.
Ako j dogura do duzine niza znaci da nije bilo istih clanova i da izvrsi upis...sve to lepo radi, ali kada radi predzadnji i zadnji, po istom ovom principu, upise predzadnji i to je to.... zadnji se ne upisuje.... ?!
kako i njega da upisem ?
nece mozak vise da radi Sad

ah da da dodam da je x naravno duzina niza



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

A gdje je zapelo?

Ovako bi radilo, uglavnom brze nego gornji primjer

 int i, j, p = 0;         for(i = 0; i < x-1; i++) {           for(j = 0; j < p; j++ ) {            if( niz1[j] == niz[i] )                break;          }                  if( niz1[j] != niz[i] )              niz1[p++] = niz[i];       }           //Ispis unikatnih     for(i = 0; i < p; i++) {          printf("%d\n", niz1[i]);     }

A to sto kazes da ti se ne ispisuje zadnji nisi dobro napravio petlju za ispis, vjerovatno si je ovako napisao for(i = 0; i < p-1; i++)
?



offline
  • Pridružio: 24 Mar 2004
  • Poruke: 3962
  • Gde živiš: Zemun

cek ovo tvoje nisam ni probao....
ali kazes da je p=0 a posle u for kaze j=0 i j<p ?!

ispis je dobar.....
evo nasao sam gresku ! ! !
umesto for i =0; i < x-1; i++ treba da stavim da ide i do zadnjeg clana niza ! Smile
#include <stdio.h> int main() {        while(1) {       int niz[10],x,i,j, niz1[10],p=0;       do {          printf("Unesite duzinu niza < 10\n");          scanf("%d", &x);       }while(x<1 || x >=10);       printf("Unesite clanove niza\n");       for(i = 0; i < x ; i++) {          scanf("%d", &niz[i]);       }       printf("\nClanovi niza su\n");       for(i = 0; i < x; i++) {          printf("%d\n", niz[i]);       }       for(i = 0; i < x; i++) {          for(j = i+1; j < x; j++ ) {             if(niz[i]==niz[j])                break;          }          if(j==x) {                niz1[p++] = niz[i];          }       }       printf("\nClanovi novog niza su\n");       for(i = 0; i < p; i++) {          printf("%d\n", niz1[i]);       }    }    return 0; }

boze koliko me iscimao taj x-1 ! slep pored ociju.

inace imao bih jos neka pitanja tako da molim modove da ne zakljucavaju temu.... slede malo kasnije pitanja isto vezana za niz
tnx igor86

offline
  • Pridružio: 26 Jul 2004
  • Poruke: 1472
  • Gde živiš: Vojvodina,Zrenjanin

Citat:umesto for i =0; i < x-1; i++ treba da stavim da ide i do zadnjeg clana niza

Kako ovo moze da ti radi? AKo ide do zadnjeg clana niza koji je x bice na kraju da je i=x, a sa drugom petljom j=x+1.Pa kako ih onda uporedjujes kad je x poslednji element??Sta je x+1 Smile

offline
  • Pridružio: 24 Mar 2004
  • Poruke: 3962
  • Gde živiš: Zemun

pa lepo...
poredim prvi i sledeci....
ako su isti radi se prekid i ne zadovoljava se uslov if(j==x) tako da nema upisa....
zadnji se i ne proverava, vec se samo trpa jer zadovoljava uslov.....
recimo da je prvi clan niza 1, a zadnji isto tako 1.
krene provera i kada dodje da proverava prvi za danjim dolazi do break i nije zadovoljne if... sa prvog se prelazi na drugi clan koji se poredi sa trecim i tako dalje... tako da na kraju taj zanjdi se upisuje bez provere Smile

aj probaj, meni ovo lepo radi..... mislim da nema rupa ?! Razz

offline
  • Pridružio: 18 Apr 2003
  • Poruke: 5001
  • Gde živiš: Beograd

LaserJat ::AKo ide do zadnjeg clana niza koji je x bice na kraju da je i=x, a sa drugom petljom j=x+1.Pa kako ih onda uporedjujes kad je x poslednji element??Sta je x+1 Smile
Ako mislis na petlju "for(j = i+1; j < x; j++)", u tu petlju ni ne ulazi jer ne zadovoljava uslov "j < x"

offline
  • Pridružio: 26 Jul 2004
  • Poruke: 1472
  • Gde živiš: Vojvodina,Zrenjanin

Bone Collector ::LaserJat ::AKo ide do zadnjeg clana niza koji je x bice na kraju da je i=x, a sa drugom petljom j=x+1.Pa kako ih onda uporedjujes kad je x poslednji element??Sta je x+1 Smile
Ako mislis na petlju "for(j = i+1; j < x; j++)", u tu petlju ni ne ulazi jer ne zadovoljava uslov "j < x"


Da bas na to sam mislio, sad mi je jasno, nisam video uslov j<x

Ko je trenutno na forumu
 

Ukupno su 1008 korisnika na forumu :: 80 registrovanih, 7 sakrivenih i 921 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 9k38, A.R.Chafee.Jr., arezina, babaroga, Bobrock1, Bojan198527, bojanstros9, bojcistv, Boris90, cavatina, ccoogg123, Centauro, Clouseau, dane007, dejina811, delboy, Denaya, Dovla 1980, draganl, famoso, filip1326, gaga23, gasha, Gerilac, gregorxix, Hardenberg, IAR80, interesujeme, Ivan1371, ivanb, Jaz, klepesina, Kubovac, kunktator, Leonov, lucko1, Mercury, mexo, Miki01, mikrimaus, milenko crazy north, miljannis, milutin134, MK10, Musklfiber, mux, Najax, oldtimer, opt1, pera bager, pisac12, Povratak1912, radionica1, Rectifier, repac, rovac, royst33, ruma, sap, Shinobi, Silvertooth, Sirius, Slingshot, Srle993, Srpska zauvjek, Timočka Divizija, Trimi68, uruk, vathra, veljkovicdani, Vlada1389, voja64, VP6919, vuksa72, W123, x9, YU-UKI, ZlatniRez, 3987, 79693