Autor |
Beitrag |
Memphis
Hält's aus hier
Beiträge: 5
|
Verfasst: Di 01.02.05 16:48
Hallo.
Erstmal sorry, falls dieser Beitrag hier nicht reinpassen sollte, aber ich wüsste jetzt nicht, wo ich den sonst hineinschreiben soll.
Also zu meiner Frage:
Wir sollen in der Schule ein Programm programmieren, wo man 2 Zahlen eingeben kann und dann sämtliche Zahlen zwischen diesen beiden miteinander addiert werden.
Also z.B.
Zahl 1 = 5
Zahl 2 = 10
Die Berechnung: 5 + 6 + 7 + 8 + 9 + 10
Dies sollen wir mit einer FOR-Schleife anstellen.
Ich habe jedoch keine Ahnung wie ich das anstellen könnte.
Kann mir jemand einen Tip geben?`
MfG
Memphis
|
|
matze.de
      
Beiträge: 576
Win95, Win98 SE, WinXp Prof SP2
D7P, D8P, FPC2.0
|
Verfasst: Di 01.02.05 16:53
Hi und  im DF!
Zu deiner Frage:
Delphi-Quelltext 1: 2: 3: 4: 5:
| var ergebnis,zahl1, zahl2:integer; zahl1 := 5; zahl2 := 10; for i:=zahl1 to zahl2 do ergebnis := ergebnis + i; |
hoffe du verstehst es
mfg matze
P.S.:Benutz beim nächsten mal bitte Delphi-Tags so wie ich grad 
_________________ si tacuisses, philosophus mansisses.
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 01.02.05 16:54
Hallo Memphis
Du wirst hier gleich viele böse Kommentare bekommen, dass hier niemand dein Hausaufgaben macht. (Das ist auch richtig so).
Für deine Aufgabe musst du wissen:
1. Wie ist eine For-Schleife aufgebaut.
2. Wie addiere ich zwei Zahlen.
3. Wie deklariere ich Variablen.
Woran scheitert es bei dir?
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 01.02.05 16:56
@matze.de:
Du bist gemein. Jetzt lernt Memphis nichts mehr.
|
|
IngoD7
      
Beiträge: 629
D7
|
Verfasst: Di 01.02.05 17:00
[OFF-Topic]
matze.de hat folgendes geschrieben: | P.S.:Benutz beim nächsten mal bitte Delphi-Tags |
 *lol*
Für welchen Quellcode denn?
*Mal ausnahmsweise einen Anfänger in Schutz nehm*
[/OFF-Topic]
|
|
matze.de
      
Beiträge: 576
Win95, Win98 SE, WinXp Prof SP2
D7P, D8P, FPC2.0
|
Verfasst: Di 01.02.05 17:00
<--- fühlt sich schuldig :/
@Memphis guck mal, eine for-schleife wird solange durchlaufen, bis die 1 zahl der 2 entspricht. wenn du die erste zahl gleich 5 setzt und die 2 zahl 10 setzt, dann wird diese schleife 6 mal durchlaufen.
während den durchläufen addierst du zum ergebnis das alte ergebnis und die 1 zahl hinzu.
bin nicht so gut im erklären ;D
mfg matze
//Edit: @IngoD7 Hab nur zahlen gesehen und = zeichen. Hab das direkt mit quelltext assoziiert  ich nehms zurück sry
_________________ si tacuisses, philosophus mansisses.
|
|
Memphis 
Hält's aus hier
Beiträge: 5
|
Verfasst: Di 01.02.05 17:12
Erstmal danke für die Begrüßung
jasocul hat folgendes geschrieben: | Hallo Memphis
Du wirst hier gleich viele böse Kommentare bekommen, dass hier niemand dein Hausaufgaben macht. (Das ist auch richtig so).
Für deine Aufgabe musst du wissen:
1. Wie ist eine For-Schleife aufgebaut.
2. Wie addiere ich zwei Zahlen.
3. Wie deklariere ich Variablen.
Woran scheitert es bei dir? |
Ich verlange ja net, dass jemand meine Hausaufgaben macht, wollte ja nur Tips
1. Weiß ich
2. Weiß ich
3. Weiß ich
=)
Also das mit der 5 und der 10 war ein Beispiel
Die 2 Zahlen sollen über ein Edit-Feld eingegeben werden.
|
|
matze.de
      
Beiträge: 576
Win95, Win98 SE, WinXp Prof SP2
D7P, D8P, FPC2.0
|
Verfasst: Di 01.02.05 17:13
Memphis hat folgendes geschrieben: | =)
Also das mit der 5 und der 10 war ein Beispiel
Die 2 Zahlen sollen über ein Edit-Feld eingegeben werden. |
Wo liegt denn da dein Problem dann?
mfg matze
_________________ si tacuisses, philosophus mansisses.
|
|
Memphis 
Hält's aus hier
Beiträge: 5
|
Verfasst: Di 01.02.05 17:16
ahhh
Habs =)
Habs mir nur zu kompliziert gemacht =)
Also danke nochmal für die Hilfe
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 01.02.05 17:18
Ich nehme an, dass du weißt, wie man Edit-Felder auf die Form packt.
Um die Inhalte der Edit-Felder in Zahlen zu wandeln, brauchst du die Funktion StrToInt. Die kannst du in der OnLine-Hilfe (hier auch OH genannt  ) nachlesen.
Wie du sicher stellen kannst, dass der Anwender nur Zahlen eingibt, dazu wirst du mit der Suchfunktion im Forum einiges finden.
Anmerkung:
Dass euer Lehrer das mit einer For-Schleife machen will, stimmt mich nachdenklich. Vielleicht solltest du ihn überraschen und zeigen, wie C.F. Gauss das gemacht hat.
|
|
WeBsPaCe
      
Beiträge: 2322
Erhaltene Danke: 1
FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
|
Verfasst: Di 01.02.05 17:31
jasocul hat folgendes geschrieben: | Dass euer Lehrer das mit einer For-Schleife machen will, stimmt mich nachdenklich. Vielleicht solltest du ihn überraschen und zeigen, wie C.F. Gauss das gemacht hat. |
Wie hat er's denn gemacht? 
_________________ Steht der Bauer im Gemüse, hat er später grüne Füße.
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 01.02.05 17:38
C.F. sollte zur Strafe (Stören des Unterrichts) die Zahlen 1 bis 100 addieren.
Ihm viel auf, dass 1+100 gleich 101 ist. 2+99 aber auch. Das geht bis 50+51.
Also hat er 101 mal 50 gerechnet und war so doch ziemlich schnell fertig. Daraus kann man sehr schnelle eine Formel ableiten:
Summe = (Anfangszahl+Endzahl) * Anzahl_der_Zahlen / 2
|
|
WeBsPaCe
      
Beiträge: 2322
Erhaltene Danke: 1
FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
|
Verfasst: Di 01.02.05 17:46
Oho!!  Der böse C.F.!
Das ist dann wahrscheinlich die Aufgabe für den Unterricht.
PS.: @Memphis
Das sieht dann so aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure Tralala; var zahl1, zahl2: Integer; begin zahl1 := StrToInt(InputBox('Frage 1', 'Anfangszahl', '')); zahl2 := StrToInt(InputBox('Frage 2', 'Anfangszahl', '')); ShowMessage(IntToStr((zahl1 + zahl2)*(zahl2 div 2))); end; |
_________________ Steht der Bauer im Gemüse, hat er später grüne Füße.
Zuletzt bearbeitet von WeBsPaCe am Di 01.02.05 17:57, insgesamt 1-mal bearbeitet
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 01.02.05 17:51
Stimmt nur, wenn du bei 1(eins) anfängst.
|
|
WeBsPaCe
      
Beiträge: 2322
Erhaltene Danke: 1
FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
|
Verfasst: Di 01.02.05 17:58
jasocul hat folgendes geschrieben: | Stimmt nur, wenn du bei 1(eins) anfängst. |
Hmm, hast Recht. Da verlässt man sich EINMAL auf Aussagen anderer und schon funktionierts nich.. 
_________________ Steht der Bauer im Gemüse, hat er später grüne Füße.
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 01.02.05 18:07
So stimmt es:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure Tralala; var zahl1, zahl2: Integer; begin zahl1 := StrToInt(InputBox('Frage 1', 'Anfangszahl', '')); zahl2 := StrToInt(InputBox('Frage 2', 'Anfangszahl', '')); ShowMessage(IntToStr((zahl1 + zahl2)*((zahl2-Zahl1+1) div 2))); end; |
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Di 01.02.05 20:19
Nicht getestet aber eleganter (finde ich  )
Delphi-Quelltext 1: 2: 3: 4:
| function CFGaussDingels(Zahl1,Zahl2:integer): integer; begin result:= (zahl1 + zahl2)*((zahl2-Zahl1+1) div 2); end; |
Aufruf:
Delphi-Quelltext 1:
| showmessage(inttostr(CFGaussDingels(strtoint(edit1.text), strtoint(edit2.text)); |
aber leider beantwortet das nicht die frage bzw löst die aufgabe nicht, da sie ja mittels for schleife gelöst werden sollte (es sei denn der lehrer muss den code net sehen dann ist auch das passable  )
|
|
st-matze
      
Beiträge: 138
Win 3.11, Win 95, Win 98, Win XP
D7 Ent, D6 Pers, (D5 Pers)
|
Verfasst: Mi 02.02.05 09:36
@FearOfTheDark
Deine Funktion liefert nicht immer das richtige Ergebnis. Nur wenn die Anzahl der zu Summierenden Zahl Gerade ist, haut es hin.
Hab hier auch noch mal nen vorschlag zum schnellen "summieren"
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| function sumOneTo(ca: Cardinal) : Cardinal; begin Result := Trunc((1 + ca) * (ca / 2)); end;
function sumAtoB(A,B: Cardinal): Cardinal; begin Result := sumOneTo(B) - sumOneTo(A - 1); end; |
Aufruf:
Delphi-Quelltext 1:
| Ergebnis := sumAtoB(5,10); |
Bedingungen:
A < B
A > 0
Zuletzt bearbeitet von st-matze am Mi 02.02.05 12:12, insgesamt 1-mal bearbeitet
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 02.02.05 09:56
st-matze hat folgendes geschrieben: | @FearOfTheDark
Deine Funktion liefert nicht immer das richtige Ergebnis. Nur wenn die Anzahl der zu Summierenden Zahl Gerade ist, haut es hin. |
Stimmt. Man darf natürlich nicht "div" nehmen 
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mi 02.02.05 14:39
nein man sollte nur nicht unbedingt integer nehmen ^^
|
|