AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

(evtl. rekursive) schleife

Ein Thema von eroe · begonnen am 21. Mai 2004 · letzter Beitrag vom 23. Mai 2004
Antwort Antwort
Seite 1 von 2  1 2      
eroe

Registriert seit: 15. Mai 2004
Ort: Brandenburg
31 Beiträge
 
#1

(evtl. rekursive) schleife

  Alt 21. Mai 2004, 16:25
Hallo Jungs,

Erstmal zur Schilderung meines Vorhabens : also, ich habe ein StringGrid und möchte die Summe der Zahlenwerte einer Reihe ausrechnen

Delphi-Quellcode:
          for j:=0 to StringGrid1.ColCount do
            summe:=summe+strtoint(StringGrid1.Cells[j,i]);
Soweit kein Problem, jedoch möchte ich dem Anwender jetzt die Möglichkeit geben die x größten Werte NICHT in die Berechnung einzubeziehen (Falls jemand von euch Segler ist, es soll ein RegattaProgramm werden das dem User die Möglichkeit bietet sogenannte Streicher anzugeben, d.h. das jeweils die schlechtesten x Wettfahrten gestrichen werden)
Am liebsten hätte ich das ganze dynamisch, sprich das der Anwender sich aussuchen kann wieviele Streicher es gibt, jedoch komm ich ab mehr als einem Streicher leider nicht mehr richtig klar

Könntet ihr mir eventuell ein paar Denkanstöße geben wie ich das - notfalls auch rekursiv, obwohl mir eine itterative Variante lieber wäre - realisieren kann ?

Es grüßt und hofft

eroe
"Der ganze Rummel um die Emanzipation hat nichts daran geändert, dass Frauen sich hübsch machen um Männern zu gefallen"
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#2

Re: (evtl. rekursive) schleife

  Alt 21. Mai 2004, 16:33
so könnte es gehen
Delphi-Quellcode:
var
  j, summe, anz, minwert: Integer
begin
  summe := 0;
  minwert := 1000000;
  for j := 0 to StringGrid1.ColCount do
    if anz > 0 then
    begin
      dec(anz);
      minwert := min(minwert, StrToInt(StringGrid1.Cells[j,i]);
    end
    else
    if minwert < strtoint(StringGrid1.Cells[j,i]) then
    begin
      summe := summe + minwert;
      minwert := strtoint(StringGrid1.Cells[j,i]);
    end
    else
      summe:=summe+strtoint(StringGrid1.Cells[j,i]);
end;
  Mit Zitat antworten Zitat
eroe

Registriert seit: 15. Mai 2004
Ort: Brandenburg
31 Beiträge
 
#3

Re: (evtl. rekursive) schleife

  Alt 21. Mai 2004, 16:42
Hmm .. Würde es dir was ausmachen deinen Code noch zu kommentieren ? Leider sehe ich das Prinzip nicht ganz, und ich würde von der Algorithmik her schon gerne verstehen was ich programmiere

Und was ist dies hier :

min(minwert, StrToInt(StringGrid1.Cells[j,i]); für eine Funktion ? Ist mir leider gänzlich unbekannt
"Der ganze Rummel um die Emanzipation hat nichts daran geändert, dass Frauen sich hübsch machen um Männern zu gefallen"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: (evtl. rekursive) schleife

  Alt 21. Mai 2004, 16:48
Zitat von eroe:
Und was ist dies hier :

min(minwert, StrToInt(StringGrid1.Cells[j,i]); für eine Funktion ? Ist mir leider gänzlich unbekannt
Delphi Hilfe schon gefunden?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
eroe

Registriert seit: 15. Mai 2004
Ort: Brandenburg
31 Beiträge
 
#5

Re: (evtl. rekursive) schleife

  Alt 21. Mai 2004, 16:55
Zitat von Luckie:
Zitat von eroe:
Und was ist dies hier :

min(minwert, StrToInt(StringGrid1.Cells[j,i]); für eine Funktion ? Ist mir leider gänzlich unbekannt
Delphi Hilfe schon gefunden?
Tut mir herzlichst leid, dass ich in einem Moment der geistigen Umnachtung nicht sofort an F1 gedacht hab, sondern wirklich die Dreistigkeit besaß, zu fragen!!
Ich hoffe Euer Hochwürden können mir verzeihen, es tut mir schrecklich leid!
"Der ganze Rummel um die Emanzipation hat nichts daran geändert, dass Frauen sich hübsch machen um Männern zu gefallen"
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#6

Re: (evtl. rekursive) schleife

  Alt 21. Mai 2004, 20:18
vergiß den code von oben, er funktioniert doch nicht.

dann mußt du wohl mit einem array arbeiten.
  Mit Zitat antworten Zitat
eroe

Registriert seit: 15. Mai 2004
Ort: Brandenburg
31 Beiträge
 
#7

Re: (evtl. rekursive) schleife

  Alt 22. Mai 2004, 15:46
Also, ich hab es jetz mittels 2 Arrays probiert, jedoch reagiert er, unabhängig davon wie oft er durchlaufen _soll_, generell so, als solle er nur das schlechteste streichen, sprich die Eingabe des Anwenders scheint ihn schlicht nicht zu interessieren

Da ich mit relativ vielen Zählergesteuerten Schleifen arbeite, habe ich den Text mal kommentiert ..

Delphi-Quellcode:
    
    begin
    if StringGrid1.Cells[0,i]='then //Sicherheitsabfrage
      exit
    else
      begin
      setlength(gesamt,wettfahrten); //Anlegen der Arrays
      setlength(hilfe,wettfahrten);
      for n:=2 to StringGrid1.ColCount-3 do
        gesamt[n-2]:=strtoint(StringGrid1.Cells[n,i]);
            //Füllen des Arrays gesamt NUR für den ersten Durchlauf
      for o:=0 to streicher do
            //Streicher = Anzahl x --> Die x schlechtesten Werte streichern
        begin
        groesstes:=gesamt[0];
        summe:=0;
        for j:=low(gesamt) to high(gesamt) do
          begin
          if gesamt[j]>groesstes then
            groesstes:=gesamt[j]; //Der größte Wert wird rausgsucht
          end;
        for k:=low(gesamt) to high(gesamt) do
          begin
          if gesamt[k]<> groesstes then
            hilfe[k]:=gesamt[k];
                //Alle Werte außer dem Größten werden in den Array 'hilfe' geschrieben
          end;
        for l:=low(hilfe) to high(hilfe) do
          summe:=summe+hilfe[l];
                //Die Summe der Zahlen im Array 'hilfe' wird berechnet
        for m:=low(gesamt) to high(gesamt) do
          gesamt[m]:=hilfe[m];
                //Der Array 'gesamt' bekommt die Werte des Arrays 'hilfe', um beim nächsten Durchlauf den schlechtesten Wert schon aussortiert zu haben
        end;
      StringGrid1.Cells[StringGrid1.ColCount-2,i]:=inttostr(summe);
      end;
    end;
ich hoffe ihr könnt mir helfen, oder mir zumindest den einen oder anderen Denkanstoß geben


Es grüßt und hofft,

eroe
"Der ganze Rummel um die Emanzipation hat nichts daran geändert, dass Frauen sich hübsch machen um Männern zu gefallen"
  Mit Zitat antworten Zitat
eroe

Registriert seit: 15. Mai 2004
Ort: Brandenburg
31 Beiträge
 
#8

Re: (evtl. rekursive) schleife

  Alt 23. Mai 2004, 11:09
Hmm .. hat denn niemand ne Idee ??
"Der ganze Rummel um die Emanzipation hat nichts daran geändert, dass Frauen sich hübsch machen um Männern zu gefallen"
  Mit Zitat antworten Zitat
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: (evtl. rekursive) schleife

  Alt 23. Mai 2004, 12:18
Ich weiß ja nicht wie groß dein Stringgrid wird aber so wie ich das sehe würde ich einfach mit Bubblesort ( siehe DP-Hilfe ) alle Werte sortieren und dann die unteren x abschneiden..
Thomas
  Mit Zitat antworten Zitat
eroe

Registriert seit: 15. Mai 2004
Ort: Brandenburg
31 Beiträge
 
#10

Re: (evtl. rekursive) schleife

  Alt 23. Mai 2004, 12:28
Zitat von atreju2oo0:
Ich weiß ja nicht wie groß dein Stringgrid wird aber so wie ich das sehe würde ich einfach mit Bubblesort ( siehe DP-Hilfe ) alle Werte sortieren und dann die unteren x abschneiden..
ähm .. LOL
Eigentlich is das ne sehr gute Idee, danke !
Man wie ich sowas hasse, tagelang rumzusitzen und die Fehler bei so nem Algorithmus zu suchen und dann zu erfahren, dass es viel einfacher geht
Wie gesagt, danke nochmal, ich werds mal probieren!
"Der ganze Rummel um die Emanzipation hat nichts daran geändert, dass Frauen sich hübsch machen um Männern zu gefallen"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz