For-Schleife

01/28/2007 01:58 NexMortis#1
Also wir haben ( um uns an die For-Schleife zu gewöhnen) ne eigentlich relativ einfache Aufgabe bekommen.
Ich hoffe ich kann mich richtig dran errinern wie sie hieß^^

Wir sollten mit der FOR-Schleife herrausfinden wie viele Zahlen zwischen zwei Zahlen die man eingeben kann vorhanden sind. So ODER so ähnlich.

Is ja auch nich viel Schreibtext aber mir fehlt das entscheidene Zwischenteil :

Code:
 procedure TForm1.Button1Click(Sender: TObject);
var zahl1,zahl2,a:integer;
begin
zahl1:=StrToInt(edit1.text);
zahl2:=StrToInt(edit2.text);
For a:=zahl1 to zahl2 do
----------------> Hier in der Zeile fehlt was^^

Also was sollte ich einfügen ?

Hoffe is einigermaßen rübergekommen^^
01/28/2007 10:27 Ultima#2
Quote:
Originally posted by NexMortis@Jan 28 2007, 01:58
Also wir haben ( um uns an die For-Schleife zu gewöhnen) ne eigentlich relativ einfache Aufgabe bekommen.
Ich hoffe ich kann mich richtig dran errinern wie sie hieß^^

Wir sollten mit der FOR-Schleife herrausfinden wie viele Zahlen zwischen zwei Zahlen die man eingeben kann vorhanden sind. So ODER so ähnlich.

Is ja auch nich viel Schreibtext aber mir fehlt das entscheidene Zwischenteil :

Code:
 procedure TForm1.Button1Click(Sender: TObject);
var zahl1,zahl2,a:integer;
begin
zahl1:=StrToInt(edit1.text);
zahl2:=StrToInt(edit2.text);
For a:=zahl1 to zahl2 do
----------------> Hier in der Zeile fehlt was^^

Also was sollte ich einfügen ?

Hoffe is einigermaßen rübergekommen^^
:eek: nicht dein ersnt oder?

hmm überlegen wir doch mal was sollst du tun

1. du sollst von einer eingegebenen zahl bis zu der zweiten eingegebenen zahl gehen

2. dann sollst du zählen wieviele zahlen dazwischen liegen also bei jedem schleifen durchgang einen counter um 1 erhöhen

also das erst hast du da schon hin geschrieben das zweite nicht mehr sag ich dazu nicht

aber nen denk anstoß gebe ich dir mal noch allerdings in andere richtung


zahl1:=StrToInt(edit1.text);
zahl2:=StrToInt(edit2.text);

das weißt ja fest das eine edit feld einer zahl zu was ist nun aber wenn die zahl in edit2 kleiner ist als in edit1 ???
01/28/2007 11:40 NexMortis#3
Ich blicks nich ... *Brett vorm Kopp*
:eek: Schande über mein Haupt..

Aber danke trotzdem das du dich mit befasst hast :D
01/28/2007 11:42 Maybe It's Maybelline#4
In VB isses relativ einfach,
for 1 = 10 do
lala = +1
end

Der Syntax ist nur sehr fraglich ;D
Villeicht hilft es dir trotzdem
01/28/2007 12:34 LightFighter#5
meinst du nicht eher

For i = 1 To 10
lala = lala+1
Next i

?
01/28/2007 17:13 Maybe It's Maybelline#6
ja genau ;D
01/28/2007 18:27 Term!nX#7
Das Prob ist, dass lala nicht deklariert ist, und zumindest AutoIt kriegt dann immer nen dicken. kP wie es bei anderen Sprachen ist.
Will jetzt keinen neuen Fred eröffnen:

Ich wollte ein Verfahren nachprogrammieren, um zufallsgeneratoren zu testen:

$a = InputBox("BLA", "wie oft würfeln?")

for $i = 1 to $a step 1
$b = Random(1, 6)
$c = $c + $b
if $i = $a then
$d = $c / $a
MsgBox(0, "Durchschnitt ist:", $d)
endif
next
Exit

Das Problem ist nur, dass mir immer vorgeheult wird, dass $c nicht deklariert ist -.- Keine Ahnung wie ich das lösen soll.
01/28/2007 21:02 Maybe It's Maybelline#8
Dim $c
01/28/2007 23:12 JohnDS#9
Hab grad mal etwas zeit.
ein denkanstoß:

Also, du solltest folgendes überlegen.
Benutzer gibt eine Zahl a ein udn eine 2. Zahl b ein. (Ganze Zahlen natürlich!!)

Nun zählst du in deiner schleife einfach jedesmal eine Zahl dazu. solange bis du Zahl b erreichst.
Und jedesmal wenn deine Schleife läuft, zählst du das.
01/29/2007 08:42 neji#10
eigentlich gehört der Lehrer geschlagen für so eine Sinnlose Übungsaufgabe *g*

die Zahlen zwischen b und a errechnet man mit b-a (+1) ^^
01/29/2007 11:20 mr.rattlz#11
Quote:
Originally posted by neji@Jan 29 2007, 08:42
eigentlich gehört der Lehrer geschlagen für so eine Sinnlose Übungsaufgabe *g*

die Zahlen zwischen b und a errechnet man mit b-a (+1) ^^
Du ahnst gar nicht wie oft man so was sieht ;)

Letztendlich geht es nicht darum, dass du etwas ganz besonders sinnvolles machst,
sondern, dass du das Konzept verstehst, und dann sind so einfache Sachen schon
irgendwie besser ;)

Wenn es dich tröstet kann ich dir eine CPU entwickeln, die nur inc und dec und nicht
add und sub hat, dann wirkt es sinnvoller ;D
01/29/2007 11:39 NexMortis#12
Hallo , danke für eure Antworten. Bei mir sieht es atm so aus
Code:
procedure TForm1.Button1Click(Sender: TObject);
var zahl1,zahl2,ergebnis,a:integer;
begin
zahl1:=StrToInt(edit1.text);
zahl2:=StrToInt(edit2.text);
For a:=zahl1 to zahl2 do
ergebnis:=zahl2-zahl1;
Label5.caption:=IntToStr(ergebnis);
Funktioniert auch aber is das denn Sinn der Sache ?^^
01/29/2007 14:13 neji#13
öhm....nein :)

Code:
procedure TForm1.Button1Click(Sender: Tobject);
var 
 I,ergebnis : Integer;
begin
 ergebnis := 0;
 for I := StrToInt(edit1.Text) to StrToInt(edit2.Text) do
  ergebnis := ergebnis + 1;
 Label5.Caption := IntToStr(ergebnis - 2);
end;
das mit dem B-A war nur ein verzweifelter Ausdruck dafür, dass euer Lehrer von euch erwartet, eure mathematischen Kenntnisse außen vor zu lassen und wieder anfangt, mit den Fingern abzuzählen -.-
01/29/2007 15:47 NexMortis#14
Jop Danke ;D Klappt nun ABER Eine Frage noch ^^

Code:
procedure TForm1.Button1Click(Sender: Tobject);
var 
 I,ergebnis : Integer;
begin
 ergebnis := 0;
 for I := StrToInt(edit1.Text) to StrToInt(edit2.Text) do
  ergebnis := ergebnis + 1;
 Label5.Caption := IntToStr(ergebnis - 2);<~muss hier nich ne1 stehen?Sonst verschiebt sich das E. um 1.
end;
01/29/2007 22:02 neji#15
die -2 deshalb weil :

nehmen wir an die zahlen sind 2 und 5 die schleife läuft jetzt also 4 mal durch.....ergebnis ist also 4, weil 2 und 5 jeweils mitgezählt werden......da aber nur die zahlen dazwischen gezählt werden sollen lässt man die erste und die letzte weg. --> minus 2 eben