|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
19.5.2012, 22:29 | #21 |
Član
Član od: 4.11.2005.
Poruke: 285
Zahvalnice: 15
Zahvaljeno 7 puta na 6 poruka
|
Re: Pomoc oko programa u C-u
Evo mene opet .
Ovaj put je problem sledeci: imam neuredjenu ulancanu listu koja sadrzi opsege (pocetni interval i krajnji interval) i treba da ispisem one opsege koji se preklapaju. ovo treba da realizujem preko posebne funkcije. moja ideja je sledeca: prvi element uporedim sa ostalim, pa onda drugi sa svim ostalim sem sa prvim, pa onda treci sa svim ostalim sem sa prvim i drugim itd... i svaki put kada se pronadje preklapanje, ono se ispisuje. Kod:
/* poc i kr su promenljive u koje izvlacim podatak iz elementa koji se u trenutnoj iteraciji obradjuje */ /* prolazak kroz listu, trazenje i ispisivanje preklapanja vremena */ while(i<duz){ tek = prvi; if(i==1){ poc = tek->pocetak; kr = tek->kraj; //printf("%.2f %.2f \n", poc, kr); }/* kraj if-a */ if(i>1 && i<duz){ while(j!=i){tek=tek->sled;j++;} poc = tek->pocetak; kr = tek->kraj; //printf("%.2f %.2f \n", poc, kr); }/*kraj if-a */ tek=tek->sled; /*tekuci element se prebaci na sledeci, jer su promenljive izvucene iz trenutnog elementa */ while(tek->sled){ /* uslov za odredjivanje preklapanja */ if((poc < tek->pocetak && kr < tek->kraj) || (poc > tek->pocetak && kr > tek->kraj) || (poc > tek->pocetak && kr < tek->kraj) || (poc < tek->pocetak && kr > tek->kraj)) { printf("Preklapa se termin: %.2fh - %.2fh i %.2fh - %.2fh \n", poc, kr, tek->pocetak, tek->kraj); } tek=tek->sled; }/*kraj unutrasnjeg while */ i++;j=1; }/*kraj while*/ |
19.5.2012, 23:53 | #22 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.163
Zahvalnice: 2.082
Zahvaljeno 4.922 puta na 2.858 poruka
|
Re: Pomoc oko programa u C-u
Ovo ostalo mi je kupusasto a nisam trenutno pri koncentraciji, ali uslov možeš da postaviš i ovako (razbijeno na redove zbog čiljivosti), probaj i to
if ( !((početak 1 < početak 2) && (kraj 1 < početak 2)) && !((početak 1 > kraj 2) && (kraj 1 > kraj 2)) ) |
20.5.2012, 0:11 | #23 |
Član
Član od: 4.11.2005.
Poruke: 285
Zahvalnice: 15
Zahvaljeno 7 puta na 6 poruka
|
Re: Pomoc oko programa u C-u
Sad ga ubacih u kod, ali samo je preskocio to, tj nije nista ispisao.
Dal sam ja negde pogresio, ne znam... Uglavnom, sad vidim da je uslov pogresan, al' ne mogu da smislim kako bi valjan uslov izgledao. Ovo izgleda da radi, samo malo podugacak uslov Kod:
if ( (poc < tek->pocetak && kr > tek->pocetak && kr < tek->kraj) || (poc > tek->pocetak && poc < tek->kraj && kr > tek->kraj) || (poc > tek->pocetak && poc < tek->kraj && kr > tek->pocetak && kr < tek->kraj) || (poc < tek->pocetak && kr > tek->kraj)) |
20.5.2012, 11:06 | #24 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: Pomoc oko programa u C-u
Nisam siguran ali mislim da je ovo dovoljno za uslov:
Kod:
poc 1 < kraj2 && kraj1 > poc2 Poslednja ispravka: Belphegor (20.5.2012 u 11:27) |
21.5.2012, 20:49 | #25 |
Član
Član od: 4.11.2005.
Poruke: 285
Zahvalnice: 15
Zahvaljeno 7 puta na 6 poruka
|
Re: Pomoc oko programa u C-u
Pozdrav!
Opet imam problem. Naime, na osnovu liste koja sadrzi opsege, ja treba da formiram novu listu na sledeci nacin: - ako se dva elementa preklapaju, ubacujem u novu listu onaj sa vecim prioritetom - ako su prioriteti isti, ubacujem onaj ciji je pocetni deo opsega manji - one elemente koji se ne preklapaju ni sa jednim od ostalih takodje unosim u opseg kako bi idejno izgledalo resenje. ja sam smislio neku ogromnu skalameriju, ali ona ne radi za sve slucajeve. |
21.5.2012, 22:24 | #26 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.163
Zahvalnice: 2.082
Zahvaljeno 4.922 puta na 2.858 poruka
|
Re: Pomoc oko programa u C-u
Pa napravi baš tako kao što si napisao u te tri stavke.
|
21.5.2012, 22:33 | #27 |
Član
Član od: 4.11.2005.
Poruke: 285
Zahvalnice: 15
Zahvaljeno 7 puta na 6 poruka
|
Re: Pomoc oko programa u C-u
problem je sto ja poredim elemente dva po dva, bez predstave sta se desava u ostatku liste.
recimo, ako prilikom prolaska kroz listu ja naidjem na 4 slucaja preklapanja, moze da se desi da na osnovu ovih kriterijuma dvaput posaljem isti element u novu listu, pa ce mi nova lista dvaput sadrzati isti element. zato to ne radi. |
21.5.2012, 22:48 | #28 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.163
Zahvalnice: 2.082
Zahvaljeno 4.922 puta na 2.858 poruka
|
Re: Pomoc oko programa u C-u
Prva sporija varijanta: pre ubacivanja elementa u novu listu, pretrči kroz tu listu i vidi da li element već postoji
Druga efikasnija varijanta: u strukturu koja ti opisuje element ubaci novo polje koje služi da kaže da li je taj element ubačen u novu ili nije (npr int isProcessed koji može da bude 0 ili 1), i onda kad upoređuješ dva elementa, proveriš isProcessed polje elementa koga bi trebalo da ubaciš. Ako je 0, ubacuješ ga i setuješ na 1, ako je 1 znači da je već ubačeno i ne diraš ga. |
21.5.2012, 23:27 | #29 | |
Član
Član od: 4.11.2005.
Poruke: 285
Zahvalnice: 15
Zahvaljeno 7 puta na 6 poruka
|
Re: Pomoc oko programa u C-u
Citat:
Kopiram unetu listu u novu listu, i onda vrsim poredjenje - kadgod poredim dva elementa koji se preklapaju, brisem onaj koji ne ispunjava uslov? Rucno sam simulirao ovaj algoritam i cini mi se da bi radilo? --- vezano za prethodnu ideju: Takodje, muci me ovo kopiranje liste? Da li je ova funkcija dobra, tj da je dobra radila bi - sta ne valjda? Kod:
void kopiranje_liste (Elem **prvi, Elem **drugi){ Elem *novi, *trenutni, *pom; trenutni=(*prvi); while(trenutni) { novi=malloc(sizeof(Elem)); pom=novi; pom->mesto=trenutni->mesto; pom->pocetak=trenutni->pocetak; pom->kraj=trenutni->kraj; pom->prioritet=trenutni->prioritet; if((*drugi)==NULL) { *drugi=pom; } pom->sled=NULL; trenutni=trenutni->sled; } Poslednja ispravka: absonic (22.5.2012 u 1:48) |
|
Bookmarks sajtovi |
Alatke vezane za temu | |
Vrste prikaza | |
|
|
Slične teme | ||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Procena računara | alien | Šta da kupim? | 6942 | 17.12.2023 10:28 |
PASTE teksta, pomoc hitno potrebna | Kobilic | Kvarovi | 4 | 31.10.2011 15:48 |
Virus POMOC | Kobilic | otpaTci | 11 | 9.5.2011 19:21 |
Potrebna mi pomoc! | Snakebite | 2D radovi | 4 | 30.4.2009 1:08 |
Kako postici anonimnost kod koriscenja P2P programa | The Finest Serbian Since '82 | Internet tehnologije | 31 | 7.8.2007 1:35 |