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


Pridružen/a: 22. 11. 2007. (17:52:27) Postovi: (12F)16
Spol: 
|
Postano: 21:03 uto, 28. 4. 2009 Naslov: |
|
|
jel može neko bacit oko na ovo pa reč zakaj ne radi kak bi trebalo :? (zadatak iz skripte)
[code:1]
// zadatak 4.9
#include<stdio.h>
#include<stdlib.h>
int Prost(int x){
int i;
if(x==1) return 0;
if(x==2) return 1;
for(i=2; i<x; i++)
if(x%i==0) return 0;
else return 1;
}
int main(){
int n, i, *a, *b, suma=0;
scanf("%d", &n);
if(n>0){
a=(int*)malloc(n * sizeof(int));
if(a==NULL){
printf("Greska!\n");
exit(1);
}
for(i=0; i<n; i++)
scanf("d", &a[i]);
}
for(i=0; i<n; i++)
suma=suma + a[i];
if(suma>0){
b=(int*)malloc(suma * sizeof(int));
if(b==NULL){
printf("Greska!\n");
exit(1);
}
for(i=0; i<suma; i++)
scanf("%d", &b[i]);
}
for(i=0; i<suma; i++)
if( Prost(b[i])==1 ) printf("%d ", b[i]);
scanf("%%");
return 0;
}
[/code:1]
jel može neko bacit oko na ovo pa reč zakaj ne radi kak bi trebalo (zadatak iz skripte)
Kod: |
// zadatak 4.9
#include<stdio.h>
#include<stdlib.h>
int Prost(int x){
int i;
if(x==1) return 0;
if(x==2) return 1;
for(i=2; i<x; i++)
if(x%i==0) return 0;
else return 1;
}
int main(){
int n, i, *a, *b, suma=0;
scanf("%d", &n);
if(n>0){
a=(int*)malloc(n * sizeof(int));
if(a==NULL){
printf("Greska!\n");
exit(1);
}
for(i=0; i<n; i++)
scanf("d", &a[i]);
}
for(i=0; i<n; i++)
suma=suma + a[i];
if(suma>0){
b=(int*)malloc(suma * sizeof(int));
if(b==NULL){
printf("Greska!\n");
exit(1);
}
for(i=0; i<suma; i++)
scanf("%d", &b[i]);
}
for(i=0; i<suma; i++)
if( Prost(b[i])==1 ) printf("%d ", b[i]);
scanf("%%");
return 0;
}
|
|
|
[Vrh] |
|
Spectre Forumaš(ica)


Pridružen/a: 02. 10. 2006. (16:58:05) Postovi: (167)16
Spol: 
|
Postano: 21:14 uto, 28. 4. 2009 Naslov: |
|
|
Kod učitavanja elemenata niza [b]a[/b] imaš scanf("d", &a[i]), fali ti %.
[size=9]Komentari nevezani uz tvoj problem:
suma=suma + a[i]; se može napisati kao suma+=a[i];
Kod provjere da li je x prost, dovoljno je ići do sqrt(x), za što ti treba math.h, ili do x/2 ako ne želiš math.h. A i može krenuti od 3, 2 već imaš u gornjem uvjetu.[/size]
Kod učitavanja elemenata niza a imaš scanf("d", &a[i]), fali ti %.
Komentari nevezani uz tvoj problem:
suma=suma + a[i]; se može napisati kao suma+=a[i];
Kod provjere da li je x prost, dovoljno je ići do sqrt(x), za što ti treba math.h, ili do x/2 ako ne želiš math.h. A i može krenuti od 3, 2 već imaš u gornjem uvjetu.
_________________ Cry havoc, and let loose the dogs of war!
|
|
[Vrh] |
|
lucika Forumaš(ica)


Pridružen/a: 22. 11. 2007. (17:52:27) Postovi: (12F)16
Spol: 
|
|
[Vrh] |
|
Gino Forumaš(ica)

Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
Postano: 21:33 uto, 28. 4. 2009 Naslov: |
|
|
[quote="lucika"]jel može neko bacit oko na ovo pa reč zakaj ne radi kak bi trebalo :? (zadatak iz skripte)
[code:1]
int Prost(int x){
int i;
if(x==1) return 0;
if(x==2) return 1;
for(i=2; i<x; i++)
if(x%i==0) return 0;
else return 1;
[/code:1][/quote]
to nije dobro jer 9 nije prost
i sta ti se desi u programu ako je n ili suma <=0
ja sam ovako...
[code:1]#include <stdio.h>
#include <stdlib.h>
int prost(int n){
if(n<2) return 0;
if(n==2) return 1;
int i;
for(i=2;i<n;i++) if(n%i==0) return 0;
return 1;
}
int main(){
int n,i,*a,*b,suma=0;
scanf("%d",&n);
if(n>0){
a=(int*) malloc (n*sizeof(int));
if(a==NULL) exit(1);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
suma+=a[i];
}
free(a);
if(suma>0){
b=(int*) malloc (suma*sizeof(int));
if(b==NULL) exit(1);
for(i=0;i<suma;i++) scanf("%d",&b[i]);
for(i=0;i<suma;i++)
if(prost(b[i])) printf("%d ",b[i]);
free(b);
}
}
system("pause");
return 0;
}
[/code:1]
lucika (napisa): | jel može neko bacit oko na ovo pa reč zakaj ne radi kak bi trebalo (zadatak iz skripte)
Kod: |
int Prost(int x){
int i;
if(x==1) return 0;
if(x==2) return 1;
for(i=2; i<x; i++)
if(x%i==0) return 0;
else return 1;
|
|
to nije dobro jer 9 nije prost
i sta ti se desi u programu ako je n ili suma ⇐0
ja sam ovako...
Kod: | #include <stdio.h>
#include <stdlib.h>
int prost(int n){
if(n<2) return 0;
if(n==2) return 1;
int i;
for(i=2;i<n;i++) if(n%i==0) return 0;
return 1;
}
int main(){
int n,i,*a,*b,suma=0;
scanf("%d",&n);
if(n>0){
a=(int*) malloc (n*sizeof(int));
if(a==NULL) exit(1);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
suma+=a[i];
}
free(a);
if(suma>0){
b=(int*) malloc (suma*sizeof(int));
if(b==NULL) exit(1);
for(i=0;i<suma;i++) scanf("%d",&b[i]);
for(i=0;i<suma;i++)
if(prost(b[i])) printf("%d ",b[i]);
free(b);
}
}
system("pause");
return 0;
}
|
_________________ Mario Berljafa
|
|
[Vrh] |
|
markotron Forumaš(ica)

Pridružen/a: 26. 10. 2008. (12:07:29) Postovi: (95)16
Spol: 
Lokacija: Umag
|
|
[Vrh] |
|
bimar Forumaš(ica)


Pridružen/a: 16. 11. 2008. (14:45:25) Postovi: (61)16
Lokacija: arkadija
|
Postano: 22:11 uto, 28. 4. 2009 Naslov: |
|
|
što ne valja s ovim ??
[code:1]
#include <stdio.h>
#include <stdlib.h>
int rek(int n, int prvi){
int i,rez;
for (i=2;i<n;i++)
if (prvi%i==0) return 0;
if (n==0) return 1;
if (n<0) return 0;
if (prvi>n) return 0;
for(i=prvi; i<n;i++)
rez=rez + rek(n-i,i);
return rez;
}
int main(void)
{
int i,j,k,n,prvi;
printf("reci broj n i koji ti je prvi");
scanf("%d %d", &n,&prvi);
printf("broj mogucih kombinacija jeste %d", rek(n,prvi));
scanf("%%");
return(0);
}
[/code:1]
napišite funkciju koja ima bar jedan argument n..i koja vraća broj različitih načina na koje se n može prikazati kao suma prostih brojeva...
redoslijed sumanada je bitan...znači 2+3+5 je isto što i 3+2+5
što ne valja s ovim ??
Kod: |
#include <stdio.h>
#include <stdlib.h>
int rek(int n, int prvi){
int i,rez;
for (i=2;i<n;i++)
if (prvi%i==0) return 0;
if (n==0) return 1;
if (n<0) return 0;
if (prvi>n) return 0;
for(i=prvi; i<n;i++)
rez=rez + rek(n-i,i);
return rez;
}
int main(void)
{
int i,j,k,n,prvi;
printf("reci broj n i koji ti je prvi");
scanf("%d %d", &n,&prvi);
printf("broj mogucih kombinacija jeste %d", rek(n,prvi));
scanf("%%");
return(0);
}
|
napišite funkciju koja ima bar jedan argument n..i koja vraća broj različitih načina na koje se n može prikazati kao suma prostih brojeva...
redoslijed sumanada je bitan...znači 2+3+5 je isto što i 3+2+5
|
|
[Vrh] |
|
Gino Forumaš(ica)

Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
Postano: 22:26 uto, 28. 4. 2009 Naslov: |
|
|
[quote="bimar"]što ne valja s ovim ??
[code:1]
printf("reci broj n i koji ti je prvi");
[/code:1]
je bitan...znači 2+3+5 je isto što i 3+2+5[/quote]
:lol:
neznam sad sta ti ne valja, al ja bi ovako rjesio
[code:1]#include <stdio.h>
#include <stdlib.h>
int prost(int n){
if(n<2) return 0;
if(n==2) return 1;
int i;
for(i=2;i<n;i++) if(n%i==0) return 0;
return 1;
}
int f(int n, int koji){
int koliko=0,i;
if(n==0) return 1;
if(n<0) return 0;
for(i=koji;i<=n;i++)
if(prost(i)) koliko+=f(n-i,i);
return koliko;
}
int main(){
printf("%d",f(12,2));
system("pause");
}[/code:1]
radio sam da je ono isto odnosno redosljed nije vazan
bimar (napisa): | što ne valja s ovim ??
Kod: |
printf("reci broj n i koji ti je prvi");
|
je bitan...znači 2+3+5 je isto što i 3+2+5 |
neznam sad sta ti ne valja, al ja bi ovako rjesio
Kod: | #include <stdio.h>
#include <stdlib.h>
int prost(int n){
if(n<2) return 0;
if(n==2) return 1;
int i;
for(i=2;i<n;i++) if(n%i==0) return 0;
return 1;
}
int f(int n, int koji){
int koliko=0,i;
if(n==0) return 1;
if(n<0) return 0;
for(i=koji;i<=n;i++)
if(prost(i)) koliko+=f(n-i,i);
return koliko;
}
int main(){
printf("%d",f(12,2));
system("pause");
} |
radio sam da je ono isto odnosno redosljed nije vazan
_________________ Mario Berljafa
|
|
[Vrh] |
|
JANKRI Forumaš(ica)

Pridružen/a: 10. 07. 2008. (02:30:58) Postovi: (10F)16
Spol: 
Lokacija: Zagreb
|
Postano: 22:57 uto, 28. 4. 2009 Naslov: |
|
|
Ne znam što ti ne valja, ali uočio sam nekoliko sitnica, prvo, postavi na početku rez na 0, jer inače ne znaš što je, drugo, "reci koji je prvi", nema on šta reći, trebaš kao sumu prostih brojeva, prvi prost broj je broj 2... :)
Evo sad moj algoritam i kod: Dakle, prvo generiram polje prostih brojeva od 1 do n (polje b u kodu, polje a služi za eratostenovo sito nad brojevima 1-n). Ukoliko se ne bi smjeli korisiti nizovi, onda mislim da bi ovo Gino-ovo bilo ok. Što se tiče rekurzije, mislim da je jasno što radi, nadam se da je dobro... :)
[code:1]
#include<stdio.h>
int rek(int n, int prvi, int *niz, int m)
{
if(n==0) return 1;
if(n<0) return 0;
int cnt=0, i;
for(i=0; i<m; ++i)
if(prvi<=niz[i]) cnt+=rek(n-niz[i], niz[i], niz, m);
return cnt;
}
int main(void)
{
int n, *a, *b, koliko=0, i, j, p;
scanf("%d", &n);
a=(int*) malloc((n+1)*sizeof(int));
for(i=3; i<=n; i+=2) a[i]=0;
for(i=3; i<=n; i+=2)
if(a[i]==0)
{
koliko++;
p=i*i;
while(p<=n)
{
a[p]=1;
p+=2*i;
}
}
b=(int*) malloc((koliko+1)*sizeof(int));
b[0]=2;
j=1;
for(i=3; i<=n; ++i) if(a[i]==0) b[j++]=i;
printf("%d\n", rek(n, 2, b, koliko+1));
free(a);
free(b);
return 0;
}
[/code:1]
Ne znam što ti ne valja, ali uočio sam nekoliko sitnica, prvo, postavi na početku rez na 0, jer inače ne znaš što je, drugo, "reci koji je prvi", nema on šta reći, trebaš kao sumu prostih brojeva, prvi prost broj je broj 2...
Evo sad moj algoritam i kod: Dakle, prvo generiram polje prostih brojeva od 1 do n (polje b u kodu, polje a služi za eratostenovo sito nad brojevima 1-n). Ukoliko se ne bi smjeli korisiti nizovi, onda mislim da bi ovo Gino-ovo bilo ok. Što se tiče rekurzije, mislim da je jasno što radi, nadam se da je dobro...
Kod: |
#include<stdio.h>
int rek(int n, int prvi, int *niz, int m)
{
if(n==0) return 1;
if(n<0) return 0;
int cnt=0, i;
for(i=0; i<m; ++i)
if(prvi<=niz[i]) cnt+=rek(n-niz[i], niz[i], niz, m);
return cnt;
}
int main(void)
{
int n, *a, *b, koliko=0, i, j, p;
scanf("%d", &n);
a=(int*) malloc((n+1)*sizeof(int));
for(i=3; i<=n; i+=2) a[i]=0;
for(i=3; i<=n; i+=2)
if(a[i]==0)
{
koliko++;
p=i*i;
while(p<=n)
{
a[p]=1;
p+=2*i;
}
}
b=(int*) malloc((koliko+1)*sizeof(int));
b[0]=2;
j=1;
for(i=3; i<=n; ++i) if(a[i]==0) b[j++]=i;
printf("%d\n", rek(n, 2, b, koliko+1));
free(a);
free(b);
return 0;
}
|
|
|
[Vrh] |
|
malena Forumaš(ica)

Pridružen/a: 27. 03. 2009. (16:43:42) Postovi: (62)16
Spol: 
Lokacija: ...
|
Postano: 23:08 uto, 28. 4. 2009 Naslov: |
|
|
[quote="bimar"]što ne valja s ovim ??
[code:1]
#include <stdio.h>
#include <stdlib.h>
int rek(int n, int prvi){
int i,rez;
for (i=2;i<n;i++)
if (prvi%i==0) return 0; /*ako je djeljiv triba vratiti 1*/
if (n==0) return 1; /* kako prod inicijaliziramo na 1 tako i n mora doci na 1*/
if (n<0) return 0; /*zasto*/
if (prvi>n) return 0; /*nepotrebno*/
for(i=prvi; i<n;i++)
rez=rez + rek(n-i,i);
return rez;
}
int main(void)
{
int i,j,k,n,prvi;
printf("reci broj n i koji ti je prvi");
scanf("%d %d", &n,&prvi);
printf("broj mogucih kombinacija jeste %d", rek(n,prvi));
scanf("%%");
return(0);
}
[/code:1]
[/quote]
bimar (napisa): | što ne valja s ovim ??
Kod: |
#include <stdio.h>
#include <stdlib.h>
int rek(int n, int prvi){
int i,rez;
for (i=2;i<n;i++)
if (prvi%i==0) return 0; /*ako je djeljiv triba vratiti 1*/
if (n==0) return 1; /* kako prod inicijaliziramo na 1 tako i n mora doci na 1*/
if (n<0) return 0; /*zasto*/
if (prvi>n) return 0; /*nepotrebno*/
for(i=prvi; i<n;i++)
rez=rez + rek(n-i,i);
return rez;
}
int main(void)
{
int i,j,k,n,prvi;
printf("reci broj n i koji ti je prvi");
scanf("%d %d", &n,&prvi);
printf("broj mogucih kombinacija jeste %d", rek(n,prvi));
scanf("%%");
return(0);
}
|
|
|
|
[Vrh] |
|
Spectre Forumaš(ica)


Pridružen/a: 02. 10. 2006. (16:58:05) Postovi: (167)16
Spol: 
|
|
[Vrh] |
|
Gino Forumaš(ica)

Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
|
[Vrh] |
|
vsego Site Admin


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


Pridružen/a: 02. 10. 2006. (16:58:05) Postovi: (167)16
Spol: 
|
|
[Vrh] |
|
Gino Forumaš(ica)

Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
|
[Vrh] |
|
malena Forumaš(ica)

Pridružen/a: 27. 03. 2009. (16:43:42) Postovi: (62)16
Spol: 
Lokacija: ...
|
|
[Vrh] |
|
maloka Forumaš(ica)


Pridružen/a: 05. 02. 2009. (22:00:18) Postovi: (32)16
|
|
[Vrh] |
|
Gino Forumaš(ica)

Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
|
[Vrh] |
|
Milojko Forumaš(ica)


Pridružen/a: 07. 11. 2008. (14:57:52) Postovi: (453)16
Spol: 
Lokacija: Hilbertov hotel
|
Postano: 14:15 čet, 30. 4. 2009 Naslov: |
|
|
grananje, ak se ne varam
[size=9][color=#999999]Added after 55 seconds:[/color][/size]
e da, ni ja ne želim ulazit u teoriju, ni iz čega, ali, mora se :(
grananje, ak se ne varam
Added after 55 seconds:
e da, ni ja ne želim ulazit u teoriju, ni iz čega, ali, mora se
_________________ Sedam je prost broj
Bolonja je smeće i to pod hitno treba mijenjat
|
|
[Vrh] |
|
mdoko Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: 
Lokacija: Heriot-Watt University, Edinburgh
|
|
[Vrh] |
|
pinkgirl Forumaš(ica)


Pridružen/a: 30. 11. 2006. (21:08:16) Postovi: (1AE)16
Spol: 
Lokacija: K-K-Z
|
|
[Vrh] |
|
|