Calcolo del parallelo tra resistenze

Esercizio: date due resistenze inserite in input al nostro software, calcolare il valore del loro parallelo. Svoli lo stesso esercizio date in ingresso un numero N imprecisato di resistenze.

Per risolvere l’esercizio, fermiamoci un attimo: è inutile scrivere codice se non sappiamo cosa sia il parallelo di due resistenze e la formula matematica che ne calcola il parallelo equivalente.

Date due resistenze, espresse con numeri interi o decimali, R1 e R2, la resistenza parallela equivalente vale Rp= (R1 * R2) / (R1 + R2)

Quindi a conti fatti, che sappiate o meno il concetto, il nostro software deve fare poco: una somma, un prodotto, una divisione! Vediamo subito il codice.

#include <iostream>

using namespace std;

int main()
{
    //Dichiarazione delle varibili
    int     r1 = 0;   //variabili di input
    int     r2 = 0;   //variabili di input
    float   rp = 0;   //variabile di output
    float   prodotto = 0.0;  //varibili di lavoro / work
    float   somma = 0.0;  //varibili di lavoro / work


    //Lettura delle variabili
    cout << "Inserisci R1" << endl;
    cin >> r1;
    cout << "Inserisci R2" << endl;
    cin >> r2;

    //Corpo principale
    prodotto = r1 * r2;
    somma = r1 + r2;
    rp = prodotto / somma;

    //Mostrare il risultato
    cout << "Rp= " << rp;

    getchar();
    return 0;
}

Il prodotto e la somma sono stati inseriti in una variabile float anche se intuitivamente il prodotto di numeri interi o la somma di numeri interi sia ovviamente a sua volta un numero intero. Il problema è che alcuni compilatori C++, quando procedono ad effettuare la divisione, se trovano interi effettuano la divisione intera troncando la parte decimale. Inizializzate sempre le variabili numeriche a zero, soprattutto quelle di output e lavoro per evitare valori anomali se non ci sono assegnazioni sulle stesse.

La stessa versione per un numero N di resistenze è poco più difficile: si tratta di leggere più valori e usare due accumulatori per le somme e i prodotti. Occhio a come inizializziamo l’accumulatore prodotto: il valore neutro è 1 e non zero con cui iniziare.

#include <iostream>

using namespace std;

int main()
{
    //Dichiarazione delle varibili
    int     r = 0;     //varibile input;
    int     n = 0;     //variabile input
    float   rp = 0;   //variabile di output
    float   prodotto = 1;  //varibili di lavoro / work
    float   somma    = 0;  //varibili di lavoro / work

    //Lettura delle variabili
    cout << "Quante resistena vuoi inserire?" << endl;
    cin >> n;

    //Corpo principale
    for (int i=0; i < n; i++ )
    {
        cout << "Inserisci la resistenza" << endl;
        cin >> r;

        prodotto = prodotto * r;
        somma = somma + r;
    }

    rp = prodotto / somma;

    //Mostrare il risultato
    cout << "Rp= " << rp;

    getchar();
    return 0;
}

Ultima modifica 5 Aprile 2023