Funkcije od 7 zadatka Zadatak 7. Sakrij Napravite program koji će omogućiti unošenje brojnika i nazivnika jednog razlomka. Program treba, koristeći funkciju za skraćivanje razlomka, potpuno skratiti učitani razlomak. #include<stdio.h> int a,b,nzm; /*funkcija za pronalazenje najvece zajednicke mjere*/ int mjera(int x, int y) { int o; o=x%y; while (o>0) { x=y; y=o; o=x%y; } return y; } /*funkcija za skracivanje */ void skrati() { a=a/nzm; b=b/nzm; } /*funkcija za ispis*/ void ispis() { if (a==0) printf("0"); else if(b==1) printf("%d",a); else printf("%d/%d",a,b); } /*glavni progam*/ void main() { int v,m; printf("Unesi brojnik i nazivnik razlomka "); scanf("%d,%d",&a,&b); if (b==0) printf("Nazivnik ne moze biti nula "); else { if (a>b) { v=a; m=b; } else { v=b; m=a; }
nzm=mjera(v,m); skrati(); ispis(); } }
Zadatak 8. Pokaži Napravite program koji će, koristeći funkciju, za zadani prirodan broj provjeriti je li prost. #include <stdio.h> int prost(int x) { int i; for(i=2;i<=x/2;i++) if(x%i==0) return 1; return 0; } void main() { int a; printf("\nUpisite prirodan broj "); scanf("%d",&a); if (a<1) printf("\Broj mora biti >0"); else { if(prost(a)) printf("\nBroj %d NIJE prost broj!",a); else printf("\nBroj %d JE prost broj!",a); } }
Zadatak 9. Pokaži Napravite program koji će za uneseni prirodan broj ispisati sve njegove djelitelje. #include <stdio.h> int djelitelj(int x) { int i=2,k=0; while (i<=x/2) { if (x%i==0) { printf("\t%d",i); k=1; } i++; } return k; } void main() { int a,b; printf("\nUpisite jedan prirodan broj "); scanf("%d",&a); if (a<1) printf("\Broj mora biti >0"); else
{ b=djelitelj(a); if(b==0) printf("\nBroj nema djelitelja"); } }
Zadatak 10. Pokaži Napravite program kojim se, za uneseni prirodan broj n računa zbroj:
#include <stdio.h> /*rekurzivna funkcija za racunanje potencije+/ long int potencija(int b,int e) { if (e==0) return 1; else return b*potencija(b,e-1); } /*rekurzivna funkcija za racunanje faktorijela*/ long int faktorijel(int n) { if (n==1) return 1; else return faktorijel(n-1)*n; } void main(void) { int x,i,y; float s; printf("Upisite prirodan broj x i n "); scanf("%d,%d",&x,&y); if (y<=0) printf("Broj mora biti prirodan"); else { for (i=1;i<=y;i++) s+=(float)potencija(x,i)/faktorijel(i); printf("Zbroj je %.2f ",s); } }
Zadatak 11. Pokaži Napravite program koji uneseni broj u dekadskom brojevnom sustavu pretvoriti u broj u proizvoljnoj bazi do 10. #include <stdio.h> int pretvori (int n, int b) { if (n>=b) pretvori(n/b, b); printf("%d ",n%b); } void main (void) { int broj, baza; printf("\n Upisite jedan prirodni broj => "); scanf("%d",&broj);
printf("\n Upisite bazu => "); scanf("%d",&baza); if (baza>=10) printf("\nBaza mora biti <10"); else pretvori(broj,baza); }
Zadatak 12. Pokaži Napravite rekurzivnu funkciju koja će za uneseni n izračunati prvih n članova Fibonaccievog niza. #include <stdio.h> long int fibonacci(int a) { if (a==1 || a==2) return 1; else return fibonacci(a-2)+fibonacci(a-1); } void main() { int n,i; printf("\nUpisite jedan prirodan broj "); scanf("%d",&n); if (n<1) printf("\Broj mora biti >0"); else for (i=1;i<=n;i++) printf("\nf(%d)=%ld",i,fibonacci(i)); }
Zadatak 13. Pokaži Napravite rekurzivnu funkciju koja zbraja znamenke unesenog prirodnog broja n. #include<stdio.h> long int zbroj(long int x) { if (x==0) return 0; else return (x%10+zbroj(x/10)); } void main() { long int a,z; do { printf("Unesite prirodan broj"); scanf("%ld",&a); }while(a<0); z=zbroj(a); printf("Zbroj znamenki broja %ld je %ld",a,z); }