Benutzername:  
Passwort:     



Antwort schreiben  Thema schreiben 
Summenberechnung
Gast
Unregistered


Beitrag: #1
Summenberechnung - Posted At: 29.05.2009 06:05 PM

Ich habe seid einiger Zeit probiert folgendes Problem mit Pascal zu lösen

Wie viel Summanden von Sn = 1+1/2+1/3+1/4+ … +1/n muss man addieren, bis die Summe zum ersten Mal eine einzugebende Zahl (Sn) übersteigt? Die Berechnung soll nach höchstens
100 000 Summanden abgebrochen werden.
Ausgegeben werden soll die Summe Sn und die benötigte Anzahl Summanden.

Rein mathematisch ist mir klar, was ich machen soll, die Berechnung der Summe an sich im Einzelfall (wenn ich eine Zahl n eingebe funktioniert auch)

Nur so komm ich bei dem Programm nicht weiter...

Ich hatte folgendes ohne Erfolg probiert
weiß nicht ob das mit der Schranke eine so gute Idee ist.
Vielleicht könnte man es mit while i<= 100000 irgendwie probieren, dass das Programm dann abbricht?

Code PASCAL :
 
program Summenberechnung;
uses crt;
 
var n,z: integer;
schranke: longint;
sum,sn,i: real;
 
PROCEDURE Willkommen;
var sn:real;
begin
writeln('');
writeln('Willkommen im Turbo-PASCAL-Programm "Summenberechnung"!');
writeln('');
writeln('Dieses Programm ermoeglicht Ihnen die Anzahl der Summanden');
writeln('der Folge Sn=1+1/2+1/3+...+1/n einer einzugebenen Zahl Sn zu berechnen.');
write('Bitte geben Sie nun eine Zahl Sn ein: '); readln(sn);
end;
 
 
begin
clrscr;
Willkommen;
 
sum:=0;
schranke:=100000;
i:=0;
 
WHILE (i<=schranke) DO
begin
i:=i+1;
end;
 
WHILE (sn<=sum) DO
begin
sum:=sum+1/i;
end;
 
writeln('s(',sn,') = ',sum:0:Cool;
writeln('Anzahl der Summanden:,i,');
 
readln;
 
end.



Ich hoffe, mir kann jemand helfen.
Vielen dank schon einmal

Dieser Beitrag wurde zuletzt bearbeitet: 30.05.2009 07:13 PM von N43.

Unbekannt  Diesen Beitrag einem Moderator melden  
Diese Nachricht in einer Antwort zitieren
N43
Administrator
*******



Beiträge: 237
Registriert seit: Jan 2004
Gender: Male
Location: Stuttgart
Bewertung: 0

Beitrag: #2
RE: Summenberechnung - Posted At: 30.05.2009 07:10 PM

Hallo,

der Code ist fast richtig, nur musst du die beiden while-Schleifen zusammenfassen.

Code PASCAL :
WHILE (i<=schranke) DO
begin
i:=i+1;
end;
 
(* ab hier hat i den gleichen Wert wie schranke *)
 
WHILE (sn<=sum) DO
begin
sum:=sum+1/i;   (* siehe oben, i hat immer den Wert schranke *)
end;
In der ersten Schleife zählst du i bis schranke. Danach ändert sich i nicht mehr. Wenn ich das richtig sehe, ist auch die Bedingung "sn <= sum" falsch". Er soll doch solange 1/i addieren, bis sn erreicht ist.

Also beides in eine Schleife packen:
Code PASCAL :
WHILE (i <= schranke AND sum <= sn) DO
begin
   i := i + 1;
   sum := sum + 1;
end;



N43

P.S.: ich habe deinen Code mal in CODE-Tags gesetzt. Den bekommst du für Pascal mit [code=pascal] ... der Code ... [/ code] Das leerzeichen nach dem / muss raus, damit es funktioniert.


www.programmers-corner.de

Debuggers don't remove Bugs, they only show them in Slow-Motion.
Offline   Diesen Beitrag einem Moderator melden  
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben  Thema schreiben 

[-]
Schnellantwort
Nachricht
Gib hier deine Antwort zum Beitrag ein.





Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen

Gehe zu Forum: