Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Opet me C nervira- strukture
WWW:
Idite na Prethodno  1, 2, 3  Sljedeće
Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 2:42 sub, 13. 6. 2009    Naslov: Citirajte i odgovorite

Ne vidim problem. :| Ucitao sam a,1 i b,5 i ispisao mi je da je prosjek 3 i da je b skuplji od prosjeka. :) Sto si ti ucitala da ti ne radi? :-k

Usput, [tt]prosjek[/tt] je [tt]double[/tt], pa ti ne treba cast na [tt]double[/tt] u dijeljenju. :) Takodjer, [tt]%[color=red]l[/color]g[/tt] se koristi kod [tt]scanf()[/tt], ali ne i kod [tt]printf()[/tt]; za ispis je dosta [tt]%g[/tt]. :) No, niti jedno od ovoga nije greska... samo sitni viskovi. ;)
Ne vidim problem. Neutral Ucitao sam a,1 i b,5 i ispisao mi je da je prosjek 3 i da je b skuplji od prosjeka. Smile Sto si ti ucitala da ti ne radi? Think

Usput, prosjek je double, pa ti ne treba cast na double u dijeljenju. Smile Takodjer, %lg se koristi kod scanf(), ali ne i kod printf(); za ispis je dosta %g. Smile No, niti jedno od ovoga nije greska... samo sitni viskovi. Wink



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
lucika
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (17:52:27)
Postovi: (12F)16
Spol: žensko
Sarma = la pohva - posuda
24 = 34 - 10

PostPostano: 2:57 sub, 13. 6. 2009    Naslov: Citirajte i odgovorite

pa sto god upišem-uvijek ista stvar.evo recimo:
fico 100
mercedes 300
kraj

jer on prestaje učitavat kad se upiše kraj, ili...?
pa sto god upišem-uvijek ista stvar.evo recimo:
fico 100
mercedes 300
kraj

jer on prestaje učitavat kad se upiše kraj, ili...?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 8:04 sub, 13. 6. 2009    Naslov: Citirajte i odgovorite

[quote="lucika"]
[code:1]
scanf( " %[^\n]", naziv );
if( strcmp( naziv, "kraj" ) == 0 )
break;
[/code:1]
[/quote]

Zbog ovog prekida kad upišeš "kraj" ;)

A što ti još ne radi?
lucika (napisa):

Kod:
      
      scanf( " %[^\n]", naziv );
      if( strcmp( naziv, "kraj" ) == 0 )
          break;



Zbog ovog prekida kad upišeš "kraj" Wink

A što ti još ne radi?



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 11:33 sub, 13. 6. 2009    Naslov: Citirajte i odgovorite

Lucika, krivo ucitavas. :ccc: Pazi, ti ime ucitavas sa
[tt]scanf(" [b]%[^\n][/b]", naziv);[/tt]
sto znaci "ucitavaj do kraja linije". :? Dakle, umjesto
[code:1]fico 100
mercedes 300
kraj[/code:1]
trebas ucitavati
[code:1]fico
100
mercedes
300
kraj[/code:1]
8)
Lucika, krivo ucitavas. Ccc.... Sram te bilo... Pazi, ti ime ucitavas sa
scanf(" %[^\n]", naziv);
sto znaci "ucitavaj do kraja linije". Confused Dakle, umjesto
Kod:
fico 100
mercedes 300
kraj

trebas ucitavati
Kod:
fico
100
mercedes
300
kraj

Cool



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Milojko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 11. 2008. (14:57:52)
Postovi: (453)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
17 = 68 - 51
Lokacija: Hilbertov hotel

PostPostano: 12:54 sub, 13. 6. 2009    Naslov: Citirajte i odgovorite

tj, nakon što upišeš ime, moraš lupit [tt]Enter[/tt] i tek onda cijenu

e da, vsego, jesi probao odmah upisati "kraj"? javi da je [tt]prosjek = -1.#IND[/tt]. ne kužim zašto. jel nebi u tom slučaju prosjek trebao ostati na nuli, mislim, pa na nulu je inicijaliziran.
tj, nakon što upišeš ime, moraš lupit Enter i tek onda cijenu

e da, vsego, jesi probao odmah upisati "kraj"? javi da je prosjek = -1.#IND. ne kužim zašto. jel nebi u tom slučaju prosjek trebao ostati na nuli, mislim, pa na nulu je inicijaliziran.



_________________
Sedam je prost broj Smile

Bolonja je smeće i to pod hitno treba mijenjat
[Vrh]
Korisnički profil Pošaljite privatnu poruku MSNM
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 13:00 sub, 13. 6. 2009    Naslov: Citirajte i odgovorite

Dijeljenje s nulom? :D Meni ispise [tt]nan[/tt] (olitiga [b]n[/b]ot [b]a[/b] [b]n[/b]umber). 8)
Dijeljenje s nulom? Very Happy Meni ispise nan (olitiga not a number). Cool



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Milojko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 11. 2008. (14:57:52)
Postovi: (453)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
17 = 68 - 51
Lokacija: Hilbertov hotel

PostPostano: 13:01 uto, 16. 6. 2009    Naslov: Citirajte i odgovorite

[code:1]razlomak *deleten (razlomak *first, int n) {
int i = 0;
razlomak *pom;
if (!first) return NULL;
else {
pom = (razlomak*)malloc(sizeof(razlomak));
pom = first;
first = pom->next;
free(pom);
}
for (pom = first; pom; pom = pom->next) {
++i;
razlomak *tmp;
if (!(i%n)) {
tmp = (razlomak*)malloc(sizeof(razlomak));
tmp = pom;
pom = tmp->next;
free(tmp);
}
}
return first;
}[/code:1]
već neko vrijeme mi ovo čudo ne funkcionira
treba obrisati sveki n-ti iz liste
natipkao sam sad i drug rješenje. stižu u attachu obadva. nijedno ni drugo ne valja.

[size=9][color=#999999]Added after 6 minutes:[/color][/size]

original je obrisao prvoga, zatim svakom n-tom brojnik postavio na nulu.
ovaj drugi, 7,5.alt piši u brojnik svašta što nađe na nekoj, čini se, nealociranoj memoriji za brojnik
Kod:
razlomak *deleten (razlomak *first, int n) {
         int i = 0;
         razlomak *pom;
         if (!first) return NULL;
         else {
              pom = (razlomak*)malloc(sizeof(razlomak));
              pom = first;
              first = pom->next;
              free(pom);
              }
         for (pom = first; pom; pom = pom->next) {
             ++i;
             razlomak *tmp;
             if (!(i%n)) {
                         tmp = (razlomak*)malloc(sizeof(razlomak));
                         tmp = pom;
                         pom = tmp->next;
                         free(tmp);
                         }
             }
         return first;
}

već neko vrijeme mi ovo čudo ne funkcionira
treba obrisati sveki n-ti iz liste
natipkao sam sad i drug rješenje. stižu u attachu obadva. nijedno ni drugo ne valja.

Added after 6 minutes:

original je obrisao prvoga, zatim svakom n-tom brojnik postavio na nulu.
ovaj drugi, 7,5.alt piši u brojnik svašta što nađe na nekoj, čini se, nealociranoj memoriji za brojnik



_________________
Sedam je prost broj Smile

Bolonja je smeće i to pod hitno treba mijenjat



7,5.c
 Description:

Download
 Filename:  7,5.c
 Filesize:  1.79 KB
 Downloaded:  117 Time(s)


7,5.alt.c
 Description:

Download
 Filename:  7,5.alt.c
 Filesize:  1.73 KB
 Downloaded:  95 Time(s)

[Vrh]
Korisnički profil Pošaljite privatnu poruku MSNM
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 13:14 uto, 16. 6. 2009    Naslov: Citirajte i odgovorite

Cemu ovi [tt]malloc()[/tt]-i sluze ako [b]BRISES[/b] iz liste?! :shock: Da alociras memoriju koju odmah u iducoj lajni "pogubis", tj. izgubis pointer na tu memoriju, ali ona ostane zauzeta? :ccc:

Nadalje, prvi i bilo koji drugi element se ne brisu isto. :? Ti oslobodis [tt]tmp[/tt] i [tt]pom[/tt] nekako pomaknes... probaj nacrtati listu i onda po crtezu raditi sto radi tvoj program. :?

Brisanje iz liste je objasnjeno u dostupnim materijalima, pa necu sada raspisivati kako se to radi. :)
Cemu ovi malloc()-i sluze ako BRISES iz liste?! Shocked Da alociras memoriju koju odmah u iducoj lajni "pogubis", tj. izgubis pointer na tu memoriju, ali ona ostane zauzeta? Ccc.... Sram te bilo...

Nadalje, prvi i bilo koji drugi element se ne brisu isto. Confused Ti oslobodis tmp i pom nekako pomaknes... probaj nacrtati listu i onda po crtezu raditi sto radi tvoj program. Confused

Brisanje iz liste je objasnjeno u dostupnim materijalima, pa necu sada raspisivati kako se to radi. Smile



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
lucika
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (17:52:27)
Postovi: (12F)16
Spol: žensko
Sarma = la pohva - posuda
24 = 34 - 10

PostPostano: 0:57 čet, 18. 6. 2009    Naslov: Citirajte i odgovorite

ja sam to ovako:

[code:1]
#include<stdio.h>
#include<stdlib.h>

typedef struct _cvor{
int brojnik, nazivnik;
struct _cvor *next;
} cvor;

cvor *del( cvor *L, int n){
cvor *tren, *preth=NULL;
int br=0;
if(n==1){
for(tren=L; tren!=NULL; tren=tren->next){

cvor *temp=L->next;
free(L);
L=temp;
}
}
else{
for (tren=L; tren!=NULL;){
br++;
if(br%n==0){
preth->next=tren->next;
free(tren);
tren=preth->next;
}
else{
preth=tren;
tren=tren->next;
}
}
}
}
cvor *dodajNaPocetak( cvor *L, int x, int y )
{
cvor *novi;

novi = ( cvor * ) malloc( sizeof( cvor ) );
novi->brojnik = x;
novi->nazivnik = y;

novi->next = L;
L = novi;

return L;
}


int main(){
cvor *L=NULL, *tren;
int n;
scanf("%d", &n);
while(1){

int x, y;
scanf("%d/%d", &x, &y);
if(y==0) break;
L=dodajNaPocetak(L, x, y);
}

for(tren=L; tren!=NULL; tren=tren->next)
printf("%d/%d ", tren->brojnik, tren->nazivnik);
printf("\n");

del(L, n);

for(tren=L; tren!=NULL; tren=tren->next)
printf("%d/%d ", tren->brojnik, tren->nazivnik);
printf("\n");

scanf("%%");
return 0;
}
[/code:1]
8)
u biti tek sad vidim da ne radi za n=1...hm
ja sam to ovako:

Kod:

#include<stdio.h>
#include<stdlib.h>

typedef struct _cvor{
        int brojnik, nazivnik;
        struct _cvor *next;
        } cvor;
       
cvor *del( cvor *L, int n){
      cvor *tren, *preth=NULL;
      int br=0;
      if(n==1){
               for(tren=L; tren!=NULL; tren=tren->next){
                           
               cvor *temp=L->next;
               free(L);
               L=temp;
               }
               }
      else{         
      for (tren=L; tren!=NULL;){
          br++;
          if(br%n==0){
                       preth->next=tren->next;
                       free(tren);
                       tren=preth->next;
                       }
          else{
               preth=tren;
               tren=tren->next;
               }
               }
               }
               }         
    cvor *dodajNaPocetak( cvor *L, int x, int y )
{
   cvor *novi;
   
   novi = ( cvor * ) malloc( sizeof( cvor ) );
   novi->brojnik = x;
   novi->nazivnik = y;
   
   novi->next = L;
   L = novi;
   
   return L;
}
         
         
int main(){
    cvor *L=NULL, *tren;
    int n;
    scanf("%d", &n);
    while(1){
   
    int x, y;
    scanf("%d/%d", &x, &y);
    if(y==0) break;
    L=dodajNaPocetak(L, x, y);
    }
   
    for(tren=L; tren!=NULL; tren=tren->next)
    printf("%d/%d ", tren->brojnik, tren->nazivnik);
    printf("\n");
   
    del(L, n);
   
    for(tren=L; tren!=NULL; tren=tren->next)
    printf("%d/%d ", tren->brojnik, tren->nazivnik);
    printf("\n");
   
    scanf("%%");
    return 0;
}

Cool
u biti tek sad vidim da ne radi za n=1...hm


[Vrh]
Korisnički profil Pošaljite privatnu poruku
GauSs_
Moderator
Moderator


Pridružen/a: 28. 01. 2004. (21:01:17)
Postovi: (53C)16
Spol: muško
Sarma = la pohva - posuda
72 = 110 - 38
Lokacija: 231

PostPostano: 9:41 čet, 18. 6. 2009    Naslov: Citirajte i odgovorite

[quote]u biti tek sad vidim da ne radi za n=1...hm[/quote]

za n=1 bi zadatak glasio [b]izbrisi cijelu listu[/b] ;)
tako da nije propust
Citat:
u biti tek sad vidim da ne radi za n=1...hm


za n=1 bi zadatak glasio izbrisi cijelu listu Wink
tako da nije propust



_________________
The purpose of life is to end
Malo sam lose volje...

Prosle su godine kolokviji bili laksi, zar ne?
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 10:02 čet, 18. 6. 2009    Naslov: Citirajte i odgovorite

Pa, propust je sto to ne radi dobro:
[code:1]for(tren = L; tren != NULL; tren = tren->next){
cvor *temp = L->next;
free(L);
L = temp;
}[/code:1]
Dakle, ovo [tt]tren = tren->next[/tt] ce nakon prvog koraka petlje dereferencirati [tt]tren[/tt] koji je u tom trenutku isto sto i [tt]L[/tt] koji je dealociran... :?

Brisanje cijele liste pise u skripti, pa necu prepisivati ovdje. :)
Pa, propust je sto to ne radi dobro:
Kod:
for(tren = L; tren != NULL; tren = tren->next){
  cvor *temp = L->next;
  free(L);
  L = temp;
}

Dakle, ovo tren = tren→next ce nakon prvog koraka petlje dereferencirati tren koji je u tom trenutku isto sto i L koji je dealociran... Confused

Brisanje cijele liste pise u skripti, pa necu prepisivati ovdje. Smile



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
lucika
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (17:52:27)
Postovi: (12F)16
Spol: žensko
Sarma = la pohva - posuda
24 = 34 - 10

PostPostano: 18:52 čet, 18. 6. 2009    Naslov: Citirajte i odgovorite

pogladala sam u skriptu, pa po uzoru na to promjenila dio koda. ovo bi sada trebalo biti ispravno ali opet ne briše cijelu listu :x
[code:1]
if(n==1){
for ( tren=L; tren!=NULL; tren=temp ) {
temp = tren->next ;
free ( tren ) ;
}
}
[/code:1]
pogladala sam u skriptu, pa po uzoru na to promjenila dio koda. ovo bi sada trebalo biti ispravno ali opet ne briše cijelu listu Mad
Kod:

if(n==1){
               for ( tren=L; tren!=NULL; tren=temp ) {
                temp = tren->next ;
                free ( tren ) ;
               }
               }


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 19:10 čet, 18. 6. 2009    Naslov: Citirajte i odgovorite

Brise, brise... 8) Ako ju ti ispisujes, to znaci da kreces od dealociranog [tt]L[/tt] i slijedis strelice po dealociranoj memoriji... a te podatke moze u bilo kojem trenu bilo koji drugi program izmijeniti. :?
Brise, brise... Cool Ako ju ti ispisujes, to znaci da kreces od dealociranog L i slijedis strelice po dealociranoj memoriji... a te podatke moze u bilo kojem trenu bilo koji drugi program izmijeniti. Confused



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
lucika
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (17:52:27)
Postovi: (12F)16
Spol: žensko
Sarma = la pohva - posuda
24 = 34 - 10

PostPostano: 22:49 čet, 18. 6. 2009    Naslov: Citirajte i odgovorite

ma da?! a zato su mi ti čudni brojevi na ekranu...kuuuuuuuulll :D
hvalaaaaaa :bananagreen:
ma da?! a zato su mi ti čudni brojevi na ekranu...kuuuuuuuulll Very Happy
hvalaaaaaa Zelena banana (konacno jedna normalna)


[Vrh]
Korisnički profil Pošaljite privatnu poruku
lucika
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (17:52:27)
Postovi: (12F)16
Spol: žensko
Sarma = la pohva - posuda
24 = 34 - 10

PostPostano: 23:41 pet, 19. 6. 2009    Naslov: Citirajte i odgovorite

zašto nema rješenja od 5. zadatka iz prošlogodišnjeg kolokvija na webu? :(
dakle, zadatak glasi:

"Napišite modi ciranu de finiciju tipa podatka duzina iz 2. zadatka tako da taj tip sada reprezentira jedan čvor
vezane liste dužina. Nakon toga napišite funkciju izbaci koja će iz vezane liste izbaciti sve one dužine čija duljina
je jednaka duljini dužine koja se nalazi neposredno ispred u vezanoj listi.
[color=red]U istoj funkciji, nakon izbacivanja na početak liste treba dodati novi čvor koji će predstavljati dužinu čija je
duljina jednaka broju izbačenih čvorova. (Vrhove odaberite po želji.)[/color]
Napišite primjer poziva funkcije iz glavnog programa."

ne kužim crveni dio...ok, broj izbačenih čvorova mogu dobit tako da svaki put kad izbacujem jedan čvor - povečam brojač za jedan.

i pošto piše da vrhove mogu proizvoljno odabrat- recimo da su mi x1=y1=0, kak da odredim ostala 2 vrha a da duljina bude ova koja se traži :?:

i jel mi dobar barem ovaj dio fje koji izbacuje:
[code:1]
typedef struct _cvor{
double x0, y0, x1, y1;
struct _cvor *next;
}cvor; //duzina


double duljina(cvor *d){
double z=(d->x0 - d->x1)* (d->x0 - d->x1) + (d->y0 -d->y1)* (d->y0 - d->y1);
return sqrt(z);
}


cvor *izbaci(cvor *L){
cvor *tren;
tren=L;
int br=0;
while(tren->next!=NULL){
if( duljina(tren) == duljina(tren->next) ){
br++;
tren->next=tren->next->next;
free(tren->next);
}
else{
tren=tren->next;
}
}
return L;
}
[/code:1]
zašto nema rješenja od 5. zadatka iz prošlogodišnjeg kolokvija na webu? Sad
dakle, zadatak glasi:

"Napišite modi ciranu de finiciju tipa podatka duzina iz 2. zadatka tako da taj tip sada reprezentira jedan čvor
vezane liste dužina. Nakon toga napišite funkciju izbaci koja će iz vezane liste izbaciti sve one dužine čija duljina
je jednaka duljini dužine koja se nalazi neposredno ispred u vezanoj listi.
U istoj funkciji, nakon izbacivanja na početak liste treba dodati novi čvor koji će predstavljati dužinu čija je
duljina jednaka broju izbačenih čvorova. (Vrhove odaberite po želji.)

Napišite primjer poziva funkcije iz glavnog programa."

ne kužim crveni dio...ok, broj izbačenih čvorova mogu dobit tako da svaki put kad izbacujem jedan čvor - povečam brojač za jedan.

i pošto piše da vrhove mogu proizvoljno odabrat- recimo da su mi x1=y1=0, kak da odredim ostala 2 vrha a da duljina bude ova koja se traži Question

i jel mi dobar barem ovaj dio fje koji izbacuje:
Kod:

typedef struct _cvor{
        double x0, y0, x1, y1;
        struct _cvor *next;
        }cvor;                  //duzina
       
       
double duljina(cvor *d){
       double z=(d->x0 - d->x1)* (d->x0 - d->x1) + (d->y0 -d->y1)* (d->y0 - d->y1);
       return sqrt(z);
       } 
       
             
cvor *izbaci(cvor *L){
     cvor *tren;
     tren=L;
     int br=0;
     while(tren->next!=NULL){
           if( duljina(tren) == duljina(tren->next) ){
              br++;
              tren->next=tren->next->next;
              free(tren->next);
              }
           else{
                tren=tren->next;
                }     
     }
     return L;
     }
     


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 0:12 sub, 20. 6. 2009    Naslov: Citirajte i odgovorite

[quote="lucika"]zašto nema rješenja od 5. zadatka iz prošlogodišnjeg kolokvija na webu? :([/quote]

Zato jer asistent koji je to zadavao nije napisao rjesenje. :D Nesto mozete i sami rijesiti. :tapsh:

[quote="lucika"]"Napišite modi ciranu de finiciju tipa podatka duzina iz 2. zadatka tako da taj tip sada reprezentira jedan čvor
vezane liste dužina. Nakon toga napišite funkciju izbaci koja će iz vezane liste izbaciti sve one dužine čija duljina
je jednaka duljini dužine koja se nalazi neposredno ispred u vezanoj listi.
[color=red]U istoj funkciji, nakon izbacivanja na početak liste treba dodati novi čvor koji će predstavljati dužinu čija je
duljina jednaka broju izbačenih čvorova. (Vrhove odaberite po želji.)[/color]
Napišite primjer poziva funkcije iz glavnog programa."
ne kužim crveni dio...ok, broj izbačenih čvorova mogu dobit tako da svaki put kad izbacujem jedan čvor - povečam brojač za jedan.
i pošto piše da vrhove mogu proizvoljno odabrat- recimo da su mi x1=y1=0, kak da odredim ostala 2 vrha a da duljina bude ova koja se traži :?:[/quote]

Ako izbacis [tt]d[/tt] cvorova, nova duzina moze biti [tt](0,0)-(0,d)[/tt] ili [tt](0,0)-(d,0)[/tt] ili [tt](-d/2,0)-(d/2,0)[/tt] ili [tt](0,d/sqrt(2))-(d/sqrt(2),0)[/tt] ili... 8)

[quote="lucika"]i jel mi dobar barem ovaj dio fje koji izbacuje:[/quote]

Ne, sorry. :ccc:

[code:1] tren->next=tren->next->next;
free(tren->next);[/code:1]

Dakle, ti kazes da [tt]tren->next[/tt] pokazuje na sljedbenika onoga koga zelis obrisati i onda [b]TU memoriju[/b] oslobodis. :joooj:

Skiciraj si listu i radi to korak po korak, pa ces vidjeti. :)

To treba ovako:
[code:1] cvor *tmp = tren->next;
tren->next = tren->next->next;
free(tmp);[/code:1]
8)
lucika (napisa):
zašto nema rješenja od 5. zadatka iz prošlogodišnjeg kolokvija na webu? Sad


Zato jer asistent koji je to zadavao nije napisao rjesenje. Very Happy Nesto mozete i sami rijesiti. Tapsh, tapsh,...

lucika (napisa):
"Napišite modi ciranu de finiciju tipa podatka duzina iz 2. zadatka tako da taj tip sada reprezentira jedan čvor
vezane liste dužina. Nakon toga napišite funkciju izbaci koja će iz vezane liste izbaciti sve one dužine čija duljina
je jednaka duljini dužine koja se nalazi neposredno ispred u vezanoj listi.
U istoj funkciji, nakon izbacivanja na početak liste treba dodati novi čvor koji će predstavljati dužinu čija je
duljina jednaka broju izbačenih čvorova. (Vrhove odaberite po želji.)

Napišite primjer poziva funkcije iz glavnog programa."
ne kužim crveni dio...ok, broj izbačenih čvorova mogu dobit tako da svaki put kad izbacujem jedan čvor - povečam brojač za jedan.
i pošto piše da vrhove mogu proizvoljno odabrat- recimo da su mi x1=y1=0, kak da odredim ostala 2 vrha a da duljina bude ova koja se traži Question


Ako izbacis d cvorova, nova duzina moze biti (0,0)-(0,d) ili (0,0)-(d,0) ili (-d/2,0)-(d/2,0) ili (0,d/sqrt(2))-(d/sqrt(2),0) ili... Cool

lucika (napisa):
i jel mi dobar barem ovaj dio fje koji izbacuje:


Ne, sorry. Ccc.... Sram te bilo...

Kod:
              tren->next=tren->next->next;
              free(tren->next);


Dakle, ti kazes da tren→next pokazuje na sljedbenika onoga koga zelis obrisati i onda TU memoriju oslobodis. Joj, joj, joj,... JOOOJ!

Skiciraj si listu i radi to korak po korak, pa ces vidjeti. Smile

To treba ovako:
Kod:
              cvor *tmp = tren->next;
              tren->next = tren->next->next;
              free(tmp);

Cool



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
lucika
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (17:52:27)
Postovi: (12F)16
Spol: žensko
Sarma = la pohva - posuda
24 = 34 - 10

PostPostano: 0:37 sub, 20. 6. 2009    Naslov: Citirajte i odgovorite

[code:1]
Ako izbacis d cvorova, nova duzina moze biti (0,0)-(0,d) ili (0,0)-(d,0) ili (-d/2,0)-(d/2,0) ili (0,d/sqrt(2))-(d/sqrt(2),0) ili... Cool
[/code:1]
vidi stvarno...ma znala sam da je neš s nulama najjednostavnije :)

[code:1]
Dakle, ti kazes da tren->next pokazuje na sljedbenika onoga koga zelis obrisati i onda TU memoriju oslobodis. Joj, joj, joj,... JOOOJ!

Skiciraj si listu i radi to korak po korak, pa ces vidjeti. Smile
[/code:1]

već po neznam koji put radim istu grešku, jao meni!!!
niš mi ne preostaje nego crtati, crtati i crtati :wink:

fala ljepa :D
Kod:

Ako izbacis d cvorova, nova duzina moze biti (0,0)-(0,d) ili (0,0)-(d,0) ili (-d/2,0)-(d/2,0) ili (0,d/sqrt(2))-(d/sqrt(2),0) ili... Cool

vidi stvarno...ma znala sam da je neš s nulama najjednostavnije Smile

Kod:

Dakle, ti kazes da tren->next pokazuje na sljedbenika onoga koga zelis obrisati i onda TU memoriju oslobodis. Joj, joj, joj,... JOOOJ!

Skiciraj si listu i radi to korak po korak, pa ces vidjeti. Smile


već po neznam koji put radim istu grešku, jao meni!!!
niš mi ne preostaje nego crtati, crtati i crtati Wink

fala ljepa Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 1:52 sub, 20. 6. 2009    Naslov: Citirajte i odgovorite

Kako u cetvrtak rekoh na konzultacijama: za liste, crtanje je prakticki nuzno. :) Ja ne crtam samo kad si mogu stvar vizualizirati (dakle nacrtati) u glavi. 8)
Kako u cetvrtak rekoh na konzultacijama: za liste, crtanje je prakticki nuzno. Smile Ja ne crtam samo kad si mogu stvar vizualizirati (dakle nacrtati) u glavi. Cool



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
malena
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 27. 03. 2009. (16:43:42)
Postovi: (62)16
Spol: žensko
Sarma = la pohva - posuda
= 9 - 8
Lokacija: ...

PostPostano: 9:14 sub, 20. 6. 2009    Naslov: Citirajte i odgovorite

pozdrav, je li problem pogledati sljedeca dva koda vidjela san slican kod na forumu ali se ne snalazin bas u tudim kodovima pa ako netko samo moze prepraviti moj...
tnx

[size=9][color=#999999]Added after 43 seconds:[/color][/size]

[code:1]#include <stdio.h>
#include <stdlib.h>

typedef struct _razlomak{
int br, naz;
struct _razlomak *next;
}razlomak;

razlomak *ubaci(razlomak *prvi, int x, int y){
razlomak *n=(razlomak*)malloc(sizeof(razlomak));
n->br=x;
n->naz=y;
n->next=prvi;
return n;
}

razlomak *deleten(razlomak *prvi, int n){
razlomak *pom, *del;
int i;
pom=prvi;
prvi=prvi->next;
free(pom);
if(!prvi) return NULL;
else{
pom=prvi;
i=1;
while(pom){
if(i%n==0){
del=pom;
pom=pom->next;
free(del);
i++;
}
else{
pom=pom->next;
i++;
}
}
}
return prvi;
}

void ispis(razlomak *f){
for(; f; f=f->next){
printf("Br= %d ,Naz= %d\n", f->br, f->naz);
}
}

int main(){
razlomak *x=NULL;
int n;
x=ubaci(x, 2, 3);
x=ubaci(x, 4, 5);
x=ubaci(x, 5, 6);
x=ubaci(x, 6, 7);
x=ubaci(x, 7, 8);

printf("Koji po redu brisemo:\n");
scanf("%d", &n);

printf("\n\nPrije deleten:\n");
ispis(x);
deleten(x, n);
printf("\nNakon deleten:\n");
if(x==NULL) printf("\nOde cila lista!\n");
else ispis(x);

system("PAUSE");
return 0;
}




[/code:1]

[size=9][color=#999999]Added after 43 seconds:[/color][/size]

[code:1]#include <stdio.h>
#include <stdlib.h>

typedef struct _razlomak{
int br, naz;
struct _razlomak *next;
}razlomak;

razlomak *ubaci(razlomak *f, int x, int y){
razlomak *t=(razlomak*)malloc(sizeof(razlomak));
t->br=x;
t->naz=y;
t->next=f;
return t;
}

razlomak *deleteneg(razlomak *p){
razlomak *pom, *del;
if(p->br<0 || p->naz<0){
del=p;
p=p->next;
free(del);
}
pom=p;
while(pom->next){
if(pom->next->br<0 || pom->next->naz<0){
del=pom->next;
pom=del->next;
free(del);
}
pom=pom->next;
}
return p;
}

void ispis(razlomak *f){
for(; f; f=f->next){
printf("Br= %d / Naz= %d\n", f->br, f->naz);
}
}

int main(){
razlomak *x=NULL;
x=ubaci(x, 2, 3);
x=ubaci(x, -3, 5);
x=ubaci(x, 4, -7);
x=ubaci(x, 1, 8);
printf("\n\nPrije brisanja negativnih:\n");
ispis(x);
deleteneg(x);
printf("\nNakon brisanja negativnih:\n");
ispis(x);

system("PAUSE");
return 0;
}


[/code:1]
pozdrav, je li problem pogledati sljedeca dva koda vidjela san slican kod na forumu ali se ne snalazin bas u tudim kodovima pa ako netko samo moze prepraviti moj...
tnx

Added after 43 seconds:

Kod:
#include <stdio.h>
#include <stdlib.h>

typedef struct _razlomak{
        int br, naz;
        struct _razlomak *next;
        }razlomak;

razlomak *ubaci(razlomak *prvi, int x, int y){
         razlomak *n=(razlomak*)malloc(sizeof(razlomak));
         n->br=x;
         n->naz=y;
         n->next=prvi;
         return n;
         }

razlomak *deleten(razlomak *prvi, int n){
         razlomak *pom, *del;
         int i;
         pom=prvi;
         prvi=prvi->next;
         free(pom);
         if(!prvi) return NULL;
         else{
              pom=prvi;
              i=1;
              while(pom){
                          if(i%n==0){
                                  del=pom;
                                  pom=pom->next;
                                  free(del);
                                  i++;
                                  }
                          else{
                            pom=pom->next;
                            i++;
                            }
                   }
              }     
         return prvi;
         }

void ispis(razlomak *f){
     for(; f; f=f->next){
           printf("Br= %d  ,Naz= %d\n", f->br, f->naz);
           }
           }

int main(){
    razlomak *x=NULL;
    int n;
    x=ubaci(x, 2, 3);
    x=ubaci(x, 4, 5);
    x=ubaci(x, 5, 6);
    x=ubaci(x, 6, 7);
    x=ubaci(x, 7, 8);
   
    printf("Koji po redu brisemo:\n");
    scanf("%d", &n);
   
    printf("\n\nPrije deleten:\n");
    ispis(x);
    deleten(x, n);
    printf("\nNakon deleten:\n");
    if(x==NULL) printf("\nOde cila lista!\n");
    else ispis(x);
   
    system("PAUSE");
    return 0;
}
                                 
         
         
       


Added after 43 seconds:

Kod:
#include <stdio.h>
#include <stdlib.h>

typedef struct _razlomak{
        int br, naz;
        struct _razlomak *next;
        }razlomak;

razlomak *ubaci(razlomak *f, int x, int y){
         razlomak *t=(razlomak*)malloc(sizeof(razlomak));
         t->br=x;
         t->naz=y;
         t->next=f;
         return t;
         }

razlomak *deleteneg(razlomak *p){
         razlomak *pom, *del;
         if(p->br<0 || p->naz<0){
                    del=p;
                    p=p->next;
                    free(del);
                    }
         pom=p;
         while(pom->next){
                    if(pom->next->br<0 || pom->next->naz<0){
                                 del=pom->next;
                                 pom=del->next;
                                 free(del);
                                 }
                                 pom=pom->next;
                    }
         return p;
         }

void ispis(razlomak *f){
     for(; f; f=f->next){
           printf("Br= %d / Naz= %d\n", f->br, f->naz);
           }
           }

int main(){
    razlomak *x=NULL;
    x=ubaci(x, 2, 3);
    x=ubaci(x, -3, 5);
    x=ubaci(x, 4, -7);
    x=ubaci(x, 1, 8);
    printf("\n\nPrije brisanja negativnih:\n");
    ispis(x);
    deleteneg(x);
    printf("\nNakon brisanja negativnih:\n");
    ispis(x);
   
    system("PAUSE");
    return 0;
}
         
                                 


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 10:27 sub, 20. 6. 2009    Naslov: Citirajte i odgovorite

Prvi isprobaj na racunalu: za neke [tt]n[/tt] ce se sigurno srusiti. :?

Drugi ima pogresan uvjet za brisanje (sto ako su i brojnik i nazivnik negativni?), te ne brise prvog neovisno o uvjetu. :|

Nisam jako detaljno gledao, pa je moguce da ima i koja sporadicna greska. :)
Prvi isprobaj na racunalu: za neke n ce se sigurno srusiti. Confused

Drugi ima pogresan uvjet za brisanje (sto ako su i brojnik i nazivnik negativni?), te ne brise prvog neovisno o uvjetu. Neutral

Nisam jako detaljno gledao, pa je moguce da ima i koja sporadicna greska. Smile



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Idite na Prethodno  1, 2, 3  Sljedeće
Stranica 2 / 3.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan