Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Programm zur Berechnung von Widerstandswerten (Unterprogramme)

Ihr Programm soll Ersatzwiderstände von Parallel- und Serienschaltungen von zwei oder drei Widerständen berechnen.

Das heißt Sie müssen den Nutzer nach der

  • Anzahl der einzelnen Widerstände fragen und danach, ob Sie
  • parallel und seriell geschaltet sind.

Ihr Programm soll danach mit einer der folgenden Funktionen die zwei bzw. drei Werte einlesen

  • eingabe2 (float*,float*);
  • eingabe3 (float*,float*,float*);

und auch die Berechnung der Ersatzwiderstände sollen als Funktionen implementiert werden.

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

9 Lösung(en)

def parallel(a):
    ''' Parallele Wiederstandsberechnung: 
        R = 1 / (1/R1 + 1/R2 + 1/R3 + ...) usw. Anzahl beliebig 
    '''
    p = 0
    for i in range(0, a):
        p = p + 1/w[i]
    return 1/p

def seriell():
    ''' Serielle Wiederstandsberechnung:
        R = R1 + R2 + ... usw. Anzahl beliebig 
    '''
    return sum(w)

w = []  # Wiederstandsliste

# Abfrage starten
a = int(input('Anzahl der einzelnen Widerstände? (2 oder 3): '))
art = input('parallel(p) oder seriell(s): ')

for i in range(0, a):
    w.append(float(input('Wiederstandswert {0}: '.format(i+1))))

# Berechnung / Ausgabe
if art == 'p':    print('Gesamtwiederstand parallel =', parallel(a))
if art == 's':    print('Gesamtwiederstand seriell =', seriell())
    
                

Lösung von: Alex Groeg (Freies Lernen)

#include <iostream>
#include <vector>


std::vector<float> widerstande; //  dynamischer Array mit dem Name "widerstande" initalizieren.

float parallel(int anzahl) {
	float res = 0; // Endresultat wird in dieser Variable gespeichert.
	for (int i = 0; i < anzahl; i++) {
		res += 1 / widerstande[i]; // 1 / R1 + 1 / R2... etc
	}
	return 1 / res; // 1 / Rges und das Resultat zurückgeben
}

float seriell(int anzahl) {
	float res = 0; // Endresultat wird in dieser Variable gespeichert.
	for (int i = 0; i < anzahl; i++) {
		res += widerstande[i]; // R1 + R2 + R3
	}
	return res; // Resultat zurückgeben
}

int main()
{
	int n; // Hebt die Anzahl der Wiederstände auf.
	char art; // Für die Auswahl benutzt.

	std::cout << "Wie gross ist die Anzahl der Widerstände? (2 oder 3):";
	std::cin >> n;

	do {
		std::cout << "Parallelschaltung (p) oder Serielleschaltung (s)?: "; // Text anzeigen.
		std::cin >> art; // Auswahl vom Benutzer speichern.
	} while (art != 'p' && art != 's'); // Bis die richtige Auswahl trifft.

	for (int i = 0; i < n; i++) {
		std::cout << "Widerstandswert [" << i + 1 << "]: "; // Text anzeigen.
		float input; // Lokale Variable namens "input" initaliziern.
		std::cin >> input; // In die Variable den Wert vom Benutzer einpacken.
		widerstande.push_back(input); // Diese Variable in das dynamische Array hinzufügen.
	}

	if (art == 'p') { // Falls Parallelerwiderstand, die parallel Methode ausführen und nachher diesen Anzeigen.
		std::cout << "Gesamtwiderstand: " << parallel(n);
	}
	else if (art == 's') { // Dasselbe, aber für den Seriellenwiderstand.
		std::cout << "Gesamtwiderstand: " << seriell(n);
	}
}


                

Lösung von: Fabio Miranda (Santis Training AG)

if (programmieraufgaben[aufgabenZurWiderstandsberechnung].length > 3000) {
  einfachIgnorieren();
}
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

// NET Core 3.x; C# 8.x

using System;
using System.Linq;

namespace CS_Aufgabe_Widerstaende
{
    class Program
    {
        static void Main(string[] args)
        {
            var (parallel, serial) = GetResSum(100, 100, 100);
            Console.WriteLine($"Parallel: {parallel:F1} Ohm\tSeriell: {serial:F1} Ohm");

            static (double parallel, double serial) GetResSum(params double[] resValues) => (resValues.Sum(), 1 / resValues.Select(w => 1 / w).Sum());
        }
    }
}
                

Lösung von: Jens Kelm (@JKooP)

// Net Core 3.x
// Achtung: F#

open System.Linq

let getResSum (v : float[]) =
    let p = v.Sum()
    let s = 1.0 / v.Select(fun w -> 1.0 / w).Sum()
    printfn "Parallel: %.2f Ohm || Seriell: %.2f Ohm" p s

let g = getResSum [|100.0; 100.0; 100.0|]
                

Lösung von: Jens Kelm (@JKooP)

// C++ 14 | VS-2022
#include <iostream>
#include <vector>
#include <numeric>

enum class Circuit{ parallel, serial };

double get_total_resistance(const std::vector<double>& res, const Circuit& cir) {
    const auto serial{ std::accumulate(res.begin(), res.end(), 0.0) };
    const auto parallel{ 1 / std::accumulate(res.begin(), res.end(), 0.0, [](auto a, auto b) { return a + 1.0 / b; }) };
    return cir == Circuit::parallel ? parallel : serial;
}

int main() {
    std::cout << "Parallel: " <<  get_total_resistance({10, 25, 13}, Circuit::parallel) << "\n";
    std::cout << "Seriell: " << get_total_resistance({10, 25, 13}, Circuit::serial) << "\n";
}
                

Lösung von: Jens Kelm (@JKooP)

' VBA

Enum Circuit
    Parallel
    Serial
End Enum

Function GetTotalResistance(res As Variant, cir As Circuit)
    Dim par As Double, ser As Double
    Dim r As Variant
    par = WorksheetFunction.Sum(res)
    For Each r In res
        ser = ser + 1 / r
    Next
    GetTotalResistance = IIf(cir = Parallel, par, 1 / ser)
End Function

Sub Main()
    Dim res As Variant
    res = Array(10, 25, 13)
    Debug.Print GetTotalResistance(res, Parallel)
    Debug.Print GetTotalResistance(res, Serial)
End Sub
                

Lösung von: Jens Kelm (@JKooP)

// C++ 20
#include <iostream>

int main() {
    constexpr auto get_parallel_resistance{ [] <typename ...T>(const T& ...param) { return 1 / ((1.0 / param) + ...); } };
    constexpr auto get_serial_resistance{ [] <typename ...T>(const T& ...param) { return (param + ...); } };
    std::cout << get_parallel_resistance(10, 25, 13) << "\n";
    std::cout << get_serial_resistance(10, 25, 13) << "\n";
}
                

Lösung von: Jens Kelm (@JKooP)

// C++ 20
#include <iostream>

int main() {
    constexpr auto parallel{ [] (auto&& ... param) { return 1 / ((1.0 / param) + ...); } };
    constexpr auto serial{ [] (auto&& ... param) { return (param + ...); } };
    std::cout << parallel(10, 25, 13) << "\n";
    std::cout << serial(10, 25, 13) << "\n";
}
                

Lösung von: Jens Kelm (@JKooP)

Verifikation/Checksumme:

10 + 10 = 20

10 || 10 = 5

10 + 25 + 13 = 48

10 || 25 || 13 = (650/141) ca. 4.61

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 1
Schwierigkeit: Mittel
Webcode: ageb-ru2j
Autor: ()

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen