Entwickler-Ecke

Basistechnologien - Zwischenwerte in Schleife speichern.


Gusto - Mi 16.11.11 09:16
Titel: Zwischenwerte in Schleife speichern.
Moin Moin,

ich habe diese Aufgabe:

Schreiben Sie ein Programm, das den Mitttelwert von vorher einzugebenden Zahlen berechnet und ausgibt. Wie viele Zahlen eingegeben werden sollen, kann der Benutzer vorher festlegen.

Mein Programm sieht bisher so aus:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
            string Eingabe;
            int Anzahl;
            int Zahl;
            int Ergebnis;


            Console.WriteLine("Hallo Benutzer!");
            Console.WriteLine("Wie viele zahlen möchten Sie eingeben?");
            Eingabe = Console.ReadLine();
            Anzahl = Convert.ToInt32(Eingabe);

            int n = 1;
            while (n <= Anzahl)
            {
                Console.WriteLine("Geben Sie eine Zahl ein");
                Eingabe = Console.ReadLine();
                Zahl = Convert.ToInt32(Eingabe);
                n++;
                    
            }


Aber das mit dem Mittelwert ausrechnen wird nichts, weil ich nicht weiß wie ich jeden eingegebenen Wert einzelnt speicher

Danke im Vorraus

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt
Moderiert von user profile iconGausi: Delphi-Tags durch C#-Tags ersetzt. Da war ich wohl eben noch nicht ganz wach...
Moderiert von user profile iconGausi: Topic aus Off Topic verschoben am Mi 16.11.2011 um 09:06


Xion - Mi 16.11.11 09:34

:welcome:

Um mehrere Werte zu speichern kannst du z.B. ein dynamisches Array verwenden:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
var Zahlen: array of integer;


procedure ZahlEingegeben (x: integer);
var len: integer;
begin
  Len := Length(Zahlen);
  SetLength(Zahlen, len+1);
  Zahlen[len] := x;
end;

function CalcMaximum (x: integer): integer;
var E: integer;
begin
  Result := 0;
  for E:= 0 to High(Zahlen) do
    if Zahlen[E]>Result then
      Result := Zahlen[E];
end;

Als Beispiel ;)


bummi - Mi 16.11.11 09:52

Wobei es für den Mittelwert langt Zahl immer zu Summe zu addieren und am Schluss durch Anzahl zu teilen ....


Gusto - Mi 16.11.11 09:58

@xion.
Ich bin in einer Ausbildung zum System-Integrator(!).
Leider ist mir dein Quelltext VIEL zu kompliziert. Wir haben grade mit Schleifen angefangen.

@bummi
Wie soll ich das denn addieren?
Könntest du mir ein Beispiel geben? Bzw. die Aufgabe lösen? Ich habe noch weitere 5 Aufgaben, muss aber diese wissen um die anderen 5 zu bearbeiten.

Ich saß gestern 1 1/2 Stunde daran und habe die Lösung nichtmal "ergooglen" können.

Vielleicht habe ich einfach nur ein Brett vorm Kopf :(

Mfg und Danke


bummi - Mi 16.11.11 10:07


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
i:Integer;
Anzahl:Integer;
Zahl:Double;
Summe:Double;

begin
  try

            Summe := 0;
            WriteLn('Hallo Benutzer!');
            WriteLn('Wie viele zahlen möchten Sie eingeben?');
            ReadLn(Anzahl);
            for I := 1 to Anzahl do
               begin
                 Writeln ('Geben Sie eine Zahl ein.');
                 Readln(Zahl);
                 Summe := Summe + Zahl;
               end;
            Writeln('Mittelwert: ' + FloatToStr(Summe/Anzahl));
            Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.


Gusto - Mi 16.11.11 10:20

Es geht immernoch nicht. Es geht ja eigentlich nur darum, dass der eingebene Wert mit den vorherigen addiert wird.
Ich arbeite mit Microsoft Visual C# 2010 Express.

So sieht es aus.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
Console.WriteLine("Hallo Benutzer!");
Console.WriteLine("Wie viele zahlen möchten Sie eingeben?");
Eingabe = Console.ReadLine();
Anzahl = Convert.ToInt32(Eingabe);

int n = 1;
while (n <= Anzahl)
{
    Console.WriteLine("Geben Sie eine Zahl ein");
    Eingabe = Console.ReadLine();
    Zahl = Convert.ToInt32(Eingabe);
    summe := summe+zahl; // Das funktioniert leider nicht ;(

    n++;
}


Moderiert von user profile iconTh69: C#-Tags hinzugefügt


bummi - Mi 16.11.11 10:23

Sorry, ich hatte völlig übersehen dass ins C-Forum gerutscht bin, war das in C nicht irgendwas mit
Summe += Zahl;

???


thepaine91 - Mi 16.11.11 10:26

Ja += ist korrekt.


Gusto - Mi 16.11.11 10:29

Lösung:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
            string Eingabe;
            int Anzahl;
            int Zahl;
            int Summe = 0;

            Console.WriteLine("Hallo Benutzer!");
            Console.WriteLine("Wie viele zahlen möchten Sie eingeben?");
            Eingabe = Console.ReadLine();
            Anzahl = Convert.ToInt32(Eingabe);

            int n = 1;
            while (n <= Anzahl)
            {
                Console.WriteLine("Geben Sie eine Zahl ein");
                Eingabe = Console.ReadLine();
                Zahl = Convert.ToInt32(Eingabe);
                Summe += Zahl;
                n++;
            }

            Console.WriteLine(Summe);


IT WORKS!!!!!!!

Vielen Dank! :D

Mfg

Moderiert von user profile iconTh69: C#-Tags hinzugefügt


ujr - Mi 16.11.11 19:24

user profile iconGusto hat folgendes geschrieben Zum zitierten Posting springen:


IT WORKS!!!!!!!


Kann schon sein - aber nicht mit der "Lösung"...


Handycommander - Sa 10.12.11 16:49

user profile iconujr hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconGusto hat folgendes geschrieben Zum zitierten Posting springen:


IT WORKS!!!!!!!


Kann schon sein - aber nicht mit der "Lösung"...


Unterschreib ich so... ;)
Du hast eine WICHTIGE Berechung vergessen...

Gruß,
Tobi