Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
wrathchild Forumaš(ica)
Pridružen/a: 09. 07. 2010. (21:25:00) Postovi: (31)16
|
Postano: 17:13 sri, 30. 5. 2012 Naslov: Kolokvij 09/10 (pomoć oko zadatka) |
|
|
Link na kolokvij http://degiorgi.math.hr/prog2/kolokviji/p2-kolokvij-0910-2.pdf
Nije mi baš najjasniji 3. zadatak. Ja san to nekako shvatija dosta jednostavnije nego li je napravljeno u rješenju, pa me zanima gdje griješim.
[code:1]int nadji(FILE *f, const char *naziv){
rewind(f); //vracamo se na pocetak;
int cnt=-1; //cnt je -1 jer brojanje krece od 0 prema zadatku, odma u for petlji se podigne na 0;
Ponuda ponuda;
while(fread(&ponuda, sizeof(Ponuda), 1, f)==1){
//ucitavam jednu po jednu ponudu i povecavam broj
cnt++;
if(strcmp(ponuda->naziv, naziv)==0){
//ako su nazivi jednaki, od mjesta do kojeg sam stigao vratim se za jednu ponudu unazad, kako bi pokazivao na pocetak moje ponude, vratim broj ponude cnt i to je to
fseek(f, -sizeof(ponuda), SEEK_SET);
return cnt;
}
}
return EOF;
}[/code:1]
Sad, što sam krivo shvatio? :)
Link na kolokvij http://degiorgi.math.hr/prog2/kolokviji/p2-kolokvij-0910-2.pdf
Nije mi baš najjasniji 3. zadatak. Ja san to nekako shvatija dosta jednostavnije nego li je napravljeno u rješenju, pa me zanima gdje griješim.
Kod: | int nadji(FILE *f, const char *naziv){
rewind(f); //vracamo se na pocetak;
int cnt=-1; //cnt je -1 jer brojanje krece od 0 prema zadatku, odma u for petlji se podigne na 0;
Ponuda ponuda;
while(fread(&ponuda, sizeof(Ponuda), 1, f)==1){
//ucitavam jednu po jednu ponudu i povecavam broj
cnt++;
if(strcmp(ponuda->naziv, naziv)==0){
//ako su nazivi jednaki, od mjesta do kojeg sam stigao vratim se za jednu ponudu unazad, kako bi pokazivao na pocetak moje ponude, vratim broj ponude cnt i to je to
fseek(f, -sizeof(ponuda), SEEK_SET);
return cnt;
}
}
return EOF;
} |
Sad, što sam krivo shvatio?
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
wrathchild Forumaš(ica)
Pridružen/a: 09. 07. 2010. (21:25:00) Postovi: (31)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
wrathchild Forumaš(ica)
Pridružen/a: 09. 07. 2010. (21:25:00) Postovi: (31)16
|
|
[Vrh] |
|
aj_ca_volin_te Forumaš(ica)
Pridružen/a: 22. 11. 2011. (20:18:49) Postovi: (6F)16
|
Postano: 17:50 čet, 31. 5. 2012 Naslov: |
|
|
[b]podzadatak kaže :D[/b]
Napisite funkciju deset(element *first, element second), gdje je first pokazivac na prvi element liste, koja ubacuje element second u listu first i to nakon desetog elementa liste. Ako lista ima manje od deset elementa, funkcija ne radi nista.
[code:1]element* deset(element *first, element second)
{
element *p;
int i=0;
for(p=first;p!=NULL;p=p->next)
{
i++;
if(i==10){
second->next=p->next;
p->next=*second;
return first;
}
}
return first;
}
[/code:1]
zanima me sao dali mi radi kod kako treba, tj sumljiv mi je ovaj [b] p->next=*second;[/b]
unapijed jedno veliko HVALA! 8)
podzadatak kaže
Napisite funkciju deset(element *first, element second), gdje je first pokazivac na prvi element liste, koja ubacuje element second u listu first i to nakon desetog elementa liste. Ako lista ima manje od deset elementa, funkcija ne radi nista.
Kod: | element* deset(element *first, element second)
{
element *p;
int i=0;
for(p=first;p!=NULL;p=p->next)
{
i++;
if(i==10){
second->next=p->next;
p->next=*second;
return first;
}
}
return first;
}
|
zanima me sao dali mi radi kod kako treba, tj sumljiv mi je ovaj p→next=*second;
unapijed jedno veliko HVALA!
Zadnja promjena: aj_ca_volin_te; 18:40 čet, 31. 5. 2012; ukupno mijenjano 2 put/a.
|
|
[Vrh] |
|
quark Forumaš(ica)
Pridružen/a: 22. 10. 2011. (16:47:39) Postovi: (DA)16
Spol:
|
|
[Vrh] |
|
aj_ca_volin_te Forumaš(ica)
Pridružen/a: 22. 11. 2011. (20:18:49) Postovi: (6F)16
|
|
[Vrh] |
|
quark Forumaš(ica)
Pridružen/a: 22. 10. 2011. (16:47:39) Postovi: (DA)16
Spol:
|
|
[Vrh] |
|
aj_ca_volin_te Forumaš(ica)
Pridružen/a: 22. 11. 2011. (20:18:49) Postovi: (6F)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
Postano: 19:13 čet, 31. 5. 2012 Naslov: |
|
|
@wrathchild: Da, to bi bilo dodavanje jednog elementa na kraj liste. No, ako ih dodajes vise (cijelu datoteku!) onda neces stalno traziti kraj, nego ces valjda imati pomocnu varijablu [tt]last[/tt], [tt]zadnji[/tt] ili tako nekako. Radili smo to i na vjezbama i na predavanjima.
[quote="aj_ca_volin_te"]zanima me sao dali mi radi kod kako treba,[/quote]
Svasta... :ajme: Pa, probaj! :prodike: Ni ja ne pisem programe tako da ih nakucam, pa "valjda rade". Treba isprobati stvar. Ovo tvoje, da si samo probao compilirati, pljunulo bi ti gresku jer dereferenciras [tt]struct[/tt].
Kao i svake godine, tkogod misli uciti programirati na papiru, umjesto na racunalu, nece se dobro provesti... :(
@wrathchild: Da, to bi bilo dodavanje jednog elementa na kraj liste. No, ako ih dodajes vise (cijelu datoteku!) onda neces stalno traziti kraj, nego ces valjda imati pomocnu varijablu last, zadnji ili tako nekako. Radili smo to i na vjezbama i na predavanjima.
aj_ca_volin_te (napisa): | zanima me sao dali mi radi kod kako treba, |
Svasta... Pa, probaj! Ni ja ne pisem programe tako da ih nakucam, pa "valjda rade". Treba isprobati stvar. Ovo tvoje, da si samo probao compilirati, pljunulo bi ti gresku jer dereferenciras struct.
Kao i svake godine, tkogod misli uciti programirati na papiru, umjesto na racunalu, nece se dobro provesti...
_________________ 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] |
|
aj_ca_volin_te Forumaš(ica)
Pridružen/a: 22. 11. 2011. (20:18:49) Postovi: (6F)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
aj_ca_volin_te Forumaš(ica)
Pridružen/a: 22. 11. 2011. (20:18:49) Postovi: (6F)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
Postano: 22:52 čet, 31. 5. 2012 Naslov: |
|
|
[quote="aj_ca_volin_te"]a dobro, nemorate biti tako okrutni :cry:[/quote]
Nisam ja okrutan, nego je okrutno ono sto se desi ekipi koja "uci" programirati na papiru. Ja pokusavam sprijeciti da vas to snadje. ;) Pogledajte samo koliko postova imam u zadnja 2-3 dana (a mailova i PMova je jos toliko). No, ja mogu samo pomoci, ne i poloziti umjesto vas.
aj_ca_volin_te (napisa): | a dobro, nemorate biti tako okrutni |
Nisam ja okrutan, nego je okrutno ono sto se desi ekipi koja "uci" programirati na papiru. Ja pokusavam sprijeciti da vas to snadje. Pogledajte samo koliko postova imam u zadnja 2-3 dana (a mailova i PMova je jos toliko). No, ja mogu samo pomoci, ne i poloziti umjesto vas.
_________________ 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] |
|
aj_ca_volin_te Forumaš(ica)
Pridružen/a: 22. 11. 2011. (20:18:49) Postovi: (6F)16
|
Postano: 23:27 čet, 31. 5. 2012 Naslov: |
|
|
evo zasto pisem stvari koje mislim da znam na papiru(na ovome nebi sada gubio uru, skoro dvi vremena i mislio bi da znam ovo... nemogu naci gresku), compailer mi ne javlja nikakve greske a nemogu ga pokrenuti preko kom line(to sam sam tek tako stavia)...zadatak je od prosle god ja mislim GRUPA D 3.zadatak .... http://degiorgi.math.hr/prog2/kolokviji/p2-kolokvij-1011-2.pdf
http://degiorgi.math.hr/prog2/kolokviji/p2-kolokvij-1011-2.pdf
[code:1]#include<stdio.h>
#include<stdlib.h>
struct Titl{
char s[2001];
int i,j;
};
typedef struct Titl titl;
int broj_rijeci(char *s){
int i,br=0;
for(i=0;s[i]!='\0';++i){
if(s[i]==' ')br++;
}
return br;
}
void funkcija(char ime[],FILE *out){
int j,i,br=0,k,min=1000000000;
titl *tekst;
FILE *in;
in=fopen("tekst.txt","r");
if(in==NULL){
printf("Greska pri otaranju datoteke %s", ime);
exit(1);
}
while(fscanf(in,"%*[^:]%*d-%*d")>EOF) br++;
rewind(in);
tekst=(titl*)malloc(br*sizeof(titl));
for(i=0;i<br;i++){
fscanf(in,"%[^:]%d-%d",tekst[i].s,&tekst[i].i,&tekst[i].j);
if(min>(tekst[i].j-tekst[i].i)){
min=tekst[i].j-tekst[i].i;
k=i;
}}
printf("Najkraci titl: %s\n", tekst[k].s);
for(i=0;i<br-1;i++){
for(j=i+1;j<br;j++){
if(broj_rijeci(tekst[i].s)<broj_rijeci(tekst[j].s))
{
titl s=tekst[i];
tekst[i]=tekst[j];
tekst[j]=s;
}
}
}
for(i=0;i<br;i++){
fprintf(out,"%s : %d-%d\n",tekst[i].s,tekst[i].i,tekst[i].j);
}
fclose(in);
fclose(out);
free(tekst);
}
int main(int argc, char**argv){
FILE *out;
if(argc!=2){
printf("Unesite tocno jedno ime ulazne datoteke");
exit(1);
}
out=fopen("izlaz.txt","w");
if(out==NULL){
printf("Nije uspjelo otvoriti datoteku za citanje");
exit(1);
}
funkcija(argv[1],out);
return 0;
}
[/code:1]
evo zasto pisem stvari koje mislim da znam na papiru(na ovome nebi sada gubio uru, skoro dvi vremena i mislio bi da znam ovo... nemogu naci gresku), compailer mi ne javlja nikakve greske a nemogu ga pokrenuti preko kom line(to sam sam tek tako stavia)...zadatak je od prosle god ja mislim GRUPA D 3.zadatak .... http://degiorgi.math.hr/prog2/kolokviji/p2-kolokvij-1011-2.pdf
http://degiorgi.math.hr/prog2/kolokviji/p2-kolokvij-1011-2.pdf
Kod: | #include<stdio.h>
#include<stdlib.h>
struct Titl{
char s[2001];
int i,j;
};
typedef struct Titl titl;
int broj_rijeci(char *s){
int i,br=0;
for(i=0;s[i]!='\0';++i){
if(s[i]==' ')br++;
}
return br;
}
void funkcija(char ime[],FILE *out){
int j,i,br=0,k,min=1000000000;
titl *tekst;
FILE *in;
in=fopen("tekst.txt","r");
if(in==NULL){
printf("Greska pri otaranju datoteke %s", ime);
exit(1);
}
while(fscanf(in,"%*[^:]%*d-%*d")>EOF) br++;
rewind(in);
tekst=(titl*)malloc(br*sizeof(titl));
for(i=0;i<br;i++){
fscanf(in,"%[^:]%d-%d",tekst[i].s,&tekst[i].i,&tekst[i].j);
if(min>(tekst[i].j-tekst[i].i)){
min=tekst[i].j-tekst[i].i;
k=i;
}}
printf("Najkraci titl: %s\n", tekst[k].s);
for(i=0;i<br-1;i++){
for(j=i+1;j<br;j++){
if(broj_rijeci(tekst[i].s)<broj_rijeci(tekst[j].s))
{
titl s=tekst[i];
tekst[i]=tekst[j];
tekst[j]=s;
}
}
}
for(i=0;i<br;i++){
fprintf(out,"%s : %d-%d\n",tekst[i].s,tekst[i].i,tekst[i].j);
}
fclose(in);
fclose(out);
free(tekst);
}
int main(int argc, char**argv){
FILE *out;
if(argc!=2){
printf("Unesite tocno jedno ime ulazne datoteke");
exit(1);
}
out=fopen("izlaz.txt","w");
if(out==NULL){
printf("Nije uspjelo otvoriti datoteku za citanje");
exit(1);
}
funkcija(argv[1],out);
return 0;
}
|
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
Postano: 0:20 pet, 1. 6. 2012 Naslov: |
|
|
Nisam shvatio zasto bi bilo bolje da si to radio na papiru i cemu uopce sluzi rjesavanje kod kojeg ne mozes provjeriti da znas napisati stvar, ali ako tebe to veseli...
Rijec je o 2. zadatku grupe C, a kriv ti je format u oba [tt]fscanf[/tt]. Umjesto
[tt]"%*[^:]%*d-%*d"[/tt]
treba biti
[tt]"[bg=red][color=white] [/color][/bg]%*[^:][bg=red][color=white]:[/color][/bg]%*d-%*d"[/tt]
(drugi, jasno, ide bez zvjezdica, no ista je greska).
Dodatno, otvaras krivu datoteku.
Nisam shvatio zasto bi bilo bolje da si to radio na papiru i cemu uopce sluzi rjesavanje kod kojeg ne mozes provjeriti da znas napisati stvar, ali ako tebe to veseli...
Rijec je o 2. zadatku grupe C, a kriv ti je format u oba fscanf. Umjesto
"%*[^:]%*d-%*d"
treba biti
" %*[^:]:%*d-%*d"
(drugi, jasno, ide bez zvjezdica, no ista je greska).
Dodatno, otvaras krivu datoteku.
_________________ 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] |
|
quark Forumaš(ica)
Pridružen/a: 22. 10. 2011. (16:47:39) Postovi: (DA)16
Spol:
|
Postano: 0:38 pet, 1. 6. 2012 Naslov: |
|
|
Imitacija (doduše, neuspješna) klasičnog sorta ali structova na jednoj binarnoj datoteci po nekom bezveznom kriteriju; meni datoteku oblika
[code:1]3 2
2 0
1 3[/code:1]
ostavi netaknutu:
[code:1]
typedef struct _vektor
{
int x,y;
} vektor;
int main()
{
long duljina, i, j;
FILE *fp;
vektor pom1, pom2, temp;
if((fp=fopen("vektori.txt", "rb+"))==NULL)
exit(-1);
fseek(fp, 0L, SEEK_END);
duljina=ftell(fp)/sizeof(vektor);
for(i=0L;i<duljina;i+=sizeof(vektor))
for(j=i+sizeof(vektor);i<duljina;j+=sizeof(vektor))
{
fseek(fp, i, SEEK_SET);
if(fread(&pom1, sizeof(vektor), 1, fp)!=1) break;
fseek(fp, j, SEEK_SET);
if(fread(&pom2, sizeof(vektor), 1, fp)!=1) break;
if(pom1.x>pom2.x)
{
fseek(fp, i, SEEK_SET);
if(fwrite(&pom2, sizeof(vektor), 1, fp)!=1) exit(-2);
fseek(fp, j, SEEK_SET);
if(fwrite(&pom1, sizeof(vektor), 1, fp)!=1) exit(-3);
}
}
return 0;
}[/code:1]
P.S. vsegi ćemo svi mi "pomagaj u 2 ujutro" morati kupiti neku veliku čokoladu... :P
Imitacija (doduše, neuspješna) klasičnog sorta ali structova na jednoj binarnoj datoteci po nekom bezveznom kriteriju; meni datoteku oblika
ostavi netaknutu:
Kod: |
typedef struct _vektor
{
int x,y;
} vektor;
int main()
{
long duljina, i, j;
FILE *fp;
vektor pom1, pom2, temp;
if((fp=fopen("vektori.txt", "rb+"))==NULL)
exit(-1);
fseek(fp, 0L, SEEK_END);
duljina=ftell(fp)/sizeof(vektor);
for(i=0L;i<duljina;i+=sizeof(vektor))
for(j=i+sizeof(vektor);i<duljina;j+=sizeof(vektor))
{
fseek(fp, i, SEEK_SET);
if(fread(&pom1, sizeof(vektor), 1, fp)!=1) break;
fseek(fp, j, SEEK_SET);
if(fread(&pom2, sizeof(vektor), 1, fp)!=1) break;
if(pom1.x>pom2.x)
{
fseek(fp, i, SEEK_SET);
if(fwrite(&pom2, sizeof(vektor), 1, fp)!=1) exit(-2);
fseek(fp, j, SEEK_SET);
if(fwrite(&pom1, sizeof(vektor), 1, fp)!=1) exit(-3);
}
}
return 0;
} |
P.S. vsegi ćemo svi mi "pomagaj u 2 ujutro" morati kupiti neku veliku čokoladu...
|
|
[Vrh] |
|
aj_ca_volin_te Forumaš(ica)
Pridružen/a: 22. 11. 2011. (20:18:49) Postovi: (6F)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
Postano: 1:18 pet, 1. 6. 2012 Naslov: |
|
|
@quark: Pazi, petlje ti idu do duljine (sto je 3), a varijable pomices za [tt]sizeof(vektor)[/tt] (sto je 8[i][/i]). ;)
P.S. :pc: O:)
[size=9][color=#999999]Added after 1 minutes:[/color][/size]
Usput, kad radis s datotekama, ipak je bolje uzeti neki sort s manje zamjena. Recimo, varijantu klasicnog sorta koja je radjena na predavanjima.
@quark: Pazi, petlje ti idu do duljine (sto je 3), a varijable pomices za sizeof(vektor) (sto je 8).
P.S.
Added after 1 minutes:
Usput, kad radis s datotekama, ipak je bolje uzeti neki sort s manje zamjena. Recimo, varijantu klasicnog sorta koja je radjena na predavanjima.
_________________ 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] |
|
|