Serijski vezani otpornici

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

Dat je niz realnih brojeva od maksimalno 20 elemenata. Učitati n pozitivnih elemenata, gde svaka vrednost u nizu predstavlja otpornost jednog otpornika izraženu u omima. Otpornosti mogu biti isključivo pozitivne, realne vrednosti. Uneti putem standardnog ulaza vrednost struje I, koja predstavlja realnu vrednost. Otpornici su serijski povezani i predstavljaju električno kolo kroz koje protiče struja I. Za serijski vezane otpornosti iz niza izračunati i ispisati:

  1. Ukupnu vrednost napona nad električnim kolom.

  2. Procentualni udeo napona nad najvećim potrošačem u odnosu na ukupan napon u kolu.

  3. Formirati novi niz u odnosu na ulazni, gde su pojedinačni elementi snage otpornika.

Ispise vrednosti zaokružiti na dve decimale.

Za ulazni niz otpornosti [1, 20, 15, 10, 6, 2.5] i vrednost struje od 0.5 ampera, očekivani ispis na standardnom izlazu je:

Unesite broj clanova niza: 6
R[0] = 1
R[1] = 20
R[2] = 15
R[3] = 10
R[4] = 6
R[5] = 2.5
Unesite jacinu struje u amperima: 0.5

Ukupan napon: 27.25V
Procentualni udeo napona: 36.70%
[0.25W, 5.00W, 3.75W, 2.50W, 1.50W, 0.62W]

Korisne matematičke formule

Ukupna otpornost serijski vezanih otpornika:

\[R_{uk} = R_1 + R_2 + ... + R_n\]

Omov zakon:

\[U = RI\]

Džulov zakon:

\[P = RI^2\]

Primer rešenja

 1#include <stdio.h>
 2#include <math.h>
 3
 4#define MAX_SIZE 20
 5
 6int main() {
 7    double R[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        do {
17            printf("R[%d] = ", i);
18            scanf("%lf", &R[i]);
19        } while(R[i] <= 0);
20    }
21
22    double I;
23
24    printf("Unesite jacinu struje u amperima: ");
25    scanf("%lf", &I);
26    printf("\n");
27
28    double ukupna_otpornost = 0, ukupan_napon;
29
30    for(i = 0;i < n;i++) {
31        ukupna_otpornost += R[i];
32    }
33
34    ukupan_napon = ukupna_otpornost * I;
35    printf("Ukupan napon: %.2lfV\n", ukupan_napon);
36
37    double max = R[0], max_napon, procenat;
38
39    for(i = 1;i < n;i++) {
40        if(max < R[i]) {
41            max = R[i];
42        }
43    }
44
45    max_napon = max * I;
46    procenat = max_napon / ukupan_napon * 100;
47
48    printf("Procentualni udeo napona: %.2lf%%\n", procenat);
49
50    double P[MAX_SIZE];
51
52    for(i = 0;i < n;i++) {
53        P[i] = R[i] * pow(I, 2);
54    }
55
56    printf("[");
57    for(i = 0;i < n;i++) {
58        if(i > 0) {
59            printf(", ");
60        }
61        printf("%.2lfW", P[i]);
62    }
63    printf("]\n");
64
65    return 0;
66}
67