TP:Zufall und MAX bzw. MIN

SPringtoifel

Grünschnabel
Hallo Hallo,
is ja nen richtig gutes Forum hier.
So ich hab da ma ne Frage, alsoo:
In Turbo Pascal soll ich 10 Zufallszahlen erscheinen lassen zwischen 1 und 100.
So das is ja kein Problem, aber ich soll nun noch die Größte und kleinste davon anzeigen lassen.
Ich hab mir schon was gedacht von For-to-do Schleife, weiß aber noch nich so genau...

Also könnt ihr mir helfen.

MFG
 
Dann wäre doch wohl das günstigste, ein Array zu deklarieren, mit Zufallszahlen zu füllen und dann in der schon angesprochenen for-to-do-Schleife die größte und die kleinste Zahl zu speichern (also immer mit dem Wert vergleichen und gegebenenfalls ersetzen)?!
Versuchs doch einfach mal, solltest du aus irgendwelchen Gründen nicht weiterkommen, kannst du dich ja noch mal melden.


lg Hellie
 
Ja wie könnte das denn aussehen?Kann man bei Turbo Pascal eigentlich mit < und > arbeiten?

Ich hab ja eine Procedure die Zufällig Zahlen anzeigt dies geschieht solange bis zahl=10( und zahl:=zahl+1)
So danach will ich eine For-To-Do Schleife einbauen, praktisch dass er alle Zahlen anzeigt und darunter die größte und kleinste von denen.
Muß ich dazu neue Variablen festlegen und einbauen?
Code:
var a,b,i,zahl:integer;
type feld10typ=array[1..10] of integer;
var z:feld10typ
procedure erzeugen(z:feld10typ);
begin;
end;
procedure anzeigen(z:feld10typ);
begin;
end;

        begin
randomize;
ClRsCr;
repeat
for i:=1 to 10 do z[i]:=random(89)+10;
erzeugen(z);
anzeigen(z);
writeln(z[i]);
zahl:=zahl+1;
until zahl=10;
readln;
        end.

Fehlen natürlich ein paar Zeilen...Wo soll ich jetzt eine Schleife einbauen und wie sollte sie formuliert sein?
 
Ich versteh deinen Code nicht so recht... Wolltest du nicht 10 zahlen ziehen lassen? Warum machst du das in 2 Schleifen? Und warum extra Prozeduren? Imho brauchst du die nicht. Mein Tipp: alles, was du brauchst, kannst du in einer For-to-do-Schleife machen. Ich schreib mal nen Grobalgo:

Code:
von 1 bis 10 tue
   Zahl ziehen
   vergleichen mit bisher kleinerster gezogenen Zahl
      wenn kleiner, ersetzen
   vergleichen mit größter bisher gezogenen Zahl
      wenn größer, ersetzen
   gezogene Zahl ausgeben

So, ich hoffe, das hilft dir ein wenig, ich habs einfach mal von unserem Lehrer übernommen, weil ich finde, dadurch wird ersichtlich, was man tun muss und er betet den Code trotzdem nicht vor.

Was du noch bedenken solltest: Die kleinste Zahl darf natürlich nicht schon zu Beginn kleiner sein als die Zahl, die möglicherweise die kleinste Zahl ist. Andersrum natürlich die größte Zahl.

Falls dir irgendwo noch was nicht klar ist, du irgendwie nicht weiterkommst, melde dich einfach noch mal.

lg Hellie
 
Ja danke,
dein Code is eigentlich anders als ich mir das gedacht hab aber kann ich so auch machen.
Da habt ihr ja nen guten Lehrer erwischt, unserer sagt nie was dazu. Der kommt kurz rein sagt so und so... und dann haut der ab.
Das gute is der will den Code den ich jetzt schreiben will bewerten, also kann ich ne gute Note verdienen, aber dazu muß ichs erstma hinkrigen.

Wie kann ich denn jede einzelne Zahl vergleichen?Ich hab ja bloß zahl:=zahl+1.
Wie kann ich z.B. zahl 5 mit Zahl 6 vergleichen?Und wie drücke ich das vergleichen aus?
?If zahl > zahl+1 then ... ?
Wie kann ich die bisherige größte Zahl zwischenspeichrn?

Ich hoffe du verstehst mich, ich versteh mich langsam nich mehr
 
Also...

Das Array speichert ja alle Werte dieser 10 Zahlen geordnet. Da speicherst du die aktuelle jeweils rein, der Index wird dir von der Zählvariablen deiner Schleife vorgegeben, der geht ja automatisch mit (du musst also mit zahl:= zahl+1 nicht mitzählen!).
Du kannst eine Varible deklarieren für die kleinste zahl, setzt die auf einen hohen Wert (also auf 100, damit die nicht von vornherein kleiner ist) und vergleichst dann mit der und ersetzt sie gegebenenfalls. Willst du dann noch wissen, die wievielte Zahl das ist, deklarierst du dir noch eine Variable und speicherst darin die Zählvariable der Schleife. Analog dazu mit der größten Zahl. Das müsste theoretisch mit < und > gehen (Object pascal, also Delphi macht das auf jeden Fall).

Ich weiß nicht wie wichtig es ist, wann das fertig sein muss und wie gut die mit meinen Texten klar kommst. Ich möchte dir aber nicht den Quelltext vorbeten, das bringt keinem was, nachher musst du den Code erklären oder noch was dran ändern und kannst es nicht. Aber ich würde dir gerne helfen. Wenn du magst, die ICQ-Nummer siehst du ja, AOL hab ich mal noch hinzugefügt, meld dich einfach so, wenn du magst, damit geht es sehr viel schneller.

lg Hellie
 
Ja das mit dem vorbeten is schon klar...
Ich hab da trotzdem noch mal nen paar Fragen, die eigentlich mehr oder weniger zu speziell meinem Programm passen.

Also was ist denn jetzt eigentlich meine Zahl die auf dem Bildschirm erscheint?
Das is ja grob gesagt z[ i ], aber wie soll ich denn diese Funktion mit anderem Zahlenwert vergleichen?
Soll ich für die If then Funktion der größten bzw. kleinsten Zahl nen extra begin und end einfügen.
Ich weiß nicht wie ich die vergleichen soll?
........
Code:
begin
min:=100
Repeat
If ?<min then writeln(?);
until ?
end;

..........
Da wo die Fragezeichen sind weiß ich nicht weiter.
 
SPringtoifel hat gesagt.:
Also was ist denn jetzt eigentlich meine Zahl die auf dem Bildschirm erscheint?
Das is ja grob gesagt z[ i ], aber wie soll ich denn diese Funktion mit anderem Zahlenwert vergleichen?
Soll ich für die If then Funktion der größten bzw. kleinsten Zahl nen extra begin und end einfügen.
Ich weiß nicht wie ich die vergleichen soll?
........
begin
min:=100
Repeat
If ?<min then writeln(?);
until ?
end;
..........

Zuerst würd ich mal sagen die machst das in einer for-to-do-Schleife. Mir kommt es ein wenig so vor als hätte man euch nicht direkt erklärt, was begin und end bewirken. Sie bezeichnen den Anfang und das Ende eines sog. Anweisungsblockes. Immer wenn man mehr als eine Anweisung ausführen will (in einer Schleife oder einer Selektion) kann man das damit ausdrücken.
Dass du nicht weißt, wie lang deine Schleife laufen soll, ist ganz klar, weil das ja in der Zählschleife mit abzuhandeln ist. Nimm das ruhig raus.
Und deine Bezeichnung der Funktion (ich habs mal rot gemacht) ist nicht richtig! Achtung, ein Array hat nichts mit Funktionen zu tun! Ein Array ist eine geordnete Sammlung eines bestimmten Types, und mit array[ index ] greifst du auf das indexste (okay, schlechtes Deutsch) zu. In einer Zählschleife kannst da z.B. i nehmen, also zB array[ i ]. In dieses Array kannst du gleich die Zahl hineinschreiben (myarray[ i ]:= random(...)). Später kannst du das dann vergleichen (if myarray[ i ]>maxzahl ...) und danach speichern: maxzahl:= myarray[ i ]. Und ganz zum Schluss, also NACH der Schleife kommt dann der Auftritt von writeln, da kannst du dann die kleinste und die größte Zahl aufschreiben.

Schau dir das noch mal an und den Grobalgo. Und zu wann brauchst du es denn? Ich werd nicht mehr lange machen heute, hoffe, es reicht, wenn du das bis Dienstag hast. Ansonsten natürlich: fragen, fragen, fragen ;)
 
Zeigen muß ich es am Mittwoch am Ende der 2.Stunde, d.h. bis um 8:00 Uhr muß ich es dann fertig haben, zum Glück hab ich ja I-Net im Inforaum.
Du haßt ja richtig Ahnung von TP, wielange beschäftigsten dich schon damit?
Aber ich glaub ich habs jetzt verstanden
Probiere jetzt schnell noch was aus, was jetzt so in meine Kopf rumschwirrt und dann mach ich schluß.
 
Bis Mittwoch sollte es zu schaffen sein, und falls du es heute Abend nicht schaffen solltest, schauen wir morgen noch mal drauf, okay?
Und Ahnung, ne, nicht wirklich, klar, Informatikkurs, aber in meiner Freizeit mach ich es eher selten inzwischen. Das Wissen sammelt sich nur in den 5 Jahren, die ich jetzt Info habe, so langsam an.

Melde dich mal, wenn du's hast oder nicht weiterkommst, okay?

lg Hellie
 

Neue Beiträge

Zurück