Potencijalna i kinetička energija¶
Autor zadatka: Rade Radišić <radisic.rade@uns.ac.rs>
Dat je niz realnih brojeva od maksimalno 30
elemenata.
Učitati n
pozitivnih elemenata, koji predstavljaju trenutnu visinu u metrima tela u odnosu na tlo.
Uneti putem standardnog ulaza masu tela m
u kilogramima, koja predstavlja realnu vrednost veću od nule.
Za unete visine izračunati i ispisati:
Vrednost ukupne energije u sistemu.
Vrednost najmanje razlike između potencijalne i kinetičke energije za određenu visinu
h
.Formirati novi niz u kom će se nalaziti brzine tela koje odgovaraju unetim visinama.
Ispise realnih vrednosti zaokružiti na dve decimale.
Za uneti niz visina [1, 3.4, 5, 2, 0]
i masu tela 10kg
, očekivani ispis na standardnom izlazu je:
Unesite broj visina: 5
Unesite visine [m]:
h[0] = 1
h[1] = 3.4
h[2] = 5
h[3] = 2
h[4] = 0
Unesite masu tela [kg]: 10
Ukupna energija: 490.50J
Najmanja razlika u energijama: 98.10J
[8.86m/s, 5.60m/s, 0.00m/s, 7.67m/s, 9.90m/s]
Korisne matematičke formule
Zakon održanja energije:
Gravitaciona potencijalna energija:
gde gravitaciono ubrzanje iznosi:
Kinetička energija:
Primer rešenja¶
1#include <stdio.h>
2#include <math.h>
3
4#define MAX_SIZE 30
5
6int main() {
7 double h[MAX_SIZE], m, g = 9.81;
8 int i, n;
9
10 do {
11 printf("Unesite broj visina: ");
12 scanf("%d", &n);
13 } while(n <= 0 || n > MAX_SIZE);
14
15 printf("Unesite visine [m]:\n");
16 for(i = 0;i < n;i++) {
17 do {
18 printf("h[%d] = ", i);
19 scanf("%lf", &h[i]);
20 } while(h < 0);
21 }
22
23 do {
24 printf("Unesite masu tela [kg]: ");
25 scanf("%lf", &m);
26 } while(m <= 0);
27
28 printf("\n");
29
30 double E_ukupno, max_h = h[0];
31
32 for(i = 1;i < n;i++) {
33 if(max_h < h[i]) {
34 max_h = h[i];
35 }
36 }
37
38 E_ukupno = m * g * max_h;
39 printf("Ukupna energija: %.2lfJ\n", E_ukupno);
40
41
42 double delta_E = E_ukupno;
43 double E_trenutno;
44
45 for(i = 0;i < n;i++) {
46 E_trenutno = fabs(E_ukupno - 2 * (m * g * h[i]));
47 if(delta_E > E_trenutno) {
48 delta_E = E_trenutno;
49 }
50 }
51
52 printf("Najmanja razlika u energijama: %.2lfJ\n", delta_E);
53
54 double v[MAX_SIZE];
55 double E_pot;
56
57 for(i = 0;i < n;i++) {
58 E_pot = m * g * h[i];
59 v[i] = sqrt(2 * (E_ukupno - E_pot) / m);
60 }
61
62 printf("[");
63 for(i = 0;i < n;i++) {
64 if(i > 0) {
65 printf(", ");
66 }
67 printf("%.2lfm/s", v[i]);
68 }
69 printf("]\n");
70
71 return 0;
72}
73