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.

  1. for(i = 0; i < x-1; i++) {
  2.    for(j = i+1; j < x; j++ ) {
  3.       if(niz[i]==niz[j])
  4.          break;
  5.    }
  6.    if(j==x) {
  7.          niz1[p++] = niz[i];
  8.    }
  9. }

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

  1. int i, j, p = 0;
  2.  
  3.   for(i = 0; i < x-1; i++) {
  4.         for(j = 0; j < p; j++ ) {
  5.          if( niz1[j] == niz[i] )
  6.              break;
  7.        }
  8.      
  9.        if( niz1[j] != niz[i] )
  10.            niz1[p++] = niz[i];
  11.     }
  12.    
  13.   //Ispis unikatnih
  14.   for(i = 0; i < p; i++) {
  15.        printf("%d\n", niz1[i]);
  16.   }


A to sto kazes da ti se ne ispisuje zadnji nisi dobro napravio petlju za ispis, vjerovatno si je ovako napisao
  1. 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

  1. #include <stdio.h>
  2.  
  3. int main() {
  4.    
  5.    while(1) {
  6.       int niz[10],x,i,j, niz1[10],p=0;
  7.       do {
  8.          printf("Unesite duzinu niza < 10\n");
  9.          scanf("%d", &x);
  10.       }while(x<1 || x >=10);
  11.       printf("Unesite clanove niza\n");
  12.       for(i = 0; i < x ; i++) {
  13.          scanf("%d", &niz[i]);
  14.       }
  15.       printf("\nClanovi niza su\n");
  16.       for(i = 0; i < x; i++) {
  17.          printf("%d\n", niz[i]);
  18.       }
  19.       for(i = 0; i < x; i++) {
  20.          for(j = i+1; j < x; j++ ) {
  21.             if(niz[i]==niz[j])
  22.                break;
  23.          }
  24.          if(j==x) {
  25.                niz1[p++] = niz[i];
  26.          }
  27.       }
  28.       printf("\nClanovi novog niza su\n");
  29.       for(i = 0; i < p; i++) {
  30.          printf("%d\n", niz1[i]);
  31.       }
  32.  
  33.    }
  34.    return 0;
  35. }


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 987 korisnika na forumu :: 61 registrovanih, 3 sakrivenih i 923 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: acatomic, advokat84, amadeus, Apok, Banovo Brdo, Ben Roj, Black Luster Soldier, bojan581, bojanM84, bojcistv, Boris BM, boromir, BtR-45, burevestnik, BZ, Centauro, Chainsaw, chervoncy, d.arsenal321, Demi87, DJUNTA, doktor097, Dolinc, dozorni, Drugsparrow, Dzoni2412, ElvisP, france93, gregorxix, Igor Antonic, istina, Ivan001, jackreacher011011, lucko1, mackenzie, mdp92, Mi lao shu, MiG-29M2, MIKI63, Mskok, Natuzzi, nekdo, niksa517, NMNJ, NNPD, nobutado, Pekman, procesor, raso76, redstar72, Relixiran, skvara, Sr.Stat., Srki94, Toper, Zeljo980, zlaya011, zmajbre, Zrcalo, Žoržo, šakalakazu