switch case, römische zahlen, while schleife
-
@razor sagte in switch case, römische zahlen, while schleife:
zum verständnis
die variable continue_loop ist mit 1 deklariert worden
wird in der while schleife solange wiederholt bis über default die variable auf den wert 0 gesetzt und daurch die schleife nicht mehr wiederholt wird??im grunde kannst du dir merken, dass werte gleich 0 immer als "unwahr" und werte ungleich 0 immer als "wahr" interpretiert werden, weshalb du nicht while(continue_loop == 1), if(irgendeine_bedingung_ist_wahr == 1) oder so schreiben musst. du solltest nur irgendwelche negierungen wie if(!alles_in_ordnung) vermeiden und lieber if(irgendein_fehler_ist_aufgetreten) verwenden.
-
ok danke!
wie koennte ich in dem programm noch eine sinnvolle Funktion über der Main aussehen?
-
@razor sagte in switch case, römische zahlen, while schleife:
wie koennte ich in dem programm noch eine sinnvolle Funktion über der Main aussehen?
Bitte nochmal in verständlich.
-
"ihr programm soll eine funktion enthalten, die einzelne römische ziffern in die entsprechende dezimalzahl umwandelt. lesen sie dafür einen einzelnen buchstaben von der tastatur mit scanf() ein(...)"
so sieht die uebung aus ..
in der übung ist doch gemeint dass ich neben der int main
eine funktion verwende
https://de.wikibooks.org/wiki/C-Programmierung:_Funktionen
-
Dann packe den gesamten
switch
-Block in eine Funktion und gib ihr als Parameter die römische Ziffer mit.Noch besser wäre es, wenn du nach dem EVA-Prinzip auch die Ausgabe getrennt von der Umwandlungsfunktion halten würdest, so daß die obige Funktion nur den Dezimalwert (als
int
) zurückgibt.
Und die Ausgabe führst du dann passend formatiert mit printf durch (orientiere dich einfach an dem Beispiel in dem von dir gezeigten Link).
-
hallo! danke für die antwort hab jz eine andere uebung gemacht mit hilfe der Funktionen der proggen.org seite.
"programm solle eine funktion zuer berechnung von widerstandwerten in pararallelen schaltungen enthalten. es sollen 2 werte eingelesen werden und der berechnete wert in der variablen rtotal gespeichert und ausgegeben werden."
die ein und ausgabe sollen in der main stehen
hoff das passt so, nur das die eingabe in der main steht hab ich noch nicht hinbekommen#include <stdio.h> #include <stdlib.h> double berechnung (double, double); int main() { double r1= 0, r2= 0, rtotal= 0; rtotal = berechnung (r1, r2); //Funktionsaufruf printf("Der Ersatzwiderstand betraegt:%.2f \n",rtotal); return 0; } double berechnung (double a, double b) { printf("Geben Sie zwei parallel geschaltene Widerstaende ein: \n",a, b); scanf("%lf" "%lf",&a, &b); return (a*b) / (a+b); }```cpp
-
@razor sagte in switch case, römische zahlen, while schleife:
printf("Geben Sie zwei parallel geschaltene Widerstaende ein: \n",a, b);
Was soll das a, b da am Ende bewirken? (Es bewirkt nichts!).
-
ja stimmt natuerlich
-
@razor sagte in switch case, römische zahlen, while schleife:
nur das die eingabe in der main steht hab ich noch nicht hinbekommen
wie hast du das probiert?
-
habs jz so gemacht
#include <stdio.h> #include <stdlib.h> double rtotal (double r1, double r2); int main() { double r1= 0; double r2= 0; printf("Geben Sie zwei parallel geschaltene Widerstaende ein: \n"); scanf("%lf" "%lf",&r1, &r2); printf("Der Ersatzwiderstand betraegt:%.2f \n", rtotal(r1, r2)); //Funktionsaufruf return 0; } double rtotal (double r1, double r2) { return (r1*r2) / (r1+r1); }
und ncoh eine mit mittelwerts berechnungen
#include <stdio.h> #include <stdlib.h> #include <math.h> double arith (double zahl1, double zahl2); double geomet (double zahl1, double zahl2); double harmon (double zahl1, double zahl2); int main() { double zahl1= 0.0; double zahl2= 0.0; printf("Geben Sie zwei Zahlen ein:\n"); if(scanf("%lf %lf", &zahl1, &zahl2) > 2) { printf("Die Eingabe ist ungültig!\n"); } printf("Das arithmetische Mittel ist %.2lf \n", arith(zahl1, zahl2)); printf("Das geometrische Mittel ist %.2lf \n", geomet(zahl1, zahl2)); printf("Das harmonische Mittel ist %.2lf \n", harmon(zahl1, zahl2)); return 0; } double arith (double zahl1, double zahl2) //Berechnung arithmetisches Mittel { return (zahl1+zahl2) / 2; } double geomet (double zahl1, double zahl2) //Berechnung geometrisches Mittel { return sqrt(zahl1*zahl2); } double harmon (double zahl1, double zahl2) //Berechnung harmonisches Mittel { return (2*zahl1*zahl2) / (zahl1+zahl2); }
-
jz moecht ich diese machen,
vlthat ja auf die auch gerade jemandl lust!Ihr Programm soll zwei (20-stellige) int-Arrays mit Werten befüllen.
Das erste Array soll mit Werten ab 5 in 5er-Schritten befüllt werden (5,10,15,...).
Das 2.Array soll die Werte des 1.Arrays * 2 enthalten (10,20,30,...)Die Befüllung ist mit einer for-Schleife auszuführen! Das Programm soll die Summen und Mittelwerte (Summe/Anzahl der Elemnte) ausgeben.
Die Anzahl der Elemente eines Arrays lässt sich mit folgender Anweisung ermitteln:
(sizeof(arrray)/sizeof(int))Mögliche Ausgabe:
array1: Summe:........... Mittelwert:...........array2: Summe:........... Mittelwert:...........
-
@razor sagte in switch case, römische zahlen, while schleife:
jz moecht ich diese machen,
vlthat ja auf die auch gerade jemandl lust und ist im urlaub wo das wetter seit 3 tagen durchregnetJa wie jetzt, möchtest DU sie machen, oder möchtest Du sie gemacht haben?
Ich sehe gerade jemanden, der sie auch machen möchte:
https://www.c-plusplus.net/forum/topic/350269/array-mit-for-schleife-befüllen-hilfeeee
-
also ich bin gerade dabei aber ich wollt quasi die aufgabe reinstellen ob einfach jemand lust sie auch zu machen
-
@razor sagte in switch case, römische zahlen, while schleife:
also ich bin gerade dabei aber ich wollt quasi die aufgabe reinstellen ob einfach jemand lust sie auch zu machen
Ob @HIitsme Lust dazu hat weiß ich nicht. Er/Sie muss es wohl auch machen: https://www.c-plusplus.net/forum/topic/350269/array-mit-for-schleife-befüllen-hilfeeee
-
@razor sagte in switch case, römische zahlen, while schleife:
if(scanf("%lf %lf", &zahl1, &zahl2) > 2) { printf("Die Eingabe ist ungültig!\n"); }
scanf
gibt die Anzahl der gelesenen Werte zurück. Hier ist alles andere als 2 fehlerhaft.
Mehr als 2 wird nicht kommen. 0, 1 und EOF wären noch mögliche Werte.Zudem ist es ja schön, dass du die Meldung raus gibst, aber du rechnest munter mit den falschen Werten weiter.
Was passiert eigentlich, wenn zweimal 0 eingegeben wird?
-
@DirkB
```cppprintf("Geben Sie zwei Zahlen ein:\n"); scanf("%lf %lf", &zahl1, &zahl2); if (zahl1<2||zahl2<2) { printf("Die Eingabe ist unter zwei\n"); }
habs so gemacht
-
@razor sagte in switch case, römische zahlen, while schleife:
```cpp printf("Geben Sie zwei Zahlen ein:\n"); scanf("%lf %lf", &zahl1, &zahl2); if (zahl1<2||zahl2<2) { printf("Die Eingabe ist unter zwei\n"); }
habs so gemacht
WTF?
willst du überprüfen ob zwei Werte eingegeben wurden oder den Wertebereich der Eingabe?