Nur eingegebene Zahlen nutzen

Hallo zusammen, ich beschäftige mich etwas mit c++, bin darin neu und habt etwas verständnis dafür wenn der programmcode nicht sonderlich schön sein sollte :smile:

Ich möchte ein Programm Widerstände berechnen) schreiben in dem ich bis zu 10 Werte eingeben kann, aber man braucht ja nicht alle 10, bloß bei meinem Code will der aber werte haben sonst ist das ergebnis immer null, wie kann ich das anstellen, einfach erklärt für einen Laien?

hier mal der bisherige code:

#include 
using namespace std;

int main () {

 float R1 = 0;
 float R2 = 0;
 float R3 = 0;
 float R4 = 0;
 float R5 = 0;
 float R6 = 0;
 float R7 = 0;
 float R8 = 0;
 float R9 = 0;
 float R10 = 0;
 float Summe;

 cout \> R1;
 cout \> R2;
 cout \> R3;
 cout \> R4;
 cout \> R5;
 cout \> R6;
 cout \> R7;
 cout \> R8;
 cout \> R9;
 cout \> R10;

 if (R1 = (1/R1));
 if (R2 = (1/R2));
 if (R3 = (1/R3));
 if (R4 = (1/R4));
 if (R5 = (1/R5));
 if (R6 = (1/R6));
 if (R7 = (1/R7));
 if (R8 = (1/R8));
 if (R9 = (1/R9));
 if (R10 = (1/R10));

 Summe = R1+R2+R3+R4+R5+R6+R7+R8+R9+R10;
 Summe = 1/Summe;

 cout 

Hallo Armour

Hallo zusammen, ich beschäftige mich etwas mit c++, bin darin
neu und habt etwas Verständnis dafür wenn der Programmcode
nicht sonderlich schön sein sollte :smile:

Schon ok :wink:

Ich möchte ein Programm Widerstände berechnen) schreiben in
dem ich bis zu 10 Werte eingeben kann, aber man braucht ja
nicht alle 10, bloß bei meinem Code will der aber werte haben
sonst ist das ergebnis immer null, wie kann ich das anstellen,
einfach erklärt für einen Laien?

OK, machen wir …

hier mal der bisherige code:

#include
using namespace std;
int main () {

Dafür erscheint jetzt:

#include 
#include 
using namespace std;

#define N 10

 int main () 
{

Wir legen also eine Anzahl N=10 vorher fest und
verwenden ‚string‘-Funktionen.

float R1 = 0;
float R2 = 0;
float R3 = 0;
float R4 = 0;
float R5 = 0;
float R6 = 0;
float R7 = 0;
float R8 = 0;
float R9 = 0;
float R10 = 0;
float Summe;
cout

Brauchen wir nicht. R1-R10 wird
nur intern zur Berechnung von ‚Summe‘
verwendet, kann also weggelassen werden. Also:

 cout 
Da wir nicht wissen, wie viele Werte eingegeben werden,
benutzen wir einen Zähler 'anzahl' und ein _flag_
'fertig', um zu signalisieren, dass nichts mehr eingegeben
werden braucht. Sowohl 'anzahl' als auch 'Summe' müssen
initialisiert werden. Und 'fertig' sind wir am Anfang
auch noch nicht.


> cout \> R1;
> cout \> R2;
> cout \> R3;
> cout \> R4;
> cout \> R5;
> cout \> R6;
> cout \> R7;
> cout \> R8;
> cout \> R9;
> cout \> R10;
> if (R1 = (1/R1));
> if (R2 = (1/R2));
> if (R3 = (1/R3));
> if (R4 = (1/R4));
> if (R5 = (1/R5));
> if (R6 = (1/R6));
> if (R7 = (1/R7));
> if (R8 = (1/R8));
> if (R9 = (1/R9));
> if (R10 = (1/R10));
> Summe = R1+R2+R3+R4+R5+R6+R7+R8+R9+R10;


Das bauen wir zu einer Schleife um:


    
     while(!fertig) { // solange nicht fertig mit Schleife
     cout 
    Das solltest Du mal Zeile für Zeile durchgehen
    
    Und schließlich - aus:
    
    
    > Summe = 1/Summe;
    > cout
    
    
    machen wir:
    
    
    
        
         Summe = 1.0/Summe;
         cout 
        da Deine 'main'-Funktion angeblich ein 'int' zurückgibt.
        
        Viele Grüße
        
        CMb

wow danke, hatte schon weiter „probiert“ hatte zumindest die rechnung schon richtig, allerdings mußte ich immer alles eingeben, mit dem code ist das natürlich nicht mehr möglich super danke, jetzt such ich gerade eine möglichkeit, das er eine Ausgabe macht das die Zahl Positive sein muß wenn jemand eine Negative Zahl eingibt und so lange fortfährt bis er dies getan hat, übung macht den meister, mir machts richtig spaß, und wenn man solch tolle hilfe bekommt noch mehr, tausend dank!

lg Armour

Hallo

jetzt such ich gerade eine möglichkeit, das er eine Ausgabe
macht das die Zahl Positive sein muß wenn jemand
eine Negative Zahl eingibt und so lange fortfährt bis er dies
getan hat, übung macht den meister, mir machts richtig spaß,
und wenn man solch tolle hilfe bekommt noch mehr, tausend
dank!

Da würde ich eine Funktion basteln (z.B.: sanitize_input(), die
immer dann, wenn kein gültiger R eingegeben wurde, R auf 0.0 setzt)

  • was dazu führt, das der Zähler in der Schleife nicht hochge-
    zählt wird.

Vereinfacht:

#include 
#include 
using namespace std;

 double sanitize\_input(const string& s)
{
 double r = atof( s.c\_str() );
 if(r 
Grüße

CMb

ich sehe schon muß noch viel lernen, darauf wär ich nicht gekommen.

recht herzlichen dank, mußte zwar die formel noch richtig machen, aber super Arbeit ich danke euch

lg Armour