Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
.anchy. Forumaš(ica)

Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
Postano: 13:05 pon, 15. 3. 2010 Naslov: zadatak-pomoć |
|
|
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!
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
Postano: 13:30 pon, 15. 3. 2010 Naslov: |
|
|
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. 
|
|
[Vrh] |
|
Milojko Forumaš(ica)


Pridružen/a: 07. 11. 2008. (14:57:52) Postovi: (453)16
Spol: 
Lokacija: Hilbertov hotel
|
Postano: 14:04 pon, 15. 3. 2010 Naslov: Re: zadatak-pomoć |
|
|
[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!  |
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
Bolonja je smeće i to pod hitno treba mijenjat
|
|
[Vrh] |
|
.anchy. Forumaš(ica)

Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
.anchy. Forumaš(ica)

Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
Postano: 9:56 sub, 20. 3. 2010 Naslov: |
|
|
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?
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] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
Postano: 11:40 sub, 20. 3. 2010 Naslov: |
|
|
[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?  |
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. 
|
|
[Vrh] |
|
.anchy. Forumaš(ica)

Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
Postano: 12:20 sub, 20. 3. 2010 Naslov: |
|
|
[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:
|
|
[Vrh] |
|
ante003 Forumaš(ica)


Pridružen/a: 13. 10. 2008. (17:45:10) Postovi: (3C5)16
Spol: 
|
|
[Vrh] |
|
.anchy. Forumaš(ica)

Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
Postano: 12:55 sub, 20. 3. 2010 Naslov: |
|
|
[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:
|
Taj poziv opet ne pokupi ono sto je vraceno return-om. Uz ovu moju funkciju gore, ispravan poziv je:
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 ? |
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. 
|
|
[Vrh] |
|
.anchy. Forumaš(ica)

Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
|
[Vrh] |
|
matmih Forumaš(ica)


Pridružen/a: 07. 12. 2006. (22:57:42) Postovi: (1A4)16
Spol: 
Lokacija: {Zg, De , Ri}
|
|
[Vrh] |
|
Redeemer Forumaš(ica)


Pridružen/a: 12. 06. 2006. (21:57:04) Postovi: (B9)16
Spol: 
Lokacija: Wo'liegt'dieses'verdammte'dorf
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
Postano: 19:24 sub, 20. 3. 2010 Naslov: |
|
|
[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!  |
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. 
|
|
[Vrh] |
|
.anchy. Forumaš(ica)

Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
Postano: 8:45 ned, 28. 3. 2010 Naslov: |
|
|
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
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] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
Postano: 13:09 ned, 28. 3. 2010 Naslov: |
|
|
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
na pocetku funkcije.
Sto je niz brojeva? Tako je i niz stringova. Npr.
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. 
|
|
[Vrh] |
|
.anchy. Forumaš(ica)

Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
.anchy. Forumaš(ica)

Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
Postano: 9:19 pon, 29. 3. 2010 Naslov: |
|
|
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] |
|
|