Hallo,
habe wiedermal ein Problem, hier der vorläufige Programmcode ©:
#include <stdio.h>
#include <math.h>
int main (void) {
int zahl1, zahl2, erg2;
double zahl3, zahl4, erg1, erg3;
char auswahl;
printf ("Bitte geben Sie zwei ganze Zahlen, zwei Kommazahlen und ein Zeichen ein: \n");
printf ("EINGABE: ");
scanf ("%i%i%lf%lf%c", &zahl1, &zahl2, &zahl3, &zahl4, &auswahl);
if (auswahl=='A') {
erg1 = ((zahl1+zahl2+zahl3+zahl4)/4);
}
if (erg1<=10) {
erg2 = (int) erg1;
printf ("Ergebnis = %i\n", erg2);
}
else if (eng1>10) {
printf ("Ergebnis = %f\n", erg1);
}
return 0;
}
jetzt soll laut Aufgabenstellung folgendes gemacht werden :
Falls das Zeichen ein 'G' ist, soll aus den 4 Werten der geometrische Mittelwert (4-te Wurzel aus dem Produkt der 4 Werte) errechnet werden und ausgegeben werden.
Jetzt besteht das Problem darin, dass ich nicht genau weiß wie ich das einbinden soll. wenn ich die 2. Bedingung in die 1. if-Schleife einbinde, meldet er Fehler, da die Variable im unteren Teil erg1 nicht initialisiert ist, was auch logisch ist. Nur wie macht man das dann das ich bei Wahrheit der 2. Bedingung zb den unteren Teil hier "überspringe" ?
Vielen Dank
Seite 1 von 1
Problem Mit If-bedingung
Anzeige
#2
geschrieben 29. Oktober 2008 - 21:29
Pack doch einfach alles nach dem if in den Anweisungsblock zu if. Mit else if(auswahl=='G') kannst du dann die zweite Prüfung noch anhängen.
#3
geschrieben 29. Oktober 2008 - 22:00
Ich würd das so machen:
Hab nebenbei noch eine Variable eingespart, denn wenn immer nur eine Berechnung ausgeführt wird braucht man ja auch nur eine Ergebnis-variable.
#include <stdio.h> #include <math.h> int main (void) { int zahl1, zahl2, ergint; double zahl3, zahl4, ergebnis; char auswahl; printf ("Bitte geben Sie zwei ganze Zahlen, zwei Kommazahlen und ein Zeichen ein: \n"); printf ("EINGABE: "); scanf ("%i%i%lf%lf%c", &zahl1, &zahl2, &zahl3, &zahl4, &auswahl); if (auswahl=='A') { ergebnis = ((zahl1+zahl2+zahl3+zahl4)/4); if (ergebnis<=10) { ergint = (int) ergebnis; printf ("Ergebnis = %i\n", ergint); } else { printf ("Ergebnis = %f\n", ergebnis); } } else if (auswahl=='G') { ergebnis = [Formel]; } return 0; }
Hab nebenbei noch eine Variable eingespart, denn wenn immer nur eine Berechnung ausgeführt wird braucht man ja auch nur eine Ergebnis-variable.
Dieser Beitrag wurde von DarkMole bearbeitet: 29. Oktober 2008 - 22:02
Live for nothing or die for something
Silverstone Sugo-SG05 - ZOTAC GeForce 9300-ITX WiFi - Core 2 Quad Q8400 - Radeon HD 4850 Silent
OCZ Vista Performance Platinum 4Gb Kit - Samsung EcoGreen F2 1TB - Win 7 Pro
Silverstone Sugo-SG05 - ZOTAC GeForce 9300-ITX WiFi - Core 2 Quad Q8400 - Radeon HD 4850 Silent
OCZ Vista Performance Platinum 4Gb Kit - Samsung EcoGreen F2 1TB - Win 7 Pro
#5
geschrieben 29. Oktober 2008 - 23:23
Wahrscheinlich das gleiche, nur ohne Code...
greets
greets
around the world
#6
geschrieben 30. Oktober 2008 - 12:44
ah danke an euch beide =).. die abfrage ob größer oder kleiner gleich 10 ist praktisch eine if-Bedingung innerhalb der if-Bedingung von Zeichen A oder?
Edit:
Das Problem besteht jetzt nurnoch beim Einlesen des Zeichens mittels %c, da ich sobald die Return-Taste gedrückt wird dieses Bitmuster als Zeichen angenommen wird. Kann ich %c einfach durch %s = string ersetzen oder muss ich dabei sonst noch etwas beachten?
Außerdem soll im nächsten Schritt der Betrag der Differenz der beiden Mittelwerte ermittelt werden. Dies ist aber doch auch nicht direkt möglich, da ich ja entweder den einen oder den andren Mittelwert ausgebe oder?
Edit:
Das Problem besteht jetzt nurnoch beim Einlesen des Zeichens mittels %c, da ich sobald die Return-Taste gedrückt wird dieses Bitmuster als Zeichen angenommen wird. Kann ich %c einfach durch %s = string ersetzen oder muss ich dabei sonst noch etwas beachten?
Außerdem soll im nächsten Schritt der Betrag der Differenz der beiden Mittelwerte ermittelt werden. Dies ist aber doch auch nicht direkt möglich, da ich ja entweder den einen oder den andren Mittelwert ausgebe oder?
Dieser Beitrag wurde von Triale bearbeitet: 30. Oktober 2008 - 14:39
#7
geschrieben 30. Oktober 2008 - 20:16
Zitat
Außerdem soll im nächsten Schritt der Betrag der Differenz der beiden Mittelwerte ermittelt werden
Da musst du dann wieder auf deine ursprüngliche Lösung mit 2 Ergebnis-Variablen zurückgehen.
Für das andere Problem weiß ich grad leider keine Lösung
Live for nothing or die for something
Silverstone Sugo-SG05 - ZOTAC GeForce 9300-ITX WiFi - Core 2 Quad Q8400 - Radeon HD 4850 Silent
OCZ Vista Performance Platinum 4Gb Kit - Samsung EcoGreen F2 1TB - Win 7 Pro
Silverstone Sugo-SG05 - ZOTAC GeForce 9300-ITX WiFi - Core 2 Quad Q8400 - Radeon HD 4850 Silent
OCZ Vista Performance Platinum 4Gb Kit - Samsung EcoGreen F2 1TB - Win 7 Pro
#8
geschrieben 30. Oktober 2008 - 20:28
da hab ich halt dann das problem das ja entweder A ODER G eingegeben werden muss, um je ein ergebnis zu erhalten. hab das problem jetzt so gelöst: bei eingabe von einem D berechnet er die differenz aus beiden mittelwerten sozusagen neu und gibts dann aus, auf die vorherigen ergebnisse hab ich ja keinen zugriff da ich dazu ja entweder ein a oder g eingeben müsst
Thema verteilen:
Seite 1 von 1