Paralelno 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 napon U, koja predstavlja realnu vrednost. Otpornici su paralelno povezani i predstavljaju električno kolo. Za paralelno vezane otpornosti iz niza izračunati i ispisati:

  1. Ukupnu jačinu struje u električnom kolu.

  2. Procentualni udeo struje koji protiče kroz prvi od potrošača u odnosu na ukupnu jačinu struje u električnom 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 napona od 5 volti, 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 napona u voltima: 5

Ukupna struja: 8.92A
Procentualni udeo struje: 56.07%
[25.00W, 1.25W, 1.67W, 2.50W, 4.17W, 10.00W]

Korisne matematičke formule

Otpornost između paralelno vezanih otpornika:

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

Omov zakon:

\[I = \frac {U} {R}\]

Džulov zakon:

\[P = \frac {U^2} {R}\]

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 U;
23
24    printf("Unesite jacinu napona u voltima: ");
25    scanf("%lf", &U);
26    printf("\n");
27
28    double ukupna_otpornost, ukupna_provodnost = 0, ukupna_struja;
29
30    for(i = 0;i < n;i++) {
31        ukupna_provodnost += 1 / R[i];
32    }
33    ukupna_otpornost = 1 / ukupna_provodnost;
34
35    ukupna_struja = U / ukupna_otpornost;
36    printf("Ukupna struja: %.2lfA\n", ukupna_struja);
37
38    double  otpornost_ostalih, provodnost_ostalih = 0, struja_prvog, procenat;
39
40    for(i = 1;i < n;i++) {
41        provodnost_ostalih += 1 / R[i];
42    }
43    otpornost_ostalih = 1 / provodnost_ostalih;
44
45    struja_prvog = otpornost_ostalih / (otpornost_ostalih + R[0]) * ukupna_struja;
46    procenat = struja_prvog / ukupna_struja * 100;
47
48    printf("Procentualni udeo struje: %.2lf%%\n", procenat);
49
50    double P[MAX_SIZE];
51
52    for(i = 0;i < n;i++) {
53        P[i] = pow(U, 2) / R[i];
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