Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
miki2007 Forumaš(ica)
Pridružen/a: 24. 01. 2007. (23:25:26) Postovi: (3)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 0:01 čet, 25. 1. 2007 Naslov: |
|
|
Teško. :sigh:
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). :)
Zatim ti trebaju pomocne funkcije:
- za trazenje dubine stabla ([tt]while()[/tt]-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 [tt]insert()[/tt] i [tt]delete_min()[/tt]. :D
Danas sam to nekome objasnjavao... podosta naporno za sloziti, ali nadam se da ti ovi hintovi koriste. :)
Teško.
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).
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().
Danas sam to nekome objasnjavao... podosta naporno za sloziti, ali nadam se da ti ovi hintovi koriste.
_________________ 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] |
|
marijap Forumaš(ica)
Pridružen/a: 21. 06. 2006. (19:04:40) Postovi: (209)16
Spol:
Lokacija: zg
|
Postano: 20:53 čet, 25. 1. 2007 Naslov: |
|
|
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...
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...
|
|
[Vrh] |
|
m00nblade Forumaš(ica)
Pridružen/a: 30. 10. 2005. (13:26:10) Postovi: (54)16
Spol:
|
Postano: 21:07 čet, 25. 1. 2007 Naslov: |
|
|
Mislim da ti je najlakse ucitavati naredbe iz datoteke
Stavis jednu while petlju u kojoj ucitavas stringove u parovima, npr:
[code:1]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");
}
[/code:1]
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");
}
|
|
|
[Vrh] |
|
marijap Forumaš(ica)
Pridružen/a: 21. 06. 2006. (19:04:40) Postovi: (209)16
Spol:
Lokacija: zg
|
Postano: 21:26 čet, 25. 1. 2007 Naslov: |
|
|
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") [b]fja1 (...)[/b]; [i]-mogu li tu dodati neki svoj blok naredbi vezano s pozivom f-je1
i analogno za ove ispod koliko ih bude?[/i]
else if (!strcmp (fja, "fja2") fja2 (...);
else if (!strcmp (fja, "fja3") fja3 (...);
else
printf ("Nepoznata naredba");
}
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");
}
|
|
[Vrh] |
|
m00nblade Forumaš(ica)
Pridružen/a: 30. 10. 2005. (13:26:10) Postovi: (54)16
Spol:
|
|
[Vrh] |
|
ahri Forumaš(ica)
Pridružen/a: 19. 11. 2003. (23:16:07) Postovi: (193)16
|
|
[Vrh] |
|
alen Forumaš(ica)
Pridružen/a: 14. 10. 2005. (23:25:58) Postovi: (221)16
|
Postano: 17:06 pet, 26. 1. 2007 Naslov: |
|
|
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?
[code:1]
#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);
}
}[/code:1]
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);
}
} |
_________________ Između ostalog, mislim da bi kolegij mjera i integral trebao imati svoj podforum među kolegijima treće godine
|
|
[Vrh] |
|
m00nblade Forumaš(ica)
Pridružen/a: 30. 10. 2005. (13:26:10) Postovi: (54)16
Spol:
|
|
[Vrh] |
|
alen Forumaš(ica)
Pridružen/a: 14. 10. 2005. (23:25:58) Postovi: (221)16
|
|
[Vrh] |
|
Marvin Forumaš(ica)
Pridružen/a: 01. 12. 2006. (15:46:10) Postovi: (56)16
|
|
[Vrh] |
|
Zvone Forumaš(ica)
Pridružen/a: 01. 07. 2003. (13:09:44) Postovi: (9D)16
|
|
[Vrh] |
|
marijap Forumaš(ica)
Pridružen/a: 21. 06. 2006. (19:04:40) Postovi: (209)16
Spol:
Lokacija: zg
|
|
[Vrh] |
|
pecina Forumaš(ica)
Pridružen/a: 19. 01. 2005. (14:15:23) Postovi: (157)16
Spol:
Lokacija: Happily traveling through space since 1986!
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
marijap Forumaš(ica)
Pridružen/a: 21. 06. 2006. (19:04:40) Postovi: (209)16
Spol:
Lokacija: zg
|
|
[Vrh] |
|
marijap Forumaš(ica)
Pridružen/a: 21. 06. 2006. (19:04:40) Postovi: (209)16
Spol:
Lokacija: zg
|
Postano: 23:27 sub, 27. 1. 2007 Naslov: |
|
|
[quote="m00nblade"]Mislim da ti je najlakse ucitavati naredbe iz datoteke
Stavis jednu while petlju u kojoj ucitavas stringove u parovima, npr:
[code:1]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");
}
[/code:1][/quote]
Kako mogu ispisati ovaj uneseni [color=red]string[/color]?
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?
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?
|
|
[Vrh] |
|
ahri Forumaš(ica)
Pridružen/a: 19. 11. 2003. (23:16:07) Postovi: (193)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 4:10 ned, 28. 1. 2007 Naslov: |
|
|
[quote="ahri"][quote="marijap"]Kako mogu ispisati ovaj uneseni [color=red]string[/color]?
Možda sa fprintf(fp,string)?[/quote]
Mozes:)[/quote]
Strogo precizno: Moze, ali pod uvjetom da u stringu nema formata, jer bi ga to zbunilo. ;)
[code:1][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[/code:1]
Kvaka je, naravno, u tome sto se prvi parametar [tt]printf()[/tt]-a interpretira prema poznati pravilima, umjesto da se samo ispishe. 8) Slicno se ponasaju i [tt]fprintf()[/tt] i ostale takve funkcije. :)
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.
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. Slicno se ponasaju i fprintf() i ostale takve funkcije.
_________________ 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] |
|
mdoko Forumaš(ica)
Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol:
Lokacija: Heriot-Watt University, Edinburgh
|
Postano: 13:49 ned, 28. 1. 2007 Naslov: |
|
|
[quote="vsego"][quote="ahri"][quote="marijap"]Kako mogu ispisati ovaj uneseni [color=red]string[/color]?
Možda sa fprintf(fp,string)?[/quote]
Mozes:)[/quote]
Strogo precizno: Moze, ali pod uvjetom da u stringu nema formata, jer bi ga to zbunilo. ;)[/quote]
Problem se rijesi sa:[code:1]fprintf(fp, "%s", string);[/code:1] :cool:
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. |
Problem se rijesi sa: Kod: | fprintf(fp, "%s", string); |
_________________ Extraordinary claims require extraordinary evidence. – Carl Sagan
|
|
[Vrh] |
|
|