Mal wieder eine Aufgabe



  • Sorry, so sollte es funktionieren:

    int arrayEinlesen() {
    	int array[10] = {3,1,8,5,7,8,5,3,6,2};
    }
    


  • Müssen wir nicht. Denke, er sollte sich jemanden suchen, der ihm für jeweils 50€ immer die Aufgaben erledigt.



  • Lieber 1000€ pro Aufgabe.
    Danke für die Hilfe Herr Moderator.



  • Benjoo #1 schrieb:

    Sorry, so sollte es funktionieren:

    int arrayEinlesen() {
    	int array[10] = {3,1,8,5,7,8,5,3,6,2};
    }
    

    Klar funktioniert das. Aber nicht in deinem Sinn.
    Denn die Werte bekommst du so nicht aus der Funktion heraus.

    Hier kannst für "beliebige ganze Zahlen" auch "zufällige ganze Zahlen" nehmen.



  • Benjoo #1 schrieb:

    Lieber 1000€ pro Aufgabe.
    Danke für die Hilfe Herr Moderator.

    So bitte hier nícht nicht fragen oder die angebotenen 1000€ für die Lösung
    auch raustun! 😃



  • Lassen wirs mit der Aufgabe, ich bekomme die nicht gebacken..
    Danke an DirkB, für die Hilfe.
    Hab ne andere Aufgabe, hab schon viel programmiert, nur mit der Übergabe der Funktionen komm ich einfach nicht zurecht..

    Aufgabe: Ich soll ein Programm schreiben, dass den Ersatzwiderstand ausrechnet. Die Formeln dafür sieht man in meinem Quellcode.
    Die Werte der einzelnen Widerstände sollen in einem Array "widerstaende" gespeichert werden.
    Ich soll 2 Funktionen schreiben.
    Eine Funktion namens "einlesen" welcher ich das Array "widerstaende" übergebe. Dieses Array soll dann innerhalb der Funktion mit den float-Werten der Widerstände befüllt werden.
    Der zweiten Funktion "berechnen" übergebe ich als Übergabeparameter einen char für den Aufbau der Schaltung (parallel- oder Reihenschaltung) und das Array "widerstaende" mit den eingelesenen Werten. In dieser Funktion soll ich dann die Berechnung durchführen und den Ersatzwiderstand als float zurück geben.

    Soweit zur Aufgabe.
    Bis jetzt hab ich geschrieben:

    #include <stdio.h>
    #include <Windows.h>
    
    void einlesen() {
    	float widerstaende[3];
    
    	printf("Bitte geben Sie fuer die Widerstaende positive Zahlen groesser als 0 ein.\n\n");
    	printf("Bitte geben Sie den ersten Widerstand in Ohm ein: ");
    		fflush(stdin);
    	scanf("%lf", &widerstaende[0]);
    
    	printf("\nBitte geben Sie den ersten Widerstand in Ohm ein: ");
    		fflush(stdin);
    	scanf("%lf", &widerstaende[1]);
    
    	printf("\nBitte geben Sie den ersten Widerstand in Ohm ein: ");
    		fflush(stdin);
    	scanf("%lf", &widerstaende[2]);
    }
    
    char berechnen(char circuit) {
    	double equivRes = 0;
    	circuit ='x';
    	equivRes = einlesen(widerstaende[3]);
    
    	printf("\nBitte waehlen Sie 'p' fuer Parallelschaltung und 'r' fuer Reihenschaltung");
    		fflush(stdin);
    	scanf("%c", &circuit);
    
    	switch (circuit)
    	{
    		case 'p': 
    		case 'P':
    					equivRes = 1/(1/widerstaende[0] + 1/widerstaende[1] + 1/widerstaende[2]); // Parallelschaltung
    		break;
    		case 'r':
    		case 'R':
    					equivRes = widerstaende[0] + widerstaende[1] + widerstaende[2]; // Reihenschaltung
    		break;
    		default:
    					printf("\nKein Schaltungstyp gewaehlt.");
    					equivRes = 0;
    	} 
    	return equivRes;
    }
    
    void main() {
    	float v;
    	v = berechnen();
    
    printf ("\n\nDer Ersatzwiderstand ist: %.2lf\n", v);
    
    system("PAUSE");
    }
    

    Ich weiß, dass noch viele Fehler auftauchen, aber die kommen alle nur daher, dass ich nicht richtig weiß, wie ich die Werte von der einen Funktion in die andere übergebe.. 😕



  • #include <stdio.h>
    
    void einlesen(float widerstaende[]) {
    
    	printf("Bitte geben Sie fuer die Widerstaende positive Zahlen groesser als 0 ein.\n\n");
    	printf("Bitte geben Sie den ersten Widerstand in Ohm ein: ");
    
    	scanf("%f", &widerstaende[0]);
    
    	printf("\nBitte geben Sie den ersten Widerstand in Ohm ein: ");
    
    	scanf("%f", &widerstaende[1]);
    
    	printf("\nBitte geben Sie den ersten Widerstand in Ohm ein: ");
    
    	scanf("%f", &widerstaende[2]);
    }
    
    double berechnen(char circuit) {
            float widerstaende[3];
    	double equivRes = 0;
    	circuit ='x';
    	einlesen(widerstaende);
    
    	printf("\nBitte waehlen Sie 'p' fuer Parallelschaltung und 'r' fuer Reihenschaltung");
    
    	scanf(" %c", &circuit);
    
    	switch (circuit)
    	{
    		case 'p': 
    		case 'P':
    					equivRes = 1/(1/widerstaende[0] + 1/widerstaende[1] + 1/widerstaende[2]); // Parallelschaltung
    		break;
    		case 'r':
    		case 'R':
    					equivRes = widerstaende[0] + widerstaende[1] + widerstaende[2]; // Reihenschaltung
    		break;
    		default:
    					printf("\nKein Schaltungstyp gewaehlt.");
    					equivRes = 0;
    	} 
    	return equivRes;
    }
    
    int main() {
    	float v = berechnen();
    
    printf ("\n\nDer Ersatzwiderstand ist: %.2f\n", v);
    return 0;
    }
    


  • Benjoo #1 schrieb:

    Eine Funktion namens "einlesen" welcher ich das Array "widerstaende" übergebe.

    Das hast du ja schon nicht gemacht.

    Benjoo #1 schrieb:

    Der zweiten Funktion "berechnen" übergebe ich als Übergabeparameter einen char für den Aufbau der Schaltung (parallel- oder Reihenschaltung) und das Array "widerstaende" mit den eingelesenen Werten.

    Deine Funktion erwartet einen Parameter, den du in der Funktion aber sofort wieder überschreibst.
    In der Funktion soll gar keine Abfrage gemacht werden.

    In main übergibst du auch keinen Parameter an berechne.

    Mal so nebenbei:
    Die Angaben zwischen den Klammern bei scanf und printf sind auch Parameter.
    Und da schaffst du das ja auch. 😉



  • Vielen vielen Dank bis dahin.
    Das einzige was noch nicht funktioniert ist die untere main-Funktion.
    Da kommt, dass nicht genügend Argumente für Aufruf angegeben wurden..



  • Ich hätte die main-Funktion so geschrieben, funktioniert nur leider auch nicht..

    int main() { 
    	double equivRes;
        berechnen(equivRes); 
    
    printf ("\n\nDer Ersatzwiderstand ist: %.2f\n", equivRes); 
    return 0; 
    system("PAUSE");
    }
    


  • Benjoo #1 schrieb:

    Das einzige was noch nicht funktioniert ist die untere main-Funktion.
    Da kommt, dass nicht genügend Argumente für Aufruf angegeben wurden..

    Was kann man da bloß machen? 🙄

    Dann übergib einen Paramter. Einen der zur Definition der Datei passt.



  • Rumraten nützt da nichts.

    Schau dir mal die Zeile 19 an.
    Was steht ganz vorne in der Zeile?
    Und was steht zwischen den Klammern?



  • DirkB schrieb:

    Rumraten nützt da nichts.

    Schau dir mal die Zeile 19 an.
    Was steht ganz vorne in der Zeile?
    Und was steht zwischen den Klammern?

    Ja double und in der Klammer char.
    Ich steh mal wieder aufm Schlauch hab ichs Gefühl..



  • Die Funktion gibt ein double-Wert zurück. Den kannst du z.B. einer Variablen zuweisen.
    Wie weist du einer Variablen einen Wert zu?

    Die Funktion erwartet als ersten (und einzigen) Parameter ein char. Das ist der Wert zwischen den Klammern.
    Ein char (i.A 8-Bit mit Vorzeichen) kann Werte zweischen -127 und +127 aufnehemn.
    Dazu gehören auch Zeichen wie z.B. 'x' oder '@' oder ...



  • int main(double equivRes) { 
        float v = berechnen(equivRes); 
    
    printf ("\n\nDer Ersatzwiderstand ist: %.2f\n", v); 
    return 0; 
    
    system("PAUSE");
    }
    

    ??

    EDIT:
    Funktioniert! Vielen vielen Dank.



  • Nun gibts noch ne b.)
    Die lautet:

    Ich soll meine Funktionen so abwandeln, dass ich beliebig viele Widerstände berechnen kann.
    Das Hauptprogramm soll ich so ändern, dass ich über eine Eingabe abfragen kann, wie viele Widerstände ich berechnen will.

    Ich versuch mich mal dran.
    MfG



  • Hast du den Code auch editiert?

    Der ist Müll: http://www.c-plusplus.net/forum/p284489#284489

    Zudem ist ein double kein char.

    Der Compiler übersetzt das. Er gibt aber auch ein paar Warnungen (wenn du sie eingeschaltet hast - Was du unbedingt tun solltest).



  • Benjoo #1 schrieb:

    Das Hauptprogramm soll ich so ändern, dass ich über eine Eingabe abfragen kann, wie viele Widerstände ich berechnen will.

    Den Wert musst du dann ja an die Funktion übergeben. 😮



  • Ich hab return 0; rauseditiert.
    Mehr nicht, ja hab meine Warnungen an, da kommt keine?!



  • Sorry

    int main(char equivRes) { 
       double v = berechnen(equivRes); 
    
    printf ("\n\nDer Ersatzwiderstand ist: %.2f\n", v); 
    //return 0; 
    
    system("PAUSE");
    }
    

Anmelden zum Antworten