| 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: (3562)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: (3562)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: (3562)16 
Spol:   
Lokacija: /sbin/init 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		 |