WinFuture-Forum.de: Problem Mit If-bedingung - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Problem Mit If-bedingung


#1 Mitglied ist offline   Triale 

  • Gruppe: aktive Mitglieder
  • Beiträge: 132
  • Beigetreten: 13. September 05
  • Reputation: 0

geschrieben 29. Oktober 2008 - 21:18

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
0

Anzeige



#2 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

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.
0

#3 Mitglied ist offline   DarkMole 

  • Gruppe: aktive Mitglieder
  • Beiträge: 425
  • Beigetreten: 28. August 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Freudenstadt
  • Interessen:PC

geschrieben 29. Oktober 2008 - 22:00

Ich würd das so machen:
#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
0

#4 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

geschrieben 29. Oktober 2008 - 22:15

Äh, und was hab ich gesagt?
0

#5 Mitglied ist offline   Wiesel 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.932
  • Beigetreten: 09. Mai 06
  • Reputation: 525
  • Geschlecht:unbekannt
  • Wohnort:Punxsutawney, 742 Evergreen Terrace
  • Interessen:Mein Schneckenhaus

geschrieben 29. Oktober 2008 - 23:23

Wahrscheinlich das gleiche, nur ohne Code...

greets
around the world
0

#6 Mitglied ist offline   Triale 

  • Gruppe: aktive Mitglieder
  • Beiträge: 132
  • Beigetreten: 13. September 05
  • Reputation: 0

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?

Dieser Beitrag wurde von Triale bearbeitet: 30. Oktober 2008 - 14:39

0

#7 Mitglied ist offline   DarkMole 

  • Gruppe: aktive Mitglieder
  • Beiträge: 425
  • Beigetreten: 28. August 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Freudenstadt
  • Interessen:PC

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
0

#8 Mitglied ist offline   Triale 

  • Gruppe: aktive Mitglieder
  • Beiträge: 132
  • Beigetreten: 13. September 05
  • Reputation: 0

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
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0