|
Poslao: 09 Sep 2007 22:39
|
offline
- Svemirko
- Legendarni građanin
- 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
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.
|
|
|
Poslao: 09 Sep 2007 22:56
|
offline
- igor86

- 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++)
?
|
|
|
|
|
|
|
Poslao: 10 Sep 2007 00:05
|
offline
- Svemirko
- Legendarni građanin
- 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 !
#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
|
|
|
|
|
|
|
Poslao: 10 Sep 2007 14:06
|
offline
- LaserJat

- Super građanin
- 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
|
|
|
|
|
|
|
Poslao: 10 Sep 2007 19:39
|
offline
- Svemirko
- Legendarni građanin
- 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
aj probaj, meni ovo lepo radi..... mislim da nema rupa ?!
|
|
|
|
|
|
|
Poslao: 10 Sep 2007 20:32
|
offline
- Bone Collector

- Legendarni građanin
- 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
Ako mislis na petlju "for(j = i+1; j < x; j++)", u tu petlju ni ne ulazi jer ne zadovoljava uslov "j < x"
|
|
|
|
|
|
|
Poslao: 10 Sep 2007 21:26
|
offline
- LaserJat

- Super građanin
- 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
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
|
|
|
|
|
|