Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

zadatak-pomoć
WWW:
Idite na 1, 2  Sljedeće
Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
.anchy.
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 14. 11. 2007. (20:03:46)
Postovi: (1BC)16
Sarma = la pohva - posuda
= 15 - 11
Lokacija: Zgb

PostPostano: 13:05 pon, 15. 3. 2010    Naslov: zadatak-pomoć Citirajte i odgovorite

program računa fibbonacija uz pomoć static niza(primjer 2.3 iz skripte):

[code:1]#include <stdio.h>
#include <stdlib.h>

int fib(int n) {
static int fib_niz[40]={0};
if(n<=1) return n;
if(fib_niz[n]) return fib_niz[n];
return fib_niz[n]= fib(n-1)+fib(n-2);
}

int main() {
int n, c;
scanf("%d", &n);
c=fib(n);
printf("%d", c);
system("pause");
return 0;
}
[/code:1]

tako piše u skripti,no normalno radi i bez
[code:1]if(fib_niz[n]) return fib_niz[n];[/code:1]

je li onda potrebno pisati to,i ako da, zašto? čemu to služi?

unaprijed hvala! :D
program računa fibbonacija uz pomoć static niza(primjer 2.3 iz skripte):

Kod:
#include <stdio.h>
#include <stdlib.h>

int fib(int n) {
    static int fib_niz[40]={0};
    if(n<=1) return n;
    if(fib_niz[n]) return fib_niz[n];
    return fib_niz[n]= fib(n-1)+fib(n-2);
}

int main() {
    int n, c;
    scanf("%d", &n);
    c=fib(n);
    printf("%d", c);
    system("pause");
    return 0;
}


tako piše u skripti,no normalno radi i bez
Kod:
if(fib_niz[n]) return fib_niz[n];


je li onda potrebno pisati to,i ako da, zašto? čemu to služi?

unaprijed hvala! Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 13:30 pon, 15. 3. 2010    Naslov: Citirajte i odgovorite

To sluzi ubrzavanju. Bez te lajne, cache je beskoristan.

Probaj preko te funkcije - jednom s tom lajnom, a jednom bez nje - ispisati [latex]F_{40}[/latex] (ako ti ispadne podjednako brzo, probaj neki veci).
To sluzi ubrzavanju. Bez te lajne, cache je beskoristan.

Probaj preko te funkcije - jednom s tom lajnom, a jednom bez nje - ispisati (ako ti ispadne podjednako brzo, probaj neki veci).



_________________
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.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Milojko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 11. 2008. (14:57:52)
Postovi: (453)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
17 = 68 - 51
Lokacija: Hilbertov hotel

PostPostano: 14:04 pon, 15. 3. 2010    Naslov: Re: zadatak-pomoć Citirajte i odgovorite

[quote=".anchy."]program računa fibbonacija uz pomoć static niza(primjer 2.3 iz skripte):

[code:1]#include <stdio.h>
#include <stdlib.h>

int fib(int n) {
static int fib_niz[40]={0};
if(n<=1) return n;
if(fib_niz[n]) return fib_niz[n];
return fib_niz[n]= fib(n-1)+fib(n-2);
}

int main() {
int n, c;
scanf("%d", &n);
c=fib(n);
printf("%d", c);
system("pause");
return 0;
}
[/code:1]

tako piše u skripti,no normalno radi i bez
[code:1]if(fib_niz[n]) return fib_niz[n];[/code:1]

je li onda potrebno pisati to,i ako da, zašto? čemu to služi?

unaprijed hvala! :D[/quote]
bez te lajne bi funkcija jako puno puta računala fib (n). ovako ga računa samo jednom, prvi put kad naiđe na fib (n). probaj si, npr, odrediti sedmi član fibonacievog niza, i vidi koliko puta on treba izračunati, npr. trećega
.anchy. (napisa):
program računa fibbonacija uz pomoć static niza(primjer 2.3 iz skripte):

Kod:
#include <stdio.h>
#include <stdlib.h>

int fib(int n) {
    static int fib_niz[40]={0};
    if(n<=1) return n;
    if(fib_niz[n]) return fib_niz[n];
    return fib_niz[n]= fib(n-1)+fib(n-2);
}

int main() {
    int n, c;
    scanf("%d", &n);
    c=fib(n);
    printf("%d", c);
    system("pause");
    return 0;
}


tako piše u skripti,no normalno radi i bez
Kod:
if(fib_niz[n]) return fib_niz[n];


je li onda potrebno pisati to,i ako da, zašto? čemu to služi?

unaprijed hvala! Very Happy

bez te lajne bi funkcija jako puno puta računala fib (n). ovako ga računa samo jednom, prvi put kad naiđe na fib (n). probaj si, npr, odrediti sedmi član fibonacievog niza, i vidi koliko puta on treba izračunati, npr. trećega



_________________
Sedam je prost broj Smile

Bolonja je smeće i to pod hitno treba mijenjat
[Vrh]
Korisnički profil Pošaljite privatnu poruku MSNM
.anchy.
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 14. 11. 2007. (20:03:46)
Postovi: (1BC)16
Sarma = la pohva - posuda
= 15 - 11
Lokacija: Zgb

PostPostano: 19:45 pon, 15. 3. 2010    Naslov: Citirajte i odgovorite

još me samo zanima kako alocirati memoriju za 3-dimenzionalna polja?
ovako sam počela
[code:1]x=(int***)malloc(n*sizeof(int**));
for(i=0; i<n; i++)
x[i]=(int**)malloc(n*sizeof(int*));
for(...
[/code:1]
ali dalje neznam :)
još me samo zanima kako alocirati memoriju za 3-dimenzionalna polja?
ovako sam počela
Kod:
x=(int***)malloc(n*sizeof(int**));
    for(i=0; i<n; i++)
        x[i]=(int**)malloc(n*sizeof(int*));
    for(...

ali dalje neznam Smile


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 19:57 pon, 15. 3. 2010    Naslov: Citirajte i odgovorite

Prvo je islo nula petlji. Onda jedna. See the pattern? ;)
Prvo je islo nula petlji. Onda jedna. See the pattern? Wink



_________________
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.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
.anchy.
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 14. 11. 2007. (20:03:46)
Postovi: (1BC)16
Sarma = la pohva - posuda
= 15 - 11
Lokacija: Zgb

PostPostano: 9:56 sub, 20. 3. 2010    Naslov: Citirajte i odgovorite

tak sam i mislila,ali hoću li imat i,j ili j,k u te dve petlje? :?

još jedno pitanje, zbog ove funkcije za alociranje matrice mi se ruši program..
[code:1]void alociraj(int **x,int m, int n) {
int i;
x=(int**)malloc(m*sizeof(int*));
for(i=0;i<n;i++)
x[i]=(int*)malloc(n*sizeof(int));
}[/code:1]
why???
tak sam i mislila,ali hoću li imat i,j ili j,k u te dve petlje? Confused

još jedno pitanje, zbog ove funkcije za alociranje matrice mi se ruši program..
Kod:
void alociraj(int **x,int m, int n) {
    int i;
    x=(int**)malloc(m*sizeof(int*));
    for(i=0;i<n;i++)
                     x[i]=(int*)malloc(n*sizeof(int));
}

why???


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 11:40 sub, 20. 3. 2010    Naslov: Citirajte i odgovorite

[quote=".anchy."]tak sam i mislila,ali hoću li imat i,j ili j,k u te dve petlje? :?[/quote]

Kakve veze nazivi varijabli imaju s bilo cim?

[quote=".anchy."]još jedno pitanje, zbog ove funkcije za alociranje matrice mi se ruši program..
[code:1]void alociraj(int **x,int m, int n) {
int i;
x=(int**)malloc(m*sizeof(int*));
for(i=0;i<n;i++)
x[i]=(int*)malloc(n*sizeof(int));
}[/code:1]
why???[/quote]

Kad imas
[code:1]... f(...x...) {
...
x = bilo sto;
...
}
int main(void) {
... x;
f(...x...);
...
}[/code:1]
u funkciji se mijenja lokalna kopija varijable [tt]x[/tt] iz [tt]main()[/tt]-a. Varijabla [tt]x[/tt] u [tt]main()[/tt]-u ostaje nepromijenjena, pa ti funkcija sve dobro obavi, ali nema nacina vratiti van pointer na novu memoriju.
.anchy. (napisa):
tak sam i mislila,ali hoću li imat i,j ili j,k u te dve petlje? Confused


Kakve veze nazivi varijabli imaju s bilo cim?

.anchy. (napisa):
još jedno pitanje, zbog ove funkcije za alociranje matrice mi se ruši program..
Kod:
void alociraj(int **x,int m, int n) {
    int i;
    x=(int**)malloc(m*sizeof(int*));
    for(i=0;i<n;i++)
                     x[i]=(int*)malloc(n*sizeof(int));
}

why???


Kad imas
Kod:
... f(...x...) {
  ...
  x = bilo sto;
  ...
}
int main(void) {
  ... x;
  f(...x...);
  ...
}

u funkciji se mijenja lokalna kopija varijable x iz main()-a. Varijabla x u main()-u ostaje nepromijenjena, pa ti funkcija sve dobro obavi, ali nema nacina vratiti van pointer na novu memoriju.



_________________
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.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
.anchy.
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 14. 11. 2007. (20:03:46)
Postovi: (1BC)16
Sarma = la pohva - posuda
= 15 - 11
Lokacija: Zgb

PostPostano: 12:20 sub, 20. 3. 2010    Naslov: Citirajte i odgovorite

[quote="vsego"]
Kakve veze nazivi varijabli imaju s bilo cim?
[/quote]
ide li ovako:
[code:1]x=(int***)malloc(n*sizeof(int**));
for(i=0; i<n; i++)
x[i]=(int**)malloc(n*sizeof(int*));
for(j=0;j<n;j++){
for(k=0;k<n;k++)
x[j][k]=(int*)malloc(n*sizeof(int));
[/code:1]

a što se tiče ovog drugog,probala sam i funkciju koja vraća x,ali stalno neke greške javlja..
uglavnom zbog pozivanja,i returna u funkciji..

jedino mi za ovo ne vraća grešku,ali opet ne radi..
[code:1]int alociraj(int **x,int m, int n) {
int i;
x=(int**)malloc(m*sizeof(int*));
for(i=0;i<n;i++)
x[i]=(int*)malloc(n*sizeof(int));
return **x;
}[/code:1]
i sumnjam da je točno,ovaj return mi je čudan..

a u pozivu ne javlja jedino kod ovog grešku:
[code:1]alociraj(x, m, n);[/code:1]
vsego (napisa):

Kakve veze nazivi varijabli imaju s bilo cim?

ide li ovako:
Kod:
x=(int***)malloc(n*sizeof(int**));
    for(i=0; i<n; i++)
        x[i]=(int**)malloc(n*sizeof(int*));
    for(j=0;j<n;j++){
                  for(k=0;k<n;k++)
                        x[j][k]=(int*)malloc(n*sizeof(int));


a što se tiče ovog drugog,probala sam i funkciju koja vraća x,ali stalno neke greške javlja..
uglavnom zbog pozivanja,i returna u funkciji..

jedino mi za ovo ne vraća grešku,ali opet ne radi..
Kod:
int alociraj(int **x,int m, int n) {
    int i;
    x=(int**)malloc(m*sizeof(int*));
    for(i=0;i<n;i++)
                     x[i]=(int*)malloc(n*sizeof(int));
    return **x;
}

i sumnjam da je točno,ovaj return mi je čudan..

a u pozivu ne javlja jedino kod ovog grešku:
Kod:
alociraj(x, m, n);


[Vrh]
Korisnički profil Pošaljite privatnu poruku
ante003
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 10. 2008. (17:45:10)
Postovi: (3C5)16
Spol: muško
Sarma = la pohva - posuda
24 = 71 - 47

PostPostano: 12:46 sub, 20. 3. 2010    Naslov: Citirajte i odgovorite

zasto samo ne skopiras alociranje na mjesta gdje pozivas f-ju ?
zasto samo ne skopiras alociranje na mjesta gdje pozivas f-ju ?



_________________
Ako ste previše otvorenog uma, ispast će vam mozak
------------------------------------------------------
Racunalo bez Windowsa je kao riba bez bicikla
[Vrh]
Korisnički profil Pošaljite privatnu poruku
.anchy.
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 14. 11. 2007. (20:03:46)
Postovi: (1BC)16
Sarma = la pohva - posuda
= 15 - 11
Lokacija: Zgb

PostPostano: 12:51 sub, 20. 3. 2010    Naslov: Citirajte i odgovorite

jer je lakše skopirati u sve programe koje pišem 1 funkciju,pa ju pozvati 5 puta ukoliko je potrebno,nego 5 puta kopirati u mainu! :D

ali nije to razlog,nego da shvatim zašto ne radi..jer očito nešto ne kužim,a neznam što..
jer je lakše skopirati u sve programe koje pišem 1 funkciju,pa ju pozvati 5 puta ukoliko je potrebno,nego 5 puta kopirati u mainu! Very Happy

ali nije to razlog,nego da shvatim zašto ne radi..jer očito nešto ne kužim,a neznam što..


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 12:55 sub, 20. 3. 2010    Naslov: Citirajte i odgovorite

[quote=".anchy."][quote="vsego"]
Kakve veze nazivi varijabli imaju s bilo cim?
[/quote]
ide li ovako:
[code:1]x=(int***)malloc(n*sizeof(int**));
for(i=0; i<n; i++)
x[i]=(int**)malloc(n*sizeof(int*));
for(j=0;j<n;j++){
for(k=0;k<n;k++)
x[j][k]=(int*)malloc(n*sizeof(int));
[/code:1][/quote]

Da, ali lakse je ovako:

[code:1]x = (int***)malloc(n * sizeof(int**));
for(i = 0; i < n; ++i) {
x[i] = (int**)malloc(n * sizeof(int*));
for(j = 0; j < n; ++j)
x[i][j] = (int*)malloc(n * sizeof(int));
}[/code:1]

[quote=".anchy."]a što se tiče ovog drugog,probala sam i funkciju koja vraća x,ali stalno neke greške javlja..
uglavnom zbog pozivanja,i returna u funkciji..
jedino mi za ovo ne vraća grešku,ali opet ne radi..
[code:1]int alociraj(int **x,int m, int n) {
int i;
x=(int**)malloc(m*sizeof(int*));
for(i=0;i<n;i++)
x[i]=(int*)malloc(n*sizeof(int));
return **x;
}[/code:1]
i sumnjam da je točno,ovaj return mi je čudan..[/quote]

Ako je [tt]x[/tt] (koji zelis vratiti) tipa [tt]int**[/tt], onda to treba biti i povratni tip funkcije:
[code:1]int **alociraj(int m, int n) {
int i, **x;
x = (int**)malloc(m * sizeof(int*));
for(i = 0; i < n; ++i)
x[i]=(int*)malloc(n * sizeof(int));
return x;
}[/code:1]

Molim baciti oko na skriptu; tamo ima takva funkcija.

[quote=".anchy."]a u pozivu ne javlja jedino kod ovog grešku:
[code:1]alociraj(x, m, n);[/code:1][/quote]

Taj poziv opet ne pokupi ono sto je vraceno [tt]return[/tt]-om. Uz ovu moju funkciju gore, ispravan poziv je:
[code:1]x = alociraj(m, n);[/code:1]

Moze se to i preko varijabilnih parametara, ali bude ponesto zvjezdica vise.

[quote="ante003"]zasto samo ne skopiras alociranje na mjesta gdje pozivas f-ju ?[/quote]

:tup:

Zato jer zeli nauciti kako se to radi i zato jer ne zeli isti kod pisati pet puta (npr. na papiru gdje nema copy/paste).
.anchy. (napisa):
vsego (napisa):

Kakve veze nazivi varijabli imaju s bilo cim?

ide li ovako:
Kod:
x=(int***)malloc(n*sizeof(int**));
    for(i=0; i<n; i++)
        x[i]=(int**)malloc(n*sizeof(int*));
    for(j=0;j<n;j++){
                  for(k=0;k<n;k++)
                        x[j][k]=(int*)malloc(n*sizeof(int));


Da, ali lakse je ovako:

Kod:
x = (int***)malloc(n * sizeof(int**));
for(i = 0; i < n; ++i) {
  x[i] = (int**)malloc(n * sizeof(int*));
  for(j = 0; j < n; ++j)
    x[i][j] = (int*)malloc(n * sizeof(int));
}


.anchy. (napisa):
a što se tiče ovog drugog,probala sam i funkciju koja vraća x,ali stalno neke greške javlja..
uglavnom zbog pozivanja,i returna u funkciji..
jedino mi za ovo ne vraća grešku,ali opet ne radi..
Kod:
int alociraj(int **x,int m, int n) {
    int i;
    x=(int**)malloc(m*sizeof(int*));
    for(i=0;i<n;i++)
                     x[i]=(int*)malloc(n*sizeof(int));
    return **x;
}

i sumnjam da je točno,ovaj return mi je čudan..


Ako je x (koji zelis vratiti) tipa int**, onda to treba biti i povratni tip funkcije:
Kod:
int **alociraj(int m, int n) {
  int i, **x;
  x = (int**)malloc(m * sizeof(int*));
  for(i = 0; i < n; ++i)
    x[i]=(int*)malloc(n * sizeof(int));
  return x;
}


Molim baciti oko na skriptu; tamo ima takva funkcija.

.anchy. (napisa):
a u pozivu ne javlja jedino kod ovog grešku:
Kod:
alociraj(x, m, n);


Taj poziv opet ne pokupi ono sto je vraceno return-om. Uz ovu moju funkciju gore, ispravan poziv je:
Kod:
x = alociraj(m, n);


Moze se to i preko varijabilnih parametara, ali bude ponesto zvjezdica vise.

ante003 (napisa):
zasto samo ne skopiras alociranje na mjesta gdje pozivas f-ju ?


Tup!

Zato jer zeli nauciti kako se to radi i zato jer ne zeli isti kod pisati pet puta (npr. na papiru gdje nema copy/paste).



_________________
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.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
.anchy.
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 14. 11. 2007. (20:03:46)
Postovi: (1BC)16
Sarma = la pohva - posuda
= 15 - 11
Lokacija: Zgb

PostPostano: 13:34 sub, 20. 3. 2010    Naslov: Citirajte i odgovorite

hvala!! tražila sam po skripti,ali samo po višedimenzionalnim poljima.. :oops: no,našla sam sad taj zadatak!

ps.[quote="vsego"]Zato jer zeli nauciti kako se to radi i zato jer ne zeli isti kod pisati pet puta (npr. na papiru gdje nema copy/paste).[/quote]
nadam se da to nije bila ironija,ili nedaj bože sarkazam,nego samo isto mislimo! :D
hvala!! tražila sam po skripti,ali samo po višedimenzionalnim poljima.. Embarassed no,našla sam sad taj zadatak!

ps.
vsego (napisa):
Zato jer zeli nauciti kako se to radi i zato jer ne zeli isti kod pisati pet puta (npr. na papiru gdje nema copy/paste).

nadam se da to nije bila ironija,ili nedaj bože sarkazam,nego samo isto mislimo! Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
matmih
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 12. 2006. (22:57:42)
Postovi: (1A4)16
Spol: muško
Sarma = la pohva - posuda
36 = 51 - 15
Lokacija: {Zg, De , Ri}

PostPostano: 14:26 sub, 20. 3. 2010    Naslov: Citirajte i odgovorite

Meni se čini da je greškica i u tome šta alociramo m redaka, tj pointera, a zatim u for petlji želimo svakom od n redaka dati n stupaca.
Dakle ako je n>m program bi se trebao srušit.
Meni se čini da je greškica i u tome šta alociramo m redaka, tj pointera, a zatim u for petlji želimo svakom od n redaka dati n stupaca.
Dakle ako je n>m program bi se trebao srušit.


[Vrh]
Korisnički profil Pošaljite privatnu poruku MSNM
Redeemer
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 06. 2006. (21:57:04)
Postovi: (B9)16
Spol: muško
Sarma = la pohva - posuda
-11 = 31 - 42
Lokacija: Wo'liegt'dieses'verdammte'dorf

PostPostano: 17:22 sub, 20. 3. 2010    Naslov: Citirajte i odgovorite

[quote="vsego"]

Zato jer .[/quote]


:tup:


zato [b]što[/b].

:D
vsego (napisa):


Zato jer .



Tup!


zato što.

Very Happy



_________________
Nigdje ne piše da morate studirati ovdje.
[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 19:24 sub, 20. 3. 2010    Naslov: Citirajte i odgovorite

[quote="matmih"]Meni se čini da je greškica i u tome šta alociramo m redaka, tj pointera, a zatim u for petlji želimo svakom od n redaka dati n stupaca.
Dakle ako je n>m program bi se trebao srušit.[/quote]

...a ako je n<m alocira predugacki niz redaka za koje nece alocirati memoriju (ne za sve njih). Da, u pravu si. Nisam primijetio koje slovo kolegica koristi.

[quote=".anchy."]ps.[quote="vsego"]Zato jer zeli nauciti kako se to radi i zato jer ne zeli isti kod pisati pet puta (npr. na papiru gdje nema copy/paste).[/quote]
nadam se da to nije bila ironija,ili nedaj bože sarkazam,nego samo isto mislimo! :D[/quote]

Nije ironija.
matmih (napisa):
Meni se čini da je greškica i u tome šta alociramo m redaka, tj pointera, a zatim u for petlji želimo svakom od n redaka dati n stupaca.
Dakle ako je n>m program bi se trebao srušit.


...a ako je n<m alocira predugacki niz redaka za koje nece alocirati memoriju (ne za sve njih). Da, u pravu si. Nisam primijetio koje slovo kolegica koristi.

.anchy. (napisa):
ps.
vsego (napisa):
Zato jer zeli nauciti kako se to radi i zato jer ne zeli isti kod pisati pet puta (npr. na papiru gdje nema copy/paste).

nadam se da to nije bila ironija,ili nedaj bože sarkazam,nego samo isto mislimo! Very Happy


Nije ironija.



_________________
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.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
.anchy.
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 14. 11. 2007. (20:03:46)
Postovi: (1BC)16
Sarma = la pohva - posuda
= 15 - 11
Lokacija: Zgb

PostPostano: 8:45 ned, 28. 3. 2010    Naslov: Citirajte i odgovorite

Napišite funkciju koja kao argument prima jedan string s, jedno slovo c (deklarira se kao char, ali garantiramo da će korisnik zadati slovo) i jedan broj n. Funkcija treba n-terostručiti svako pojavljivanje slova c u stringu s, neovisno o tome je li riječ o malom ili velikom slovu. Na primjer, ako su zadani string "Popokatepet1", znak ’p’ i broj 4, promijenjeni string treba biti "PPPPoppppokateppppet1".
[code:1]#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

void dupliciraj(char s[],char p,int n){
int i,j=0;
int pom=n-1;
for(i=0;s[i]!='\0';i++){
s[i]=tolower(s[i]);
if(s[i]==p)j+=n-1;
}
for(;i>=0;i--){ s[j+i]=s[i];
if(s[i]==p){
n=pom;
while(n){
s[i+(--j)]=s[i];
n--;
}
}
}
}

int main() {
char s[20];
char p;
int n;
scanf("%[^\n]", s);
scanf("%c", &p);
scanf("%d",&n);
dupliciraj(s,p,n);
printf("%s", s);
system("pause");
return 0;
}
[/code:1]
ne želi mi raditi zbog ovog p-a.probala sam ga učitati kao string,staviti jednostruke navodnike kod poziva funkcije,maknut & kod scanf-a,ali mi se samo ovako ne ruši program,no ne radi dobro..sve je ok ako p ne učitam,nego ga pošaljem kao 'p'.

edit:skužila sam,problem je u glupom razmaku ispred %c :evil:

tj.zaboravih još kako un-terostručiti veliko slovo,kako zapamtim da je bilo veliko kod tolowera?


i može uputa za ovo,ne razumijem što je niz stringova,kako bi ga učitala,poslala u funkciju,kako petlja ide..
Napišite funkciju koja uzima četiri argumenta: niz stringova s, broj stringova u nizu n, te znakove c1 i c2. Funkcija treba obrisati sva pojavljivanja znaka c1 i duplicirati sva pojavljivanja znaka c2 u stringovima u nizu s. Smijete pretpostaviti da je c1 != c2.
Uputa. Funkciju možete jednostavno realizirati pomoću rješenja prethodnog zadatka. Dovoljna je jedna for()-petlja koja za svaki element niza poziva funkciju iz prethodnog zadatka.
evo prethodnog zadatka:
[code:1]#include <stdio.h>
#include <stdlib.h>

void f(char s[], char c1, char c2){
int i,j=0,k=0;
for(i=0;s[i]!='\0';i++){
if(s[i]==c2)j++;
if(s[i]!=c1) s[k++]=s[i];
}
s[k]='\0';
for(;i>=0;i--){
s[j+i]=s[i];
if(s[i]==c2) s[i+(j--)]=s[i];
}
}

int main(){
char s[30];
char c1, c2;
scanf("%[^\n]", s);
scanf(" %c %c", &c1, &c2);
f(s,c1,c2);
printf("%s", s);
system("pause");
return 0;
}
[/code:1]
Napišite funkciju koja kao argument prima jedan string s, jedno slovo c (deklarira se kao char, ali garantiramo da će korisnik zadati slovo) i jedan broj n. Funkcija treba n-terostručiti svako pojavljivanje slova c u stringu s, neovisno o tome je li riječ o malom ili velikom slovu. Na primjer, ako su zadani string "Popokatepet1", znak ’p’ i broj 4, promijenjeni string treba biti "PPPPoppppokateppppet1".
Kod:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

void dupliciraj(char s[],char p,int n){
     int i,j=0;
     int pom=n-1;
     for(i=0;s[i]!='\0';i++){
             s[i]=tolower(s[i]);
             if(s[i]==p)j+=n-1;
             }
     for(;i>=0;i--){ s[j+i]=s[i];
          if(s[i]==p){
                      n=pom;
                      while(n){
                                s[i+(--j)]=s[i];
                                n--;
                      }
                       }
     }
}

int main() {
    char s[20];
    char p;
    int n;
    scanf("%[^\n]", s);
    scanf("%c", &p);
    scanf("%d",&n);
    dupliciraj(s,p,n);
    printf("%s", s);
    system("pause");
    return 0;
}

ne želi mi raditi zbog ovog p-a.probala sam ga učitati kao string,staviti jednostruke navodnike kod poziva funkcije,maknut & kod scanf-a,ali mi se samo ovako ne ruši program,no ne radi dobro..sve je ok ako p ne učitam,nego ga pošaljem kao 'p'.

edit:skužila sam,problem je u glupom razmaku ispred %c Evil or Very Mad

tj.zaboravih još kako un-terostručiti veliko slovo,kako zapamtim da je bilo veliko kod tolowera?


i može uputa za ovo,ne razumijem što je niz stringova,kako bi ga učitala,poslala u funkciju,kako petlja ide..
Napišite funkciju koja uzima četiri argumenta: niz stringova s, broj stringova u nizu n, te znakove c1 i c2. Funkcija treba obrisati sva pojavljivanja znaka c1 i duplicirati sva pojavljivanja znaka c2 u stringovima u nizu s. Smijete pretpostaviti da je c1 != c2.
Uputa. Funkciju možete jednostavno realizirati pomoću rješenja prethodnog zadatka. Dovoljna je jedna for()-petlja koja za svaki element niza poziva funkciju iz prethodnog zadatka.
evo prethodnog zadatka:
Kod:
#include <stdio.h>
#include <stdlib.h>

void f(char s[], char c1, char c2){
     int i,j=0,k=0;
     for(i=0;s[i]!='\0';i++){
                             if(s[i]==c2)j++;
                             if(s[i]!=c1) s[k++]=s[i];
                             }
     s[k]='\0';
     for(;i>=0;i--){
                    s[j+i]=s[i];
                    if(s[i]==c2) s[i+(j--)]=s[i];
                    }
}

int main(){
    char s[30];
    char c1, c2;
    scanf("%[^\n]", s);
    scanf(" %c %c", &c1, &c2);
    f(s,c1,c2);
    printf("%s", s);
    system("pause");
    return 0;
}                   


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 13:09 ned, 28. 3. 2010    Naslov: Citirajte i odgovorite

Vidim da si rijesila problem, no prvi kod ima i bug da nece raditi ako u [tt]p[/tt] ubacis veliko slovo. Treba ti
[code:1]p = tolower(p);[/code:1]
na pocetku funkcije.

Sto je niz brojeva? Tako je i niz stringova. Npr.
[code:1]char niz[17][19];[/code:1]
je niz od 17 stringova, svaki duljine najvise 18 znakova. Ucitas kao i brojeve, u petlji.
Vidim da si rijesila problem, no prvi kod ima i bug da nece raditi ako u p ubacis veliko slovo. Treba ti
Kod:
p = tolower(p);

na pocetku funkcije.

Sto je niz brojeva? Tako je i niz stringova. Npr.
Kod:
char niz[17][19];

je niz od 17 stringova, svaki duljine najvise 18 znakova. Ucitas kao i brojeve, u petlji.



_________________
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.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
.anchy.
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 14. 11. 2007. (20:03:46)
Postovi: (1BC)16
Sarma = la pohva - posuda
= 15 - 11
Lokacija: Zgb

PostPostano: 15:17 ned, 28. 3. 2010    Naslov: Citirajte i odgovorite

hm,učitavanje mi je uspjelo,ali ona petlja u funkciji je postala beskonačna..
samo sam uvela još jednu for petlju od r=0 do n ispred svih ovih,i promjenila sve s[i] i slične u s[r] [i],ali očito nije točno..zašto? :(
hm,učitavanje mi je uspjelo,ali ona petlja u funkciji je postala beskonačna..
samo sam uvela još jednu for petlju od r=0 do n ispred svih ovih,i promjenila sve s[i] i slične u s[r] [i],ali očito nije točno..zašto? Sad


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 18:28 ned, 28. 3. 2010    Naslov: Citirajte i odgovorite

Sad bih ja trebao rekonstruirati tvoj kod? Daj, nakelji aktualnu verziju, da ne pricamo napamet...
Sad bih ja trebao rekonstruirati tvoj kod? Daj, nakelji aktualnu verziju, da ne pricamo napamet...



_________________
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.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
.anchy.
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 14. 11. 2007. (20:03:46)
Postovi: (1BC)16
Sarma = la pohva - posuda
= 15 - 11
Lokacija: Zgb

PostPostano: 9:19 pon, 29. 3. 2010    Naslov: Citirajte i odgovorite

evo:
[code:1]#include <stdio.h>
#include <stdlib.h>

void f(char s[][30], char c1, char c2, int n){
int i,j=0,k=0,l;
for(l=0;l<n;l++){
for(i=0;s[l][i]!='\0';i++){
if(s[l][i]==c2)j++;
if(s[l][i]!=c1) s[l][k++]=s[l][i];
}
s[l][k]='\0';
for(;i>=0;i--){
s[l][j+i]=s[l][i];
if(s[l][i]==c2) s[l][i+(j--)]=s[l][i];
}
}
}

int main(){
char s[15][30];
char c1, c2;
int n,i;
scanf("%d", &n);
for(i=0;i<n;i++) scanf(" %[^\n]", s[i]);
scanf(" %c %c", &c1, &c2);
f(s,c1,c2,n);
for(i=0;i<n;i++)
printf("%s", s[i]);
system("pause");
return 0;
}
[/code:1]
evo:
Kod:
#include <stdio.h>
#include <stdlib.h>

void f(char s[][30], char c1, char c2, int n){
     int i,j=0,k=0,l;
     for(l=0;l<n;l++){
     for(i=0;s[l][i]!='\0';i++){
                             if(s[l][i]==c2)j++;
                             if(s[l][i]!=c1) s[l][k++]=s[l][i];
                             }
     s[l][k]='\0';
     for(;i>=0;i--){
                    s[l][j+i]=s[l][i];
                    if(s[l][i]==c2) s[l][i+(j--)]=s[l][i];
                    }
     }
}

int main(){
    char s[15][30];
    char c1, c2;
    int n,i;
    scanf("%d", &n);
    for(i=0;i<n;i++) scanf(" %[^\n]", s[i]);
    scanf(" %c %c", &c1, &c2);
    f(s,c1,c2,n);
    for(i=0;i<n;i++)
    printf("%s", s[i]);
    system("pause");
    return 0;
}                   


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Idite na 1, 2  Sljedeće
Stranica 1 / 2.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan