Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 19.5.2012, 22:29   #21
absonic
Član
 
Član od: 4.11.2005.
Poruke: 285
Zahvalnice: 15
Zahvaljeno 7 puta na 6 poruka
Određen forumom 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*/
medjutim, koliko vidim, samo prvo preklapanje se lepo ispise, ostatak je nesto neartikulisano
absonic je offline   Odgovor sa citatom ove poruke
Stara 19.5.2012, 23:53   #22
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 11.163
Zahvalnice: 2.082
Zahvaljeno 4.922 puta na 2.858 poruka
Određen forumom 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))
)
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 20.5.2012, 0:11   #23
absonic
Član
 
Član od: 4.11.2005.
Poruke: 285
Zahvalnice: 15
Zahvaljeno 7 puta na 6 poruka
Određen forumom 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))
absonic je offline   Odgovor sa citatom ove poruke
Stara 20.5.2012, 11:06   #24
Belphegor
V.I.P. Programiranje
 
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
Određen forumom 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)
Belphegor je offline   Odgovor sa citatom ove poruke
Stara 21.5.2012, 20:49   #25
absonic
Član
 
Član od: 4.11.2005.
Poruke: 285
Zahvalnice: 15
Zahvaljeno 7 puta na 6 poruka
Određen forumom 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.
absonic je offline   Odgovor sa citatom ove poruke
Stara 21.5.2012, 22:24   #26
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 11.163
Zahvalnice: 2.082
Zahvaljeno 4.922 puta na 2.858 poruka
Određen forumom Re: Pomoc oko programa u C-u

Pa napravi baš tako kao što si napisao u te tri stavke.
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 21.5.2012, 22:33   #27
absonic
Član
 
Član od: 4.11.2005.
Poruke: 285
Zahvalnice: 15
Zahvaljeno 7 puta na 6 poruka
Određen forumom Re: Pomoc oko programa u C-u

Citat:
voodoo_ kaže: Pregled poruke
Pa napravi baš tako kao što si napisao u te tri stavke.
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.
absonic je offline   Odgovor sa citatom ove poruke
Stara 21.5.2012, 22:48   #28
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 11.163
Zahvalnice: 2.082
Zahvaljeno 4.922 puta na 2.858 poruka
Određen forumom 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.
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 21.5.2012, 23:27   #29
absonic
Član
 
Član od: 4.11.2005.
Poruke: 285
Zahvalnice: 15
Zahvaljeno 7 puta na 6 poruka
Određen forumom Re: Pomoc oko programa u C-u

Citat:
voodoo_ kaže: Pregled poruke
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.
A da li bi ova varijanta bila prihvatljiva:

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)
absonic je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


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


Sva vremena su po Griniču +2 h. Sada je 10:13.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com