Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
dosed_girl Forumaš(ica)


Pridružen/a: 04. 12. 2006. (21:01:46) Postovi: (6F)16
Spol: 
Lokacija: -zG-
|
|
[Vrh] |
|
m00nblade Forumaš(ica)

Pridružen/a: 30. 10. 2005. (13:26:10) Postovi: (54)16
Spol: 
|
Postano: 11:34 čet, 19. 6. 2008 Naslov: |
|
|
kad ti druga while petlja zavrsi, t pokazuje na onaj element kojeg treba brisati, ali ne znas koji mu je prethodni element... bolje bi ti bilo da ti while petlja bude:
[code:1]
while (t != NULL && br < n) {
t = t->next;
br++;
}
[/code:1]
i onda, ako je t != NULL, ti t->next pokazuje na onaj element kojeg treba brisati
onda stavis:
[code:1]
if (!t)
break;
pom = t->next;
if (!pom)
break;
t->next = pom->next;
free(pom);
t = t->next;
[/code:1]
kad ti druga while petlja zavrsi, t pokazuje na onaj element kojeg treba brisati, ali ne znas koji mu je prethodni element... bolje bi ti bilo da ti while petlja bude:
Kod: |
while (t != NULL && br < n) {
t = t->next;
br++;
}
|
i onda, ako je t != NULL, ti t→next pokazuje na onaj element kojeg treba brisati
onda stavis:
Kod: |
if (!t)
break;
pom = t->next;
if (!pom)
break;
t->next = pom->next;
free(pom);
t = t->next;
|
_________________ Real programmers don't comment their code. If it was hard to write, it should be hard to read.
|
|
[Vrh] |
|
dosed_girl Forumaš(ica)


Pridružen/a: 04. 12. 2006. (21:01:46) Postovi: (6F)16
Spol: 
Lokacija: -zG-
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
Postano: 15:36 čet, 19. 6. 2008 Naslov: |
|
|
[code:1] while(n!=br){
t=t->next;
br++;
}[/code:1]
Sto se desi ako u ovoj petlji dodjes do kraja liste? :-k Recimo, lista ima 7 elemenata i ti brises svakog petog. :)
Hint: u jednom trenutku ce biti [tt]t == NULL[/tt], ali ti neces izaci iz petlje, nego ces izvesti
[tt]t = t->next;[/tt]
sto je ekvivalentno
[tt]t = ([color=red]*[/color]t).next;[/tt]
tj. dereferenciras [tt]NULL[/tt]. :ccc:
P.S. Cini mi se da zadatak trazi brisanje svakog [i]n[/i]-tog [b]pocevsi od prvog[/b], no nisam siguran ovako, na pamet. :)
Kod: | while(n!=br){
t=t->next;
br++;
} |
Sto se desi ako u ovoj petlji dodjes do kraja liste? Recimo, lista ima 7 elemenata i ti brises svakog petog.
Hint: u jednom trenutku ce biti t == NULL, ali ti neces izaci iz petlje, nego ces izvesti
t = t→next;
sto je ekvivalentno
t = (*t).next;
tj. dereferenciras NULL.
P.S. Cini mi se da zadatak trazi brisanje svakog n-tog pocevsi od prvog, no nisam siguran ovako, na pamet.
_________________ 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. 
|
|
[Vrh] |
|
Atomised Forumaš(ica)


Pridružen/a: 04. 09. 2007. (15:33:59) Postovi: (399)16
Lokacija: Exotica
|
|
[Vrh] |
|
mibo Forumaš(ica)


Pridružen/a: 04. 10. 2007. (14:52:50) Postovi: (51)16
Spol: 
Lokacija: /var/tmp
|
Postano: 6:57 pon, 23. 6. 2008 Naslov: |
|
|
Započeo sam tako nešto... do 29.06. ću vjerojatno update-ati sa još par funkcija. 8)
Ako tko uoči kakvu gr(ij)ešku, neka javi.
[url]http://degiorgi.math.hr/forum/images/posts/mibo/c/libvezlis.c.html[/url]
Započeo sam tako nešto... do 29.06. ću vjerojatno update-ati sa još par funkcija.
Ako tko uoči kakvu gr(ij)ešku, neka javi.
http://degiorgi.math.hr/forum/images/posts/mibo/c/libvezlis.c.html
_________________ WAR IS PEACE
FREEDOM IS SLAVERY
IGNORANCE IS STRENGTH
George Orwell: 1984
|
|
[Vrh] |
|
Atomised Forumaš(ica)


Pridružen/a: 04. 09. 2007. (15:33:59) Postovi: (399)16
Lokacija: Exotica
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
Atomised Forumaš(ica)


Pridružen/a: 04. 09. 2007. (15:33:59) Postovi: (399)16
Lokacija: Exotica
|
|
[Vrh] |
|
Lafiel Forumaš(ica)


Pridružen/a: 26. 09. 2007. (09:56:59) Postovi: (153)16
Spol: 
|
|
[Vrh] |
|
Atomised Forumaš(ica)


Pridružen/a: 04. 09. 2007. (15:33:59) Postovi: (399)16
Lokacija: Exotica
|
Postano: 14:00 ned, 7. 9. 2008 Naslov: |
|
|
[quote="Lafiel"]Jedno pitanjce u vezi zadatka 7.1 i učitavanja liste (str. 104 u skripti). Malo me zbunjuju linije 28-33. Postavljamo pitanje "Želite li nastaviti učitavanje?" i to pitanje vrtimo dok god je naš odgovor različit od [i]d[/i] i različit od [i]n[/i]? Zašto bi itko upisao nešto što NIJE [i]d[/i] ili [i]n[/i] tj. kako izlazimo iz tog bloka?[/quote]
Ok, nisam ni pogledao kod ali, prema ovome što kažeš, logično je da izlazimo kad netko upiše d ili n, što nam je i cilj. :)
A sad, zašto uopće pretpostavljamo da bi netko upisao nešto drugo? Pa da nam kod bude više fensi. :D
Lafiel (napisa): | Jedno pitanjce u vezi zadatka 7.1 i učitavanja liste (str. 104 u skripti). Malo me zbunjuju linije 28-33. Postavljamo pitanje "Želite li nastaviti učitavanje?" i to pitanje vrtimo dok god je naš odgovor različit od d i različit od n? Zašto bi itko upisao nešto što NIJE d ili n tj. kako izlazimo iz tog bloka? |
Ok, nisam ni pogledao kod ali, prema ovome što kažeš, logično je da izlazimo kad netko upiše d ili n, što nam je i cilj.
A sad, zašto uopće pretpostavljamo da bi netko upisao nešto drugo? Pa da nam kod bude više fensi.
|
|
[Vrh] |
|
Lafiel Forumaš(ica)


Pridružen/a: 26. 09. 2007. (09:56:59) Postovi: (153)16
Spol: 
|
Postano: 14:29 ned, 7. 9. 2008 Naslov: |
|
|
[quote="Atomised"]Ok, nisam ni pogledao kod ali, prema ovome što kažeš, logično je da izlazimo kad netko upiše d ili n, što nam je i cilj. :)
A sad, zašto uopće pretpostavljamo da bi netko upisao nešto drugo? Pa da nam kod bude više fensi. :D[/quote]
LOL, očito sam totalno zbunjena, uspjela sam taj dio koda pročitati valjda šezdeset puta i nije mi se prosvijetlilo da IZLAZIMO čim netko upiše d ili n. [img]http://i2.photobucket.com/albums/y29/waterfly89/Smilies/loony.gif[/img] Mozak mi je očito ostao na moru. :)
Atomised (napisa): | Ok, nisam ni pogledao kod ali, prema ovome što kažeš, logično je da izlazimo kad netko upiše d ili n, što nam je i cilj.
A sad, zašto uopće pretpostavljamo da bi netko upisao nešto drugo? Pa da nam kod bude više fensi.  |
LOL, očito sam totalno zbunjena, uspjela sam taj dio koda pročitati valjda šezdeset puta i nije mi se prosvijetlilo da IZLAZIMO čim netko upiše d ili n. Mozak mi je očito ostao na moru.
_________________ Weit von hier fällt Gold von den Sternen
|
|
[Vrh] |
|
betty Forumaš(ica)

Pridružen/a: 23. 02. 2006. (19:17:18) Postovi: (2D)16
|
|
[Vrh] |
|
Gino Forumaš(ica)

Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
|
[Vrh] |
|
teapot Forumaš(ica)

Pridružen/a: 12. 02. 2009. (22:01:19) Postovi: (36)16
|
|
[Vrh] |
|
ToMeK Forumaš(ica)

Pridružen/a: 12. 09. 2008. (17:22:06) Postovi: (BA)16
Spol: 
|
Postano: 23:54 uto, 23. 6. 2009 Naslov: |
|
|
Zadatak 7.6. u skripti... treba u listi razlomaka izbrisat sve negativne brojeve... gdje grješim?? program mi naime ne radi... :(
[code:1]#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct _razlomak {
int br,naz;
struct _razlomak *next;
}razlomak;
razlomak *delneg( razlomak *first){
razlomak *t, *del;
while((first&&((first->br*first->naz))<0)){
t=first;
first=t->next;
free(t);
}
if(!first) return NULL;
t=first;
while(t->next){
if((t->next->br*t->next->naz)<0) {del=t->next;
t->next=del->next;
free(del);
}
else t->next;
}
return first;
}
int main(){
razlomak *first=NULL, *pom, *pom2;
char c;
do{
razlomak *newe;
printf("unesi razlomak");
newe=(razlomak*)malloc(sizeof(razlomak));
scanf("%d", &newe->br);
scanf("%d", &newe->naz);
if(first)
pom=pom->next=newe;
else
pom=first=newe;
do{
printf("unesi znak\n");
scanf(" %c", &c);
c=tolower(c);
} while(c!='d'&&c!='n');
}while(c=='d');
pom->next=NULL;
first = delneg(first);
for(pom=first; pom; pom=pom->next)
printf(" %d / %d \n", pom->br, pom->naz);
for(pom=first; pom; pom=pom2){
pom2=pom->next;
free(pom);
}
scanf("%%");
return 0;
}
[/code:1]
Zadatak 7.6. u skripti... treba u listi razlomaka izbrisat sve negativne brojeve... gdje grješim?? program mi naime ne radi...
Kod: | #include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct _razlomak {
int br,naz;
struct _razlomak *next;
}razlomak;
razlomak *delneg( razlomak *first){
razlomak *t, *del;
while((first&&((first->br*first->naz))<0)){
t=first;
first=t->next;
free(t);
}
if(!first) return NULL;
t=first;
while(t->next){
if((t->next->br*t->next->naz)<0) {del=t->next;
t->next=del->next;
free(del);
}
else t->next;
}
return first;
}
int main(){
razlomak *first=NULL, *pom, *pom2;
char c;
do{
razlomak *newe;
printf("unesi razlomak");
newe=(razlomak*)malloc(sizeof(razlomak));
scanf("%d", &newe->br);
scanf("%d", &newe->naz);
if(first)
pom=pom->next=newe;
else
pom=first=newe;
do{
printf("unesi znak\n");
scanf(" %c", &c);
c=tolower(c);
} while(c!='d'&&c!='n');
}while(c=='d');
pom->next=NULL;
first = delneg(first);
for(pom=first; pom; pom=pom->next)
printf(" %d / %d \n", pom->br, pom->naz);
for(pom=first; pom; pom=pom2){
pom2=pom->next;
free(pom);
}
scanf("%%");
return 0;
}
|
|
|
[Vrh] |
|
Gino Forumaš(ica)

Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
Postano: 0:25 sri, 24. 6. 2009 Naslov: |
|
|
evo ti moj kod, cini mi se da radi, ako ne skuzis di ti je greska, budem pogledao kod... ili ce vec neko drugi :D
[code:1]#include <stdio.h>
#include <stdlib.h>
typedef struct _razlomak{
int brojnik, nazivnik;
struct _razlomak *next;
} razlomak;
razlomak *deleteNeg(razlomak *prvi){
razlomak *pomocni, *pomocni2;
//ako treba izbrisat prvog to napravim na kraju
//ostale sad...
for(pomocni=prvi; pomocni && pomocni->next; pomocni=pomocni->next)
if(pomocni->next->brojnik*pomocni->next->nazivnik < 0){
//treba izbrisat sljedeceg
pomocni2=pomocni->next->next;
free(pomocni->next);
pomocni->next=pomocni2;
}
//sad se brise prvi
if(prvi->brojnik*prvi->nazivnik<0){
pomocni=prvi->next;
free(prvi);
prvi=pomocni;
}
return prvi;
}
int main(){
razlomak *prvi=NULL, *pomocni, *pomocni2;
char c;
do{
razlomak *novi;
novi=(razlomak*) malloc (sizeof(razlomak));
scanf("%d %d",&novi->brojnik, &novi->nazivnik);
if(prvi==NULL)
pomocni=prvi=novi;
else pomocni=pomocni->next=novi;
do{
printf("dalje (d/n)?");
scanf(" %c",&c);
}while(c!='d' && c!='n');
}while(c=='d');
pomocni->next=NULL;
prvi=deleteNeg(prvi);
for(pomocni=prvi;pomocni;pomocni=pomocni->next)
printf("(%d / %d)\n",pomocni->brojnik, pomocni->nazivnik);
for(pomocni=prvi;pomocni;pomocni=pomocni2){
pomocni2=pomocni->next;
free(pomocni);
}
// system("pause");
return 0;
}
[/code:1]
evo ti moj kod, cini mi se da radi, ako ne skuzis di ti je greska, budem pogledao kod... ili ce vec neko drugi
Kod: | #include <stdio.h>
#include <stdlib.h>
typedef struct _razlomak{
int brojnik, nazivnik;
struct _razlomak *next;
} razlomak;
razlomak *deleteNeg(razlomak *prvi){
razlomak *pomocni, *pomocni2;
//ako treba izbrisat prvog to napravim na kraju
//ostale sad...
for(pomocni=prvi; pomocni && pomocni->next; pomocni=pomocni->next)
if(pomocni->next->brojnik*pomocni->next->nazivnik < 0){
//treba izbrisat sljedeceg
pomocni2=pomocni->next->next;
free(pomocni->next);
pomocni->next=pomocni2;
}
//sad se brise prvi
if(prvi->brojnik*prvi->nazivnik<0){
pomocni=prvi->next;
free(prvi);
prvi=pomocni;
}
return prvi;
}
int main(){
razlomak *prvi=NULL, *pomocni, *pomocni2;
char c;
do{
razlomak *novi;
novi=(razlomak*) malloc (sizeof(razlomak));
scanf("%d %d",&novi->brojnik, &novi->nazivnik);
if(prvi==NULL)
pomocni=prvi=novi;
else pomocni=pomocni->next=novi;
do{
printf("dalje (d/n)?");
scanf(" %c",&c);
}while(c!='d' && c!='n');
}while(c=='d');
pomocni->next=NULL;
prvi=deleteNeg(prvi);
for(pomocni=prvi;pomocni;pomocni=pomocni->next)
printf("(%d / %d)\n",pomocni->brojnik, pomocni->nazivnik);
for(pomocni=prvi;pomocni;pomocni=pomocni2){
pomocni2=pomocni->next;
free(pomocni);
}
// system("pause");
return 0;
}
|
_________________ Mario Berljafa
|
|
[Vrh] |
|
ToMeK Forumaš(ica)

Pridružen/a: 12. 09. 2008. (17:22:06) Postovi: (BA)16
Spol: 
|
|
[Vrh] |
|
moi Forumaš(ica)

Pridružen/a: 21. 02. 2007. (13:39:09) Postovi: (26)16
Spol: 
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
|