Zad iz spa
Select messages from
# through # FAQ
[/[Print]\]
Idite na 1, 2  Sljedeće  :| |:
Forum@DeGiorgi -> Strukture podataka i algoritmi

#1: Zad iz spa Autor/ica: miki2007 PostPostano: 23:27 sri, 24. 1. 2007
    —
Moze li mi netko objasniti kako implementirati hrpu pomocu pointera?
Hvala

#2:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 0:01 čet, 25. 1. 2007
    —
Teško. Uzdah...

Osnova je stablo u kojem svaki cvor preko pointera pamti tko su mu lijevo i desno dijete, a pozeljno je da pamti i roditelja (dakle, veze idu u oba smijera). Smile

Zatim ti trebaju pomocne funkcije:
- za trazenje dubine stabla (while()-petlja koja trazi najljevije dijete i broji koliko je to duboko)
- za dodavanje cvora iza zadnjeg (modificirani preorder koji koristi funkciju za dubinu)
- za trazenje zadnjeg cvora (invertirani preorder (obilazi desno dijete, lijevo dijete, pa tek onda sam cvor) koji koristi funkciju za dubinu)

Nakon toga, lako slozis insert() i delete_min(). Very Happy

Danas sam to nekome objasnjavao... podosta naporno za sloziti, ali nadam se da ti ovi hintovi koriste. Smile

#3:  Autor/ica: marijapLokacija: zg PostPostano: 20:53 čet, 25. 1. 2007
    —
Da ne otvaram topic...pitanje iz SPA:
kako bi se u C-u moglo izvesti da se učitava niz naredbi u obliku
npr. ulazni podaci:
fja1 string1
fja2 string2
fja1 string3
fja3 string4

a ispisuju se rezultati dobiveni redom iz poziva funkcija
npr. izlazni podaci
string1: rezultat_fje1
string2: rezultat_fje2
...
moram li nekako izvesti da mi imena potprograma budu u jednom nizu, a podaci (string1,string2,string3) u drugom nizu?
Kako uopće učitati 2 stringa u jednom redu ako znamo da će pri utipkavanju biti odvojeni razmakom?

Ima li neki efikasan način za izvesti prvo popis naredbi, a tek potom rezultate tih funkcija po redu upisa?

Hvala na svakoj pomoći, ja ću dotad probati sa stringovima...

#4:  Autor/ica: m00nblade PostPostano: 21:07 čet, 25. 1. 2007
    —
Mislim da ti je najlakse ucitavati naredbe iz datoteke
Stavis jednu while petlju u kojoj ucitavas stringove u parovima, npr:

Kod:
FILE *fp;
char fja[128], string[128];

fp = fopen ("neka_datoteka.txt", "r");
while (fscanf (fp, " %s %s", fja, string) == 2) {
   if (!strcmp (fja, "fja1") fja1 (...);
   else if (!strcmp (fja, "fja2") fja2 (...);
   else if (!strcmp (fja, "fja3") fja3 (...);
   else
        printf ("Nepoznata naredba");
}


#5:  Autor/ica: marijapLokacija: zg PostPostano: 21:26 čet, 25. 1. 2007
    —
Hvala, probat ću tak. Još nešto:

FILE *fp;
char fja[128], string[128];

fp = fopen ("neka_datoteka.txt", "r");
while (fscanf (fp, " %s %s", fja, string) == 2) {
if (!strcmp (fja, "fja1") fja1 (...); -mogu li tu dodati neki svoj blok naredbi vezano s pozivom f-je1
i analogno za ove ispod koliko ih bude?

else if (!strcmp (fja, "fja2") fja2 (...);
else if (!strcmp (fja, "fja3") fja3 (...);
else
printf ("Nepoznata naredba");
}

#6:  Autor/ica: m00nblade PostPostano: 21:34 čet, 25. 1. 2007
    —
Naravno da smijes, to je bilo samo za primjer unosa naredbi i poziva funkcija u skladu s unesenom naredbom, ne moras se striktno drzati predloska.


Ako imas jos pitanja, salji na pm

#7:  Autor/ica: ahri PostPostano: 4:40 pet, 26. 1. 2007
    —
neka salje tu pitanja, pa da i drugi vide odgovore ako im trebaju :)

#8:  Autor/ica: alen PostPostano: 17:06 pet, 26. 1. 2007
    —
Imam problem, dolje u praktikumu 1 (mislim da je taj broj) nemogu kompajlirat program jer ne postoji conio header, a treba mi za getch. I sad, vjerojatno ću zamjenit getch sa scanf, al kak da to napravim da mi ne učita i enter u sljedećem učitavanju char-a?
Kod:

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <math.h>
#include <string.h>
#include <conio.h>
...
void UNOS(node i ,TREE T){
     char a;
     printf("Unesite oznaku prvog djeteta cvora s oznakom %c, * ako nema djeteta:\n", LABEL(i,T));
     a=getch();
     if(a=='*') i->first_child=LAMBDA;
       else {INSERT_CHILD(a,i,&T);
            UNOS(FIRST_CHILD(i,T),T);
            }
     printf("Unesite oznaku iduceg brata cvora s oznakom %c, * ako nema iduceg brata:\n", LABEL(i,T));
     a=getch();       
     if(a=='*') i->next_sib=LAMBDA;
       else {INSERT_SIBLING(a,i,&T);
            UNOS(NEXT_SIBLING(i,T),T);
            }
     }

#9:  Autor/ica: m00nblade PostPostano: 19:55 pet, 26. 1. 2007
    —
Kod scanf-a stavis razmak prije %c:
Kod:
scanf (" %c", &a);

#10:  Autor/ica: alen PostPostano: 21:15 pet, 26. 1. 2007
    —
Hvala, sad fino radi, probat ću u ponedjeljak opet na faksu, al vjerujem da sad neće bit problema

#11: Pogrešne (?) upute za zadatak Autor/ica: Marvin PostPostano: 11:57 sub, 27. 1. 2007
    —
U zadatku
Citat:
Implementirajte a.t.p. MAPPING pomoću... [...] postoji li jedinični element (to je element e za kojeg vrijedi a*e=e*a=a za sve e
se vjerojatno mislilo sve a umjesto sve e?

Ovako kako piše, to bi bio nul-element; ili se varam?

#12: Re: Pogrešne (?) upute za zadatak Autor/ica: Zvone PostPostano: 15:15 sub, 27. 1. 2007
    —
Marvin (napisa):
se vjerojatno mislilo sve a umjesto sve e?

Ovako kako piše, to bi bio nul-element; ili se varam?


Joj Smile
Evo ispravio sam Smile

#13:  Autor/ica: marijapLokacija: zg PostPostano: 21:57 sub, 27. 1. 2007
    —
Citat:
void UBACI (char x[MAXLEN], DICTIONARY *A){
if (A == NULL){
*A = (celltype*) malloc (sizeof(celltype));
(*A)→element = x;
(*A)→leftchild = (*A)→rightchild = NULL;
}
else if (x < (*A)→element) UBACI(x, &((*A)→leftchild));
else if (x > (*A)→element) UBACI(x, &((*A)→rightchild));


Nikak nemrem smislit kak postupat sa stringom x, javlja mi grešku kod pridruživanja...

#14:  Autor/ica: pecinaLokacija: Happily traveling through space since 1986! PostPostano: 22:19 sub, 27. 1. 2007
    —
Kod:
 strcpy((*A)->element, x);


I obavezno pripazi ako imas gdje uspoređivanje, tu ti dolazi strcmp:
Kod:
a < b
postaje
Kod:
strcmp(a, b) < 0

Kod:
a == b
postaje
Kod:
strcmp(a, b) == 0

Kod:
a > b
postaje
Kod:
strcmp(a, b) > 0

#15:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 22:40 sub, 27. 1. 2007
    —
pecina (napisa):
Kod:
 strcpy((*A)->element, x);


Tocno tako + treba paziti da (*A)→element ima alociranu dovoljnu kolicinu memorije. Wink

#16:  Autor/ica: marijapLokacija: zg PostPostano: 22:55 sub, 27. 1. 2007
    —
hvala na pomoću, za strcmp sam promijenila u kodu, to nisam bila sigurna jel nužno, a dodat ću i provjeru alokacije
(to često zaboravim Embarassed )

#17:  Autor/ica: marijapLokacija: zg PostPostano: 23:27 sub, 27. 1. 2007
    —
m00nblade (napisa):
Mislim da ti je najlakse ucitavati naredbe iz datoteke
Stavis jednu while petlju u kojoj ucitavas stringove u parovima, npr:

Kod:
FILE *fp;
char fja[128], string[128];

fp = fopen ("neka_datoteka.txt", "r");
while (fscanf (fp, " %s %s", fja, string) == 2) {
   if (!strcmp (fja, "fja1") fja1 (...);
   else if (!strcmp (fja, "fja2") fja2 (...);
   else if (!strcmp (fja, "fja3") fja3 (...);
   else
        printf ("Nepoznata naredba");
}



Kako mogu ispisati ovaj uneseni string?
Možda sa fprintf(fp,string)?
A ako ga koristim u pozivu npr. fje2, mogu li to sa fja2(string) ili ga moram pročitati posebno?

#18:  Autor/ica: ahri PostPostano: 2:02 ned, 28. 1. 2007
    —
marijap (napisa):

Kako mogu ispisati ovaj uneseni string?
Možda sa fprintf(fp,string)?
Mozes:)
Citat:

A ako ga koristim u pozivu npr. fje2, mogu li to sa fja2(string) ili ga moram pročitati posebno?
Mozes. :).

#19:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 4:10 ned, 28. 1. 2007
    —
ahri (napisa):
marijap (napisa):
Kako mogu ispisati ovaj uneseni string?
Možda sa fprintf(fp,string)?

Mozes:)


Strogo precizno: Moze, ali pod uvjetom da u stringu nema formata, jer bi ga to zbunilo. Wink

Kod:
[vsego@petko tmp]$ cat t.c
#include <stdio.h>

main(){
  char s[] = "%d\n";
  printf(s);
}
[vsego@petko tmp]$ gcc t.c && ./a.out
-1073842484


Kvaka je, naravno, u tome sto se prvi parametar printf()-a interpretira prema poznati pravilima, umjesto da se samo ispishe. Cool Slicno se ponasaju i fprintf() i ostale takve funkcije. Smile

#20:  Autor/ica: mdokoLokacija: Heriot-Watt University, Edinburgh PostPostano: 13:49 ned, 28. 1. 2007
    —
vsego (napisa):
ahri (napisa):
marijap (napisa):
Kako mogu ispisati ovaj uneseni string?
Možda sa fprintf(fp,string)?

Mozes:)


Strogo precizno: Moze, ali pod uvjetom da u stringu nema formata, jer bi ga to zbunilo. Wink

Problem se rijesi sa:
Kod:
fprintf(fp, "%s", string);
Cool



Forum@DeGiorgi -> Strukture podataka i algoritmi


output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.

Idite na 1, 2  Sljedeće  :| |:
Stranica 1 / 2.

Powered by phpBB © 2001,2002 phpBB Group
Theme created by Vjacheslav Trushkin