Facebook
From Kvarnjak123, 1 Year ago, written in C.
Embed
Viewing differences between and Re: PG
  1. Potrebno je učitati kvadratnu matricu cijelih brojeva (najviše 10x10). Pozivom na funkciju prototipa int Naj (int [][10], int); potrebno je pronaći stupac koji ima najveći zbroj članova. Funkcija za argumente prima adresu prvog člana matrice, veličinu i kvadratne matrice i vraća cjelobrojnu vrijednost. U glavnoj funkciji ispisati najveći zbroj i sve članove stupca s najvećim zbrojem podijeljene s awritmetičkom sredinom glavne dijagonale.
  2.  
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5. #include<string.h>
  6. int Naj(int [][10],int);
  7. int main(){
  8.  
  9.     int mat[10][10];
  10.     int i,j,n;
  11.     int max_suma=0;
  12.     int max_stupac=0;
  13.     double aritm=0;
  14.  
  15.     printf("Unesi broj stupaca i redaka kvadratne matrice: ");
  16.     scanf("%d",&n);
  17.  
  18.     printf("nUnesi elemente matricen");
  19.     for(i=0;i<n;i++){
  20.         for(j=0;j<n;i++){
  21.         max_suma+=mat[i][max_stupac];
  22.     }
  23.     printf("Najveca suma izmjerna u stupcu %d je: %dn",max_stupac+1,max_suma);
  24.  
  25.  
  26.     for(i=0;i<n;i++){
  27.         aritm+=((double )mat[i][i])/n;
  28.     }
  29.  
  30.     printf("Clanovi najveceg stupca podjeljeni sa artim sredinom:n");
  31.     for(i=0;i<n;i++)
  32.     printf("%lfn",mat[i][max_stupac]/aritm);
  33.  
  34.     return 0;
  35. }
  36. int Naj(int mat[10][10],int n){
  37.  
  38.     int i,j;
  39.     int suma=0;
  40.     int suma_prvi=0;
  41.     int max_idx=0;
  42.     for(i=0;i<n;i++){
  43.         suma_prvi+=mat[i][0];
  44.     }
  45.     for(j=1;j<n;j++){
  46.         for(i=0;i<n;i++)
  47.         {
  48.             suma+=mat[i][j];
  49.         }
  50.     if(suma>=suma_prvi){
  51.        suma_prvi=suma;
  52.        max_idx=j;
  53.     }
  54.     suma=0;
  55.     }
  56.     return max_idx;
  57. }
  58. ------------------------------------------------------------------------------------------
  59. Napisati program koji će korisnik sa standardnog ulaza učitati rečenicu. U programu je potrebno prebrojiti koliko u rečenici ima riječi (jedan ili više razmaka mogu odvajati dvije riječi). Unos rečenice i ispis rezultata obaviti u glavnoj funkciji. Brojanje riječi obaviti pozivom funkcije prototipa void Prebroji(char recenica[], int *);, koja za argumente prima adresu prvog član znakovnog  članznakovnog niza i adresu brojača.
  60.  
  61. #include<stdio.h>
  62. #include<stdlib.h>
  63. #include<string.h>
  64. #include<malloc.h>
  65. void prebroji(char[] ,int *);
  66. int main(){
  67.  
  68.     int br,n;
  69.     char recenica[256];
  70.  
  71.     printf("Unos recenice:");
  72.     fgets(recenica,256,stdin );
  73.     printf("%s",recenica);
  74.  
  75.     prebroji(recenica,&br;);
  76.     printf("Broj rijeci u recenici je: %d", br);
  77.  
  78.  
  79.     return 0;
  80. }
  81. void prebroji(char recenica[],int *br){
  82.  
  83.     int i;
  84.     int br_r=0;
  85.     int duljina;
  86.     char preth_zn;
  87.  
  88.     duljina=strlen(recenica);
  89.  
  90.     if(duljina==0){
  91.        *br=0;
  92.        return;
  93.     }
  94.  
  95.     preth_zn=recenica[0];
  96.  
  97.     for(i=0;i<stdio.h>
  98. #define MAX 20
  99.  
  100. void Slozi(int *, int, int(*)(int, int));
  101. int JestManjiOd(int, int);
  102. int JestVeciOd(int, int);
  103.  
  104. int main()
  105. {
  106.  int niz[MAX], i, n;
  107.  int sort;
  108.  printf("unesite broj clanova niza: ");
  109.  scanf("%d", &n);
  110.  for (i = 0; i < n; i++)
  111.  {
  112.   printf("unesite %d. clan: ", i + 1);
  113.   scanf("%d", &niz;[i]);
  114.  }
  115.  printf("nOdaberite nacin sortiranja: 1 - po rastucoj vrijednosti, 2 - po padajucoj vrijednosti: ");
  116.  scanf("%d", &sort;);
  117.  
  118.  if (sort == 1)
  119.   Slozi(niz, n, JestManjiOd);
  120.  else if (sort == 2)
  121.   Slozi(niz, n, JestVeciOd);
  122.  else {
  123.   printf("ngreskan");
  124.   return -1;
  125.       }
  126.  
  127.  printf("slozeni niz: n");
  128.  for (i = 0; i < n; i++)
  129.  {
  130.   printf("%dn", niz[i]);
  131.  }
  132.  return 0;
  133. }
  134.  
  135. void Slozi(int *x, int n, int(*sort)(int, int))
  136. {
  137.  int i, j, temp;
  138.  for (i = 0; i < n - 1; i++)
  139.   for (j = i + 1; j < n; j++)
  140.   {
  141.    if ((*sort)(x[i], x[j]))
  142.    {
  143.     temp = x[i];
  144.     x[i] = x[j];
  145.     x[j] = temp;
  146.    }
  147.   }
  148.  return;
  149. }
  150.  
  151. int JestManjiOd(int a, int b)
  152. {
  153.  if (a < b) return 0;
  154.  else return 1;
  155. }
  156.  
  157. int JestVeciOd(int a, int b)
  158. {
  159.  if (a > b) return 0;
  160.  else return 1;
  161. }
  162. ------------------------------------------------------------------------------------------
  163. Napisati program u kojem će korisnik sa standardnog ulaza učitati niz od 5 prirodnih brojeva. U programu je izračunati harmonijsku sredinu unesenog niza i ispisati je na standardni izlaz u glavnoj funkciji. Harmonijsku sredinu izračunati pozivom funkcije prototipa double harm_sred(int *, int); koja za argumente prima adresu prvog člana učitanog niza i broj članova u nizu. Funkcija vraća iznos harmonijske sredine. Harmonijska sredina (H) nekog niza brojeva x1,x2,,xn zadana je sa:
  164.  H = n / n suma i=1 * 1/xi , xi>0
  165. Rečenično iskazano, harmonijska sredina niza brojeva jest recipročna vrijednost aritmetičke sredine recipročnih vrijednosti tog niza.
  166.  
  167. #include <stdio.h>
  168. #include <stdlib.h>
  169.  
  170. double HarmSredina(int *, int);
  171.  
  172. int main(){
  173.  int i;
  174.  int a[5];
  175.  double sredina;
  176.  
  177.  for (i = 0; i < 5; ++i){
  178.   printf("%d. broj: ", i+1);
  179.   scanf("%d", &a[i]);
  180.   if (a[i] <= 0){
  181.    --i;
  182.    continue;
  183.   }
  184.  }
  185.  
  186.  sredina = HarmSredina(a, 5);
  187.  
  188.  printf("Harmonijska sredina: %lf.n", sredina);
  189.  
  190.  return 0;
  191. }
  192.  
  193. double HarmSredina(int a[], int n){
  194.  int i;
  195.  double sred = 0;
  196.  
  197.  for (i = 0; i < n; ++i)
  198.   sred += 1.0/a[i];
  199.  
  200.  return n/sred;  }
  201. ------------------------------------------------------------------------------------------
  202. Potrebno je napisati program u kojem se sa standardnog ulaza učitava niz od deset cijelih brojeva. U programu je potrebno izračunati i ispisati na standardni izlaz aritmetičku i geometrijsku sredinu unesenog niza. Računanje aritmetičke i geometrijske sredine napraviti u funkciji prototipa void Izracunajsredinu (int *, int, int *, int *); koja za argumente prima adresu prvog člana niza, broj članova niza te adrese varijabli vrijednosti sredina koje treba izračunati.
  203.  • Aritmetička sredina: A=
  204.  • Geometrijska sredina: G=
  205.  
  206. #include <stdio.h>
  207. #include <stdlib.h>
  208. #include <math.h>
  209. #define MAX 10
  210.  
  211. void IzracunajSredinu(int *, int, double *, double *);
  212.  
  213. int main()
  214. {
  215.  int a[MAX], i;
  216.  double artm_sred, geom_sred;
  217.  
  218.  printf("Unesite 10 brojeva:");
  219.  for (i = 0;i<N;i++)
  220.  {
  221.   suma += a[i];
  222.  }
  223.  *artm_sred = (double) suma / i;
  224.  
  225.  for (i = 0;i<N;i++)
  226.   umnozak *= a[i];
  227.  *geom_sred = pow(umnozak, 1.0 / N);
  228. }
  229. ------------------------------------------------------------------------------------------
  230. Napisati program u kojem se deklarira niz od 6 cjelobrojnih vrijednosti. Korisnik sa standardnog ulaza unosi prvih 5 vrijednosti u niz. Šestu vrijednost u nizu potrebno je izračunati tako da se od broja 30 umanji zbroj prethodnih 5 članova. Zbroj prvih pet članova niza odrediti pozivom funkcije int Zbroji (int [], int); koja za argumente prima adresu prvog člana niza i broj prvih članova koje treba zbrojiti. Funkcija vraća zbroj članova.
  231.  
  232. #include <stdio.h>
  233. #include <stdlib.h>
  234. #include <string.h>
  235. #define MAX 6
  236.  
  237. int Zbroji(int[],int);
  238.  
  239. int main()
  240. {
  241.     int i, a[MAX],n;
  242.  
  243.     printf("Unesite 5 cjelobrojnih vrijednosti:n");
  244.     for (i=0; i<MAX;i++)
  245.         printf("%dn",a[i]);
  246.  
  247.     return 0;
  248.  
  249. }
  250.  
  251. int Zbroji (int a[], int n)
  252. {
  253.     int i;
  254.     int suma=0;
  255.  
  256. for (i=0;i<n;i++)
  257. {
  258.     suma += a[i];
  259. }
  260.  
  261. return suma;
  262. }
  263. ------------------------------------------------------------------------------------------
  264. Student na ispitu dobije 8 pitanja (od 20 mogućih). Potrebno je da student na 4 pitanja odgovori točno kako bi položio ispit. Student je naučio samo neka pitanja od mogućih 20.
  265. a) Izraditi računalni program koji provjerava je li student položio ispit. Korisnik unosi redni broj onih pitanja koje je student naučio. Postavljena pitanja (njih 8 od 20) generirati slučajnim odabirom. Provjeru obaviti u posebnoj funkciji prototipa void Provjera (int pitanja[], int odgovor[], int n); gdje je pitanja[] polje s 8 postavljenih pitanja, odgovor[] polje s pitanjima koje je student naučio, a n broj pitanja koje je student naučio.
  266.  
  267. #include <stdio.h>
  268. #include <stdlib.h>
  269. #include <time.h>
  270.  
  271. void Provjera(int[], int[], int n);
  272. int rand_ab(int, int);
  273.  
  274. int main()
  275. {
  276.  unsigned seed = time(0);
  277.   srand(seed);  
  278.  
  279.  int pitanja[20], odgovori[20], i, n;
  280.  printf("koliko ste pitanja naucili?");
  281.  scanf("%d", &n);
  282.  
  283.  printf("Unesite redne brojeve pitanja koje je student naucio: n");
  284.  for (i = 0;i < n;i++)
  285.   scanf("%d", &odgovori;[i]);
  286.  
  287.  
  288.  for (i = 0; i < 8; i++)
  289.  {
  290.   pitanja[i] = rand_ab(1, 20);
  291.  }
  292.  printf("Pitanja na testu: ");
  293.  for (i = 0; i < 8; i++)
  294.  {
  295.   printf("%d. ", pitanja[i]);
  296.  }
  297.  
  298.  Provjera(pitanja, odgovori, n);
  299.  
  300.  return 0;
  301. }
  302.  
  303. int rand_ab(int min, int max)
  304. {
  305.  int bm = max - min + 1;
  306.  int gr = RAND_MAX - (RAND_MAX % bm);
  307.  int rnd = rand();
  308.  while (rnd>gr) rnd = rand();
  309.  return (rnd%bm) + min;
  310. }
  311.  
  312. void Provjera(int p[], int o[], int n)
  313. {
  314.  int i, j, br = 0;
  315.  for (i = 0; i < n; i++)
  316.   for (j = 0; j < 8; j++)
  317.   {
  318.    if (o[i] == p[j])
  319.     br++;
  320.   }
  321.  if (br < 4) printf("nStudent nije polozio");
  322.  else if (br >= 4) printf("nStudent je polozio.");
  323.  return;
  324. }
  325. ------------------------------------------------------------------------------------------
  326. #include <stdio.h>
  327. #include <stdlib.h>
  328. #define M 3
  329. #define N 3
  330.  
  331. double Ars(int[][N], int, int);
  332. int main()
  333. {
  334.  
  335.  int i, j;
  336.  int a[M][N];
  337.  float sredina;
  338.  for (i = 0;i<M;i++)
  339.   for (j = 0;j<3;i++)
  340.   for (j = 0;j<3;j++)
  341.   {
  342.    suma += polje[i][j];
  343.    ++broj;
  344.   }
  345.  artm_sred = suma / broj;
  346.  return artm_sred;
  347. }
  348. ------------------------------------------------------------------------------------------
  349. Napisati program u kojem korisnik unosi niz znakova te ih sprema u varijablu tipa char (50). U posebnoj funkciji prototipa int prebroj(char*, int *) prebrojiti znakove unesenog niza, te prebrojiti sve znakove čiji je ASCII broj manji od 83. U glavnoj funkciji pronadene znakove spremiti u jednodimenzionalno polje dinamički alocirano. Funkcija prebroj za argumente prima adresu prvog člana polja znakova i jednu adresu cjelobrojne varijable (veličinu unesenog niza), a vraća broj članova novog niza.
  350.  
  351. #include <stdio.h>
  352. #include <malloc.h>
  353. #include<string.h>
  354.  
  355. int prebroj(char* ,int*);
  356.  
  357. int main()
  358. {
  359.  char a[50];
  360.     int nova_d;
  361.     char *p;
  362.     int i,n;
  363.  
  364.  printf("Unesite clanove niza: ");
  365.  scanf(" %s", a);
  366.  
  367.     nova_d=prebroj(a,&n);
  368.     printf("Broj znakova unesenog niza: %dn",n);
  369.     printf("Broj clanova manjih od 83 prema ASCII tablici:%dn",nova_d);
  370.  
  371.     p=(char*)malloc(nova_d*sizeof(char));
  372.  
  373.     printf("Clanovi niza koji imaju ASCII vrijednost manju od 83 su:");
  374.  
  375.     int j=0;
  376.     for(i=0;i<n;i++){
  377.         if(*(a+i)<83)
  378.         {
  379.             *(p+j)=*(a+i);
  380.             j++;
  381.         }
  382.     }
  383.     for(i=0;i<nova_d;i++){
  384.         printf("%c",*(p+i));
  385.     }
  386.  
  387.     free(p);
  388.  
  389.  return 0;
  390. }
  391.  
  392. int prebroj(char *a,int*n)
  393. {
  394.     int duljina=strlen(a);
  395.     int i,br=0;
  396.     char niz[50];
  397.  
  398.     for(i=0;i<duljina;i++){
  399.         if(a[i]<83){
  400.             br++;
  401.         }
  402.     }
  403.     *n=duljina;
  404.     return br;
  405.  
  406. }
  407. ------------------------------------------------------------------------------------------
  408. Izraditi program u kojem korisnik unosi niz od proizvoljnog broja znakova. Znakovi se unose jedan po jedan pritiskom na tipku enter sve dok korisnik ne potvrdi unos samo sa pritiskom na tipku enter. Uneseni niz treba sadržavati točan broj znakova Koliko ih je s tipkovnice uneseno (HINT:funkcija realloc). And unesenim nizom znakova pomoću funkcije prototipa void ispisi_znakove(char *,int, int (*) (char));, koja za argument prima adresu prvog člana niza, veličinu niza I ime predikatne funkcije. Treba ispisati samoglasnike i suglasnike. Prototipovi predikatnih funkcija su:
  409.  •Za ispis samoglasnika: int jest_samoglasnik(char); funkcija za argumentprima jedan znak te ukoliko je samoglasnik vraća 1, u protivnome 0.
  410.  •Za ispis suglasnika: int JestSuglasnik(char); funkcija za argumentprima jedan znak te ukoliko je suglasnik vraća 1, u protivnome 0.
  411.  
  412. #include<stdio.h>
  413. #include<stdlib.h>
  414. #include<string.h>
  415. void ispis_znakova(char*,int,int(*)(char));
  416. int JestSamoglasnik(char );
  417. int JestSuglasnik(char );
  418. int main(){
  419.  
  420.     char c[3];
  421.     char *niz;
  422.     int n=0;
  423.  
  424.     niz=(char*)malloc(n*sizeof(char));
  425.  
  426.     while (1) {
  427.         fgets(c, sizeof(c), stdin);
  428.         if(c[0]=='n'){
  429.             break;
  430.         }
  431.         n++;
  432.         niz=(char*)realloc(niz,n);
  433.         niz[n-1]=c[0];
  434.     }
  435.  
  436.     printf("Samoglasnici su:");
  437.     ispis_znakova(niz,n,JestSamoglasnik);
  438.     printf("n");
  439.     printf("Suglasnici su:");
  440.     ispis_znakova(niz,n,JestSuglasnik);
  441.  
  442.  
  443.     return 0;
  444. }
  445. void ispis_znakova(char*niz,int n,int(*f)(char)){
  446.  
  447.     int i;
  448.     for(i=0;i<n;i++){
  449.         if(f(niz[i])==1){
  450.             printf("%c",niz[i]);
  451.         }
  452.     }
  453.  
  454. }
  455. int JestSamoglasnik(char c){
  456.  
  457.     if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')return 1;
  458.     else return 0;
  459.  
  460. }
  461. int JestSuglasnik(char c){
  462.  
  463.     if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')return 0;
  464.     else return 1;
  465.  
  466. }
  467. ------------------------------------------------------------------------------------------
  468. a) Napisati program u kojem se sa standardnog ulaza unosi polje brojeva od proizvoljno odabranog broja članova (do najviše 50). U program je potrebno ? funckiju int jest_prost(int); koja za argument prima broj, a vraća ? ako je zadani broj ? u protivnom vraća nulu. Koristeći zadanu funkciju ? ? ? ? ? ? jesu prosti brojevi te ih ispisati na standardni izlaz u glavnoj funkciji.
  469. b) Zadatak riješiti na način da se polje brojeva dinamički alocira na primjenu ? pokazivača.
  470.  
  471. #include<stdio.h>
  472. #include <stdlib.h>
  473. int jest_prost(int);
  474. int main()
  475. {
  476.     int i,n;
  477.     int* niz;
  478.     printf("Unesi broj clanova polja: ");
  479.     scanf(" %d",&n);
  480.  
  481.     niz = (int*)malloc(n * sizeof(int));
  482.  
  483.     printf("Unesi clanove niza: ");
  484.     for(i=0;i<n;i++)
  485.         scanf(" %d",niz+i);
  486.  
  487.     for(i=0;i<n;i++){
  488.         if(jest_prost(*(niz+i)))
  489.             printf("%d",*(niz+i));
  490.     }
  491.     return 0;
  492.  
  493. }
  494. int jest_prost(int broj)
  495. {
  496.     if (broj <= 1)
  497.         return 0;
  498.  
  499.     int i;
  500.  
  501.     for(i=2;i<broj;i++)
  502.     {
  503.         if(broj%i==0)
  504.             return 0;
  505.     }
  506.  
  507.     return 1;
  508. }
  509. ------------------------------------------------------------------------------------------
  510. Potrebno je napisati program koji će generirati I ispisati na standardni izlaz Fibonaccijev niz od 10 članova. Generiranje članova niza izvršiti pozivom funkcije prototipa void Fibonacci(int *, int); koja za argumente prima adresu prvog člana niza i broj članova niza koje funkcija treba generirati. Svaki član Fibonaccijevog niza jednak je zbroju prethodna dva člana, osim prva  dva člana niza koja su jednaka 1. Napomena: Fibonacciev niz brojeva je: F1=F2=1, Fn-1 + Fn-2.
  511.  
  512. #include <stdio.h>
  513. #include <stdlib.h>
  514.  
  515. void fibonacci(int*, int);
  516.  
  517. int main()
  518. {
  519. int i;
  520. int n=10;
  521. int niz[n];
  522.  
  523. fibonacci(niz,10);
  524.  
  525. for(i=0;i<n;i++)
  526.     printf("n%d",niz[i]);
  527.  
  528.     return 0; }
  529.  
  530. void fibonacci(int* a, int n)
  531.  
  532. {
  533.     int i;
  534.  
  535.     a[0]=1;
  536.     a[1]=1;
  537.     for(i=2;i<n;i++)
  538.         a[i]=a[i-1]+a[i-2];
  539.     return;
  540. }
  541.  
  542. ------------------------------------------------------------------------------------------
  543. Napisati program u kojem će korisnik sa standardnog ulaza učitati rečenicu (od najviše 80 znakova) te prebrojiti Koliko u rečenici ima riječi (jedan ili više razmaka moće odvajati dvije riječi). Unos rečenice I ispis rezultata obaviti u glavnoj funkciji. Brojanje obaviti posbenoj funkciji prototipa int prebroji(char []); koja za argumente prima adresu prvog člana znakovnog niza I vraća broj riječi u rečenici.
  544.  
  545. #include <stdio.h>
  546. #include <stdlib.h>
  547.  
  548. int Prebroji(char[]);
  549.  
  550. int main ()
  551.  
  552. {
  553.     char recenica[80];
  554.     printf("Unesite recenicu do 80 znakova:");
  555.     scanf(" %[^n]",&recenica;);
  556.  
  557.     printf("Broj rijeci u recenici je: %d",Prebroji(recenica));
  558.  
  559.     return 0;
  560. }
  561.  
  562. int Prebroji(char recenica[])
  563.  
  564. {
  565.     int br_rijeci=1; // zato jer ne bi brojalo zadnju rijec jer ne stavimo razmak nakon rijeci
  566.     char prethodniznak;
  567.     int i, duljina;
  568.  
  569.     duljina=strlen(recenica);
  570.  
  571.     if (duljina>0)
  572.         prethodniznak=recenica[0];
  573.  
  574.     for(i=0;i