Wertzuweisung bei Arrays in Pascal

Hi,
ich versuche in der Programmiersprache Pascal einem längernen Array verschieden Werte zu zuweisen.
Ein Beispiel was mir helfen würde, wenn mir jemand erklärt, wie ich bei einem
x=array[1…100]
für x= 1 bis 2 den Wert y(x)= x/2 (wobei x die Array Zahl des Arrays ist, in dem Fall 1 bzw 2)
und für x=3 bis 50 jewals y(x)=x/3
für x=51 bis 100 y(x)=y(x-20)/5

ich bitte um Lösung oder weitere Fragen, falls ich es unklar formuliert habe… verstehe nämlich die Verknüpfung von Werten in Abhängigkeit der Zahl des Arrays nicht ganz…

vielen dank schonmal

PROGRAM Demo;
VAR
Y : ARRAY[1 … 100] OF REAL;
X : INTEGER;
BEGIN
FOR X := 1 TO 2 DO Y[X] := X / 2;
FOR X := 3 TO 50 DO Y[X] := X / 3;
FOR X := 51 TO 100 DO Y[X] := Y[X - 20] / 5;
END.

das hier sollte funktionieren

case x of
1…2: y[x] := x / 2;
3…50: y[x] := x / 3;
51…100: y[x] := x / 5;
end

Ist schon ein bißchen her bei mir… Aber ich würde das au jeden Fall mit einer For-Schleife lösen, also in etwa:

for i:= 1 to 100 do
begin
if i2 and i50 then
begin
x[i]:=???; hier fehlt mir das mathematische verständnis…
end
end.

Hallo Tobi,

ich hoffe mal, ich habe deine Frage richtig verstanden.

Am Einfachsten ist es, das über drei Schleifen zu erledigen:

program Wertzuweisung;
uses crt;
var x:array[1…100] of real; {das Array}
zaehler:byte; {Hilfsvariable für die
Schleife}
begin
for zaehler:= 1 to 2 do x[zaehler]:=zaehler/2;

for zaehler:= 3 to 50 do x[zaehler]:=zaehler/3;

for zaehler:=51 to 100 do x[zaehler]:=(zaehler-20)/5;

end.

Falls noch Fragen sind, helfe ich dir gern weiter.

Sven

Verstehe ich Dich richtig?

procedure tobi(const n: integer; var x: array of double);
var
i: integer;
begin
setlength(x,n+1);
for i:=1 to 2 do begin
x[i]:=i/2;
end;
for i:=3 to 50 do begin
x[i]:=i/3;
end;
for i:=51 to n do begin
x[i]:=(i-20)/5;
end;
end;

Viele Gruesse
Veit

HI, tut mir leid, da kann ich dir leider nicht weiter helfen…

Liebe Grüße
Hella

Danke für die schnellen Lösungen,aberb das Problem wurde mir jetzt erst klar.

Ich versuch mein Problem jetzt richtig zu schldern.

Und zwar soll beim Array von 1-100 jedes Feld einen Wert bekommen, der sich auf den WERT der vorigen Felds bezieht.
Bsp:x= array 1-100
Wert von feld 1:=1
wert von feld 2=: wert von feld 1 geteilt durch 2
wert von feld 3:= wert von feld 1 geteilt durch 2 + wert von feld 2geteilt durch 2
wert von feld n(außnahme 1 und 2):=wert von feld (n-2)/2 +wert von feld (n-1)/2

so ein Programm wäre super… das kann man zwar auch als Gleichung schreiben, aber da ich auf dem Programm noch Sachen abstimmen muss, erweitern und ändern später, brauche ich das Programm.
Danke im Vorraus.

Du hast es eh’ schon geschrieben:

x[1]:=1;
x[2]:=x[1]*0.5;
for i:=3 to 100 do begin
x[i]:=(x[i-1]+x[i-2])*0.5;
end;

Viele Gruesse
Veit

x[1]:=1;
x[2]:=x[1]*0.5;
for i:=3 to 100 do begin
x[i]:=(x[i-1]+x[i-2])*0.5;
readln
end.

Viele Gruesse
Veit

ja genau soweit komme ich auch, aber er zeigt bei mir fehler an. Irgendwas hab ich bei der definition von x und i falsch gemacht:frowning:, dabei kann man da doch nichts mehr falsch machen, bitte nochmals um Hilfe

program tobi;

{$APPTYPE CONSOLE}

uses
SysUtils;

const
n: integer = 100;

var
i: integer;
x: array{[1…100]} of double;
begin

setlength(x,n+1);
x[1]:=1;
x[2]:=x[1]*0.5;
for i:=3 to n do begin
x[i]:=(x[i-1]+x[i-2])*0.5;
end;

for i:=1 to n do begin
writeln(i,x[i]);
end;

finalize(x);

end.

wieso braucht man jetzt sysutilis?
hab davon gehört, aber nie benutzt.
Und als Fehlermeldung kommt:
„cant find unit sysutilis used by tobi“

wieso braucht man jetzt sysutilis?
hab davon gehört, aber nie benutzt.
Und als Fehlermeldung kommt:
„cant find unit sysutilis used by tobi“

Na, dann schreib es richtig oder kommentier sie halt aus.
Die Unit SysUtils kommt mit Delphi.