Zapremina kocke

Autor zadatka: Rade Radišić <radisic.rade@uns.ac.rs>

Dat je niz realnih brojeva od maksimalno 30 elemenata. Učitati n pozitivnih elemenata, gde svaka vrednost predstavlja dužinu duži. Za duži iz niza izračunati i ispisati:

  1. Prosečnu dužinu duži

  2. Formirati novi niz čiji su elementi zapremine kocki sastavljenih od duži iz ulaznog niza

  3. Odrediti zapreminu kocke koja je najbliža zapremini srednje vrednosti kocke.

Ispise vrednosti zaokružiti na dve decimale.

Za ulazni niz duži [2.3, 4.3, 1, 5.7, 6.1, 3.9], očekivani ispis na standardnom izlazu je:

Unesite broj clanova niza: 6
a[0] = 2.3
a[1] = 4.3
a[2] = 1
a[3] = 5.7
a[4] = 6.1
a[5] = 3.9

Prosecna duzina duzi: 3.88
[12.17, 79.51, 1.00, 185.19, 226.98, 59.32]
Zapremina najbliza srednjoj je: 59.32

Korisne matematičke formule

Zapremina kocke:

\[P = a^3\]

Primer rešenja

 1#include <stdio.h>
 2#include <math.h>
 3
 4#define MAX_SIZE 30
 5
 6int main() {
 7    double a[MAX_SIZE];
 8    int i, n;
 9
10    do {
11        printf("Unesite broj clanova niza: ");
12        scanf("%d", &n);
13    } while(n <= 0 || n > MAX_SIZE);
14
15    for(i = 0;i < n;i++) {
16        printf("a[%d] = ", i);
17        scanf("%lf", &a[i]);
18    }
19
20    printf("\n");
21
22    double suma = 0, srednja_vrednost;
23
24    for(i = 0;i < n;i++) {
25        suma += a[i];
26    }
27
28    srednja_vrednost = suma / n;
29    printf("Prosecna duzina duzi: %.2lf\n", srednja_vrednost);
30
31    double V[MAX_SIZE];
32
33    for(i = 0;i < n;i++) {
34        V[i] = pow(a[i], 3);
35    }
36
37    printf("[");
38    for(i = 0;i < n;i++) {
39        if(i > 0) {
40            printf(", ");
41        }
42        printf("%.2lf", V[i]);
43    }
44    printf("]\n");
45
46    double srednja_V = pow(srednja_vrednost, 3);
47    double najbliza_V = V[0], min_razlika = fabs(V[0] - srednja_V);
48
49    for(i = 1;i < n;i++) {
50        if(fabs(V[i] - srednja_V) < min_razlika) {
51            min_razlika = fabs(V[i] - srednja_V);
52            najbliza_V = V[i];
53        }
54    }
55
56    printf("Zapremina najbliza srednjoj je: %.2lf\n", najbliza_V);
57
58    return 0;
59}