www.vorwissen.de
Ein Projekt von vorhilfe.de
Das gesammelte Wissen der Vorhilfe
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Teams · Forum · Wissen · Kurse · Impressum
Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Pascal" - Übung zu Array
Übung zu Array < Pascal < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Pascal"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Übung zu Array: Aufgabe 1
Status: (Frage) beantwortet Status 
Datum: 11:09 Di 26.09.2006
Autor: MarquiseDeSade

Aufgabe
Die Fibonacci-Folge ist wie folgt definiert:
1.Zahl:1
2.Zahl:1
Alle weiteren Zahlen berechnen sich aus der Summe des Vorgängers und Vorvorgängers. Also 3.Zahl ist 1.Zahl+2.Zahl.
Schreiben Sie ein Programm, dass die Fibonacci-Zahlen bis zur 25.Zahl berechnet, in einem Array "Fibonacci" abgespeichert und anschließend auf dem Bildschirm ausgibt.

Ein liebes Hallo :O)

Wir haben gestern diese Aufgabe bekommen und beschäftigen uns die nächste Zeit mit Arrays in Verbindung der for-Schleife.

Ich bin mir aber nicht sicher, ob ich den Syntax richtig verstanden habe, denn mein Programm gibt nur die letzte Zahl (75025) aus, anstatt alle von 1,1,2,3,5 usw.

Wo liegt mein Fehler, ich finde ihn beim besten Willen nicht. Über Anregungen bedanke ich mich schonmal im Vorraus.

Mein Programm

Program Fibo_test;
uses wincrt;

Var i,ausgabe:longint;
Fibo:array [1..25] of longint;
antwort:char;


BEGIN{Programm}
WriteLn('     Berechnungsprogramm für Fibo-Folge  ');
WriteLn;


antwort:='j';
while(antwort='j')do
   Begin{While do}
   Fibo[1]:=1;
   Fibo[2]:=1;

   for i:=3 to 25 do
   fibo[i]:=fibo[i-1]+fibo[i-2];

   Write(fibo[i],',');


WriteLn;
WriteLn('Nochmal? Wählen "j" für ja und "n" für nein.');
ReadLn(Antwort);

  ClrScr;
  end;{of while}

End.

Gruß Tobias

        
Bezug
Übung zu Array: Antwort
Status: (Antwort) fertig Status 
Datum: 11:39 Di 26.09.2006
Autor: VNV_Tommy

Hallo Tobias!

> Die Fibonacci-Folge ist wie folgt definiert:
> 1.Zahl:1
>  2.Zahl:1
>  Alle weiteren Zahlen berechnen sich aus der Summe des
> Vorgängers und Vorvorgängers. Also 3.Zahl ist
> 1.Zahl+2.Zahl.
> Schreiben Sie ein Programm, dass die Fibonacci-Zahlen bis
> zur 25.Zahl berechnet, in einem Array "Fibonacci"
> abgespeichert und anschließend auf dem Bildschirm ausgibt.
>  Ein liebes Hallo :O)
>  
> Wir haben gestern diese Aufgabe bekommen und beschäftigen
> uns die nächste Zeit mit Arrays in Verbindung der
> for-Schleife.
>  
> Ich bin mir aber nicht sicher, ob ich den Syntax richtig
> verstanden habe, denn mein Programm gibt nur die letzte
> Zahl (75025) aus, anstatt alle von 1,1,2,3,5 usw.
>
> Wo liegt mein Fehler, ich finde ihn beim besten Willen
> nicht. Über Anregungen bedanke ich mich schonmal im
> Vorraus.
>  
> Mein Programm
>  
> Program Fibo_test;
>  uses wincrt;
>  
> Var i,ausgabe:longint;
>   Fibo:array [1..25] of longint;
>   antwort:char;
>  
>
> BEGIN{Programm}
>  WriteLn('     Berechnungsprogramm für Fibo-Folge  ');
>  WriteLn;
>  
>
> antwort:='j';
>  while(antwort='j')do
>     Begin{While do}
>     Fibo[1]:=1;
>     Fibo[2]:=1;

=================
  

> for i:=3 to 25 do

[mm] \blue{Begin} [/mm]

>     fibo:=fibo[i-1]+fibo[i-2];
>

for i:=1 to 25 do

> Write(fibo,',');

[mm] \blue{End;} [/mm]
=================
Ich denke der Fehler ist in diesem Bereich zu finden. So wie die Syntax hier lautet, werden alle Zahlen mittels der for-Schleife berechnet und im array gespeichert. Wenn die for-Schleife dann aber für das letzte i=25 durchlaufen ist, dann wird mit dem write-Befehl nur die Zahlfür das aktuelle i (also, die Zahl an 25.Stelle) ausgegeben und das müsste die letzte Berechnete Zahl sein.

Meines Erachtens hast du nun 2 Möglichkeiten:
1.
Du lässt dir die aktuelle, berechnete Zahl jeweils ausgeben, sobald sie berechnet wurde, indem du den write-Befehl in die for-Schleife miteinbeziehst. (blaue Syntax; das dick geschriebene dabei nicht berücksichtigen!)

2.
Du baust noch eine zweite for-Schleife für die Ausgabe der Zahlen ein. (dick geschriebene Syntax; die blaue Syntax hierbei nicht berücksichtigen)
Das hätte zur folge, daß mit der von dir erstellten, ersten for-Schleife die zahlen berechnet werden und mit der zweiten for-Schleife die Zahlen ausgegeben werden.

Kleiner Hinweis am Rande:
In Pascal ist es so, daß ein Befehl, der direkt nach einer for-Schleife folgt in der for-Schleife berücksichtigt wird. Willst du mehr als einen Befehl in der for-Schleife abarbeiten, dann musst du diese mit Begin und End; eingrenzen (siehe erste Möglichkeit)

>
>
> WriteLn;
> WriteLn('Nochmal? Wählen "j" für ja und "n" für nein.');
> ReadLn(Antwort);
>
> ClrScr;
>    end;{of while}
>
> End.
>
> Gruß Tobias

Gruß,
Tommy

Bezug
                
Bezug
Übung zu Array: Vielen Dank
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 12:04 Di 26.09.2006
Autor: MarquiseDeSade

Hi Tommy :O)

Vielen Dank für deine schnelle und vorallem so super gelungene Beschreibung des Lösungsansatzes.
Ich habe es gleich mal ausprobiert und siehe da, es funktioniert :O)  
Ich war nämlich schon kurz davor zu verzweifeln..... weil ich einfach nicht wuste, wo der Fehler sein könnte.

Ich danke dir vielmals

gruß tobias

Bezug
        
Bezug
Übung zu Array: Formatierung und Ausgabe
Status: (Frage) beantwortet Status 
Datum: 12:35 Di 26.09.2006
Autor: MarquiseDeSade

Hallo :O)

Das Programm läuft, worüber ich sehr froh bin. Aber nun meine Frage zu der Formatierung in TPW:

Ist der "WriteLn" -Befehl insoweit begrenzt, dass er nur eine bestimmte Anzal von Zeilen auf den Bildschirm gibt? Denn bei mir müste stehen:

Berechnungsprogramm der ........
2
3
5
8
usw.

aber der Begrüßungstext und die Zahl 2 fehlen ganz, als hätte er im Fenster dafür keinen Platz und "Hochscrollen" geht aus nicht. Wenn ich die Zahlen mit "Write" schreibe, sieht das irgendwie doof aus, denn ich trenne die Zahlen ja mit Komma und er fängt dann die zweite Zeile mit einem Komma an.

Beispiel:

1,1,2,3,5,8
,13,21

und das sieht doof aus.

Vielleicht weiß ja jemand eine Lösung, sofern TPW da Möglichkeiten bietet

Gruß Tobias

Bezug
                
Bezug
Übung zu Array: Antwort
Status: (Antwort) fertig Status 
Datum: 13:34 Di 26.09.2006
Autor: VNV_Tommy

Hallo nochmals! ;-)

> Hallo :O)
>  
> Das Programm läuft, worüber ich sehr froh bin. Aber nun
> meine Frage zu der Formatierung in TPW:
>  
> Ist der "WriteLn" -Befehl insoweit begrenzt, dass er nur
> eine bestimmte Anzal von Zeilen auf den Bildschirm gibt?

Leider ja. Soweit ich mich erinnere sind es ein bisschen was über 20 (ich glaub 22 oder 24) Zeilen die auf dem Bildschirm bei TP existieren. Der writeln-Befehl schreibt bekanntlich die Ausgabe auf den Bildschirm und springt dann eine Zeile weiter nach unten. Wenn der Cursor in der letzten Zeile angekommen ist, wird ab Benutzung des writeln-Befehls die Ausgabe ausgegeben, während die vorherigen Ausgaben alle eine Zeile nach oben rutschen. Die ausgabe wird quasi nach oben 'geschoben'

Auch hier gibt es wieder mehrer Möglichkeiten:
Entweder lässt du ab einer bestimmten Anzahl an ausgegebenen Zahlen die Ausgabe anhalten nach dem Motto:"Zum Fortfahren bitte Enter drücken!". Das erfordert noch eine Zeilein deiner for-Schleife, die mod-divison anwendest.
z.B.
If (i mod 20)=0 Then
Begin
Write('Zum Fortfahren bitte Enter drücken!');
Readln;
End;

Andere Möglichkeit:
Sofern ich mich erinnere gab es einen Befehl mit dem man den Cursor an eine gewünschte Stelle auf dem Bildschirm steuern konnte (ich glaub er hieß goto(x,y) oder so ähnlich). Damit könntest du quasi Spalten auf dem Bildschirm aufbauen, die dann die Zahlen ausgeben. Die Methode ist allerdings ein wenig kompliziert, zumal die Breite der Zahlen ja auch zunimmt, wonach ich die erste Möglichkeit hier vorziehen würde.

Gruß,
Tommy


Bezug
                        
Bezug
Übung zu Array: Danke
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:58 Di 26.09.2006
Autor: MarquiseDeSade

Hi :O)

Mh, das habe ich mir schon fast gedacht, schade eigentlich. Ich denke ich werde deinen ersten Ratschlag befolgen und mit mod arbeiten.

Die andere Variante klingt sehr gut, aber dein Angesprochenes Problem besteht ja und dieser Aufwand wäre es nicht wert, für dieses Programm.

Nochmals vielen Dank für deine Mühe

Gruß Tobias

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Pascal"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorwissen.de
[ Startseite | Mitglieder | Teams | Forum | Wissen | Kurse | Impressum ]