# Lab 7.

Mon May 17 2021 13:41:09 GMT+0000 (UTC)

Saved by @dmatas #c

```#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>

//1.
double opA(int, int,int);
double opB(int,int,int);
double opC(int,int,int);
double opD(int,int,int);

int main() {
int x = 0, y = 0, z = 0;
char op = '\0';
double rez = 0.0;

printf("Unesi tri broja:\t");
scanf(" %d %d %d", &x, &y, &z);

printf("Unesi slovo operacije:\t");
scanf(" %c", &op);

switch (op) {
case 'a':
rez = opA(x, y, z);
break;
case 'b':
rez = opB(x, y, z);
break;
case 'c':
rez = opC(x, y, z);
break;
case 'd':
rez = opD(x, y, z);
break;

default:
printf("Kriva operacija!\n");
rez = -DBL_MAX;
}
if (rez != -DBL_MAX) {
printf("Rezultat je %lf.\n", rez);

}
}

double opA(int x, int y, int z) {
return x+y+z;
}

double opB(int x, int y, int z) {
return x * y * z;
}
double opC(int x, int y, int z) {
if (y == 0) {
return -DBL_MAX;
}
return (x / y) + z;
}
double opD(int x, int y, int z) {
double temp = 0.0;
if (y == 0) {
printf("Y ne smije bit 0!\n");
return -DBL_MAX;
}
temp=(x / y - z);
if (temp < 0) {
printf("Sadrzaj u korijenu ne smije bit manji od 0!\n");
return -DBL_MAX;
}
return sqrt(temp);
}

//2.
int X = 0;
void funkcija(int);
int main() {
int Y = 0;

printf("Unesi X i Y!\n");
scanf(" %d %d", &X, &Y);
funkcija(Y);
return 0;
}
void funkcija(int par) {
printf("X = %d\t Y = %d\t", X, par);
}
//3.
int dohvatiFaktorijelu(int);

int main() {
int x = 0;
int fact = 0;

printf("Unesi x!\n");
scanf(" %d", &x);

fact=dohvatiFaktorijelu(x);
printf("Faktorijela broja %d je %lf.\n", x, fact);
return 0;
}
int dohvatiFaktorijelu(int x) {
double rez = 1;
int i = 1;

for (i = 2; i <= x; i++) {
rez *= i;
}
return rez;
}
//4.
double dohvatiEuler(int, int);
double dohvatiFaktorijelu(int);

int main() {
int numOfRep = 10;
int x = 0;
double euler = 0;

printf("Unesi x:\t");
scanf(" %d", &x);

euler=dohvatiEuler(x, 5);
printf("e(%d) = %lf\n", x, euler);

euler = dohvatiEuler(x, 10);
printf("e(%d) = %lf\n", x, euler);

euler = dohvatiEuler(x, 50);
printf("e(%d) = %lf\n", x, euler);

printf("exp(%d) = %lf\n", x, exp(x));
return 0;
}
double dohvatiEuler(int x, int numOfRep) {
double rez = 0;
int i = 0;

for (i = 0; i <= numOfRep; i++) {
rez += pow(x,i)/dohvatiFaktorijelu(i);
}
return rez;
}
double dohvatiFaktorijelu(int n) {
int i = 0;
double rez = 1;

for (i = 2; i <= n; i++) {
rez *= i;
}
return rez;
}```
content_copyCOPY

1.Napisati program koji unese 3 broja i zatim po želji korisnika (ovisno o tome koje se slovo unese) računa: a) 𝑟𝑒𝑧 = 𝑥 + 𝑦 + 𝑧 b) 𝑟𝑒𝑧 = 𝑥 ∗ 𝑦 ∗ 𝑧 c) 𝑟𝑒𝑧 = 𝑥 ÷ 𝑦 + 𝑧 d) 𝑟𝑒𝑧 = √𝑥 ÷ 𝑦 − 𝑧 Svi rezultati se računaju preko f-ija (jedna za svaki primjer), s tim da je za primjer pod “d” potrebno provjeriti je li izraz ispod korijena >= 0, i ako nije treba javiti grešku. 2. Napisati program koji sadrži dvije varijable: globalnu varijablu X i lokalnu varijablu Y(lokalna za f-ju main) i dodijeliti im neke vrijednosti. Iz glavnog programa treba pozvati f-ju koja ispisuje vrijednosti obje varijable. 3. Napraviti program koji u “običnoj” f-ji računa faktorijele. Rezultat je potrebno ispisati u glavnom programu i nije dozvoljeno korištenje globalnih varijabli. 4. Napisati f-ju kojom se približno određuje vrijednost ex (e = 2.718282), i rezultat usporediti s vrijednošću koja se dobije pomoću standardne funkcije exp() deklarirane u math.h.