Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.

Turbo Pascal - ein Program das den Durchschnitt ausrechnet?

Hi,

wir sollen für die Schule ein Program auf Turbo Pascal programmieren, welches den Durchschnitt beliebig vieler Zahlen ausrechnet.

Ich hab mir das ungefähr so vorgestellt:

Program Durchschnitt;

USES CRT;

VAR anzahl :Integer;

Zahl :Integer;

D :Integer;

Zwischensumme :Integer;

procedure Durchschnit;

Begin

repeat

anzahl:=anzahl+1;

Writeln('Gib nun die Zahlen ein, von welchen du den Durchschnitt erfahren willst!');

readln(Zahl);

Zwischensumme:=Zwischensumme+Zahl

until Zahl=0;

End;

Begin

clrscr;

anzahl:=0;

D:=0;

Zwischensumme:=0;

Writeln('Der Durchschnitt lautet: '); Write(Zwischensumme/Anzahl);

Readln;

End.

Bloß leider wird jedesmal wenn ich auf run klicke, dass Programm mit exitcode 207 geschlossen... was ist hier falsch?

MFG Max

Update:

Jetze siehts so aus:

Program Durchschnitt;

USES CRT;

VAR anzahl :Integer;

Zahl :Integer;

D :Integer;

Zwischensumme :Integer;

Begin

anzahl:=0;

D:=0;

Zwischensumme:=0;

procedure Durchschnit;

Begin

repeat

anzahl:=anzahl+1;

readln(Zahl);

Zwischensumme:=Zwischensumme+Zahl

until Zahl=0;

End;

Begin

Writeln('Gib nun die Zahlen aus denen ich den Durchschnitt errechnen soll ein!');

clrscr;

Writeln('Der Durchschnitt lautet: '); Write(Zwischensumme/Anzahl);

Readln;

End.

aber irgendwie zeigt der beim compilen Fehler bei der Procedure-Stelle an...

Update 2:

so siehts jetze aus das andere war falsch

Program Durchschnitt;

USES CRT;

VAR anzahl :Integer;

Zahl :Integer;

D :Integer;

Zwischensumme :Integer;

Begin

anzahl:=0;

D:=0;

Zwischensumme:=0;

procedure Durchschnit;

Begin

repeat

anzahl:=anzahl+1;

readln(Zahl);

Zwischensumme:=Zwischensumme+Zahl

until Zahl=0;

End;

Begin

IF Zahl=0 Then anzahl=anzahl-1;

Writeln('Gib nun die Zahlen aus denen ich den Durchschnitt errechnen soll ein!');

clrscr;

Writeln('Der Durchschnitt lautet: '); Write(Zwischensumme/Anzahl);

Readln;

End.

3 Antworten

Bewertung
  • Anonym
    vor 1 Jahrzehnt
    Beste Antwort

    Ein Durchschnitt ist nicht zwangsweise integer/ganzzahlig.

    Beispiel:

    (1+3+5 + 2)/4 = 11/4 = 5.5

    Zudem wird deine Prozedur gar nicht im Hauptprogramm aufgerufen, lies da nochmal nach:

    http://www.webplain.de/turbopascal/aufbau.php

    Es geht auch ohne Prozedur.

    Also sowas wie:

    Begin

    Writeln('Gib nun die Zahlen aus denen ich den Durchschnitt errechnen soll ein!');

    Begin

    repeat

    anzahl:=anzahl+1;

    readln(Zahl);

    Zwischensumme:=Zwischensumme+Zahl

    until Zahl=0;

    End;

    End.

    Eine If-Then-Abfrage nach der Schleife ist unnötig, denn:

    Writeln('Der Durchschnitt lautet: '); Write(Zwischensumme/(Anzahl-1));

    lässt sich problemlos bewerkstelligen und ist viel kürzer.

  • Anonym
    vor 1 Jahrzehnt

    Such dir im netz eine Mathematische library wo die function average

    enthalten ist.

    gpk

  • vor 1 Jahrzehnt

    207 = Invalid floating point operation

    du setzt zwischensumme und anzahl auf null, bevor du das ergebnis ausgibst. das fuehrt zu einer division durch null in der zeile:

    Write(Zwischensumme/Anzahl);

    ausserdem wuerde anzahl nicht ganz korrekt sein, weil du die eingabe mit einer Null abschliessen musst.

    also angenommen du gibst drei mal die zahl drei ein, und die null zum abbrechen. dann ist zwischensumme 9, aber du teilst durch vier, was natuerlich das ergebnis verfaelscht.

    +++

    in der zeile:

    Zwischensumme:=Zwischensumme+Zahl

    fehlt ein semikolon.

Haben Sie noch Fragen? Jetzt beantworten lassen.