Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi widerstandsschaltung (https://www.delphipraxis.net/35145-widerstandsschaltung.html)

fiasko 4. Dez 2004 12:09

Re: widerstandsschaltung
 
Hallo,

den geringsten Fehler dürftest du bekommen wenn du möglichst ganz ganz viele gleiche Widerstände in Reihe oder Parallel schaltest (unter der Vorraussetzung das die Verteilungsfunktion der Widerstandswerte symetrisch verteilt ist).

ibp 4. Dez 2004 14:11

Re: widerstandsschaltung
 
welche der antworten hat dir denn weitergeholfen?

mic 5. Dez 2004 16:49

Re: widerstandsschaltung
 
Zitat:

Zitat von ibp
oops vergessen...herzlich willkommen :dp:

zum thema: es sollte reichen ein array und zwei schleifen, da du ja nur zwei widerstände brauchst.
schematisch:
Code:
für die widersände:
r=array (1..n)
rpar,rser=array


für die auswahl

for i=1 to n-1 do
  for j=i to n do
    rser[n]=r[i]+r[j]
    ...
das sollte helfen!

hab noch folgendes problem; wie kann ich widerstände aus einem lagerbestand (eingetragen in ein memofeld) m diesen schleifen verbinden.. fragen über fragen ... :?:

ibp 5. Dez 2004 18:18

Re: widerstandsschaltung
 
so..

Zitat:

Zitat von ibp
Code:
für die widersände:
r=array (1..n,1..n) < im zweiten feld des arrays stehen die lagerbestände
rpar,rser=array


für die auswahl

for i=1 to n-1 do
  for j=i to n do
    rser[n]=r[i]+r[j]
    ...
das sollte helfen!


mic 7. Dez 2004 17:53

Re: widerstandsschaltung
 
hab das jetzt mal so gelöst, nur stimmt die rechnung bei mir nicht, die fehler(in %) sind zu groß.. weiß wer wo der fehler liegt?



Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
   var R : array[1..6] of integer;
    Rp : double;
    Rs : double;
    Rx : double;
    E : double;
    Ep : double;
    Es : double;
    m,n,i : integer;

begin
  Rx := StrToInt(Edit2.text);
  E := 10000000.0;

   if pos(floattostr(Rx),ListBox1.Items.text)<> 0 then
      begin
        ShowMessage('Widerstand vorhanden!');
         Edit3.text := '0';
         Edit4.text := 'Vorhanden';
      end
  else begin
      for n:=0 to ListBox1.items.count-1 do
       begin
         for m := 0 to ListBox1.items.count-1 do
           begin
             Rp := (R[n] * R[m]) / (R[n] + R[m]);
             Rs := R[n] + R[m];
             Ep := (Rx - Rp) / Rx;
             Es := (Rx - Rs) / Rx;

             if Ep < E then
               begin
                 E := Ep;

                 Edit3.text := FloatToStr(100*(abs(Ep)));
                 Edit4.text := 'P';
               end;
             if Es > E then
               begin
                 E := Es;
                 Edit3.text := FloatToStr(100*(abs(Es)));
                 Edit4.text := 'S';
               end;
            end;
       end;
   end;

 end;

end.
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]

trifid 7. Dez 2004 19:03

Re: widerstandsschaltung
 
na, das sieht nach meinen code aus :-D
Zitat:

die fehler(in %) sind zu groß
vielleicht an deiner Fehler Formel

Fehler = ((Rneu * 100.0) / Rx) - 100.0) in %

Zitat:

var R : array[1..6] of integer;
und dann ein
Delphi-Quellcode:
ListBox1.items.count
entweder du verwendest ein dynamisches Array oder schreibst eine Klasse die die Widerstandslösungen verwaltet, dann bist du flexibel

ibp 7. Dez 2004 19:39

Re: widerstandsschaltung
 
...
- was steht in R und wo schreibst du das rein?
- nimmst du nun ein array oder die listbox?
- wo steht die entgültige auswahl der widerstände?


Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
   var R : array[1..6] of integer;
    Rp : double;
    Rs : double;
    Rx : double;
    E : double;
    Ep : double;
    Es : double;
    m,n,anz : integer;

begin
  Rx := StrToInt(Edit2.text);
  E := 10000000.0;

  if pos(Edit2.text,ListBox1.Items.text)<> 0 then
  begin
    ShowMessage('Widerstand vorhanden!');
    Edit3.text := '0';
    Edit4.text := 'Vorhanden';
  end
  else
  begin
    anz:=ListBox1.items.count-1;
    for n:=0 to anz do
    begin
      for m := 0 to anz do
      begin
        Rp := (R[n] * R[m]) / (R[n] + R[m]);
        Rs := R[n] + R[m];
        Ep := (Rp / Rx) - 1;
        Es := (Rs / Rx) - 1;

        if Ep < E then
        begin
          E := Ep;
          Edit3.text := FloatToStr(100*(abs(Ep)));
          Edit4.text := 'P';
        end;
        if Es > E then
        begin
          E := Es;
          Edit3.text := FloatToStr(100*(abs(Es)));
          Edit4.text := 'S';
        end;
      end; // for
    end; // for
  end; // if
end;

mic 7. Dez 2004 21:29

Re: widerstandsschaltung
 
[quote="ibp"]...


- nimmst du nun ein array oder die listbox?
ich werde listbox verwenden, damit ich anzeigen kann welche widerstände im lagerbestand sind

- wo steht die entgültige auswahl der widerstände?
? muss zugeben hab etwas überblick verloren....:roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz