AGB  ·  Datenschutz  ·  Impressum  







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

Messwertsimulation

Ein Thema von n00b_on_knees · begonnen am 30. Mai 2003 · letzter Beitrag vom 31. Mai 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von n00b_on_knees
n00b_on_knees

Registriert seit: 5. Apr 2003
128 Beiträge
 
#1

Messwertsimulation

  Alt 30. Mai 2003, 20:51
Hi Leute!
Ich bräuchte wiedermal eure Hilfe. Ich soll mit RandomZahlen Messerwerte berechnen und das ganze ausgeben. Hört sich einfach an, ist es aber für mich leider irgendwie nicht. Bei mir gibt er ständig den Fehler das nicht genügende Parameter vorhanden sind. Ich schätze mal es ist ein einfacher Fehler, aber ich sitze schon seit einiger Zeit hier und komme einfach nicht darauf.
Außerdem wäre es nett von euch, wenn ihr eine bessere Lösung für die Berechnung des Mittelwertes Parat hättet, denn ich bin mir nicht sicher ob das tatsächlich so "richtig" funktioniert.
Hier anbei der Quellcode, die Kommentare sollten es einfacher verständlich machen. Danke für eure antworten im Vorraus.

Delphi-Quellcode:
unit mittelwertnew;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    mmAus: TMemo;
    btStart: TButton;
    procedure btStartClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//************************************************//
// //
// Name: Messwert //
// Datum: 03-05-30 //
// Zweck: Messwerte zuweisen. //
// //
//************************************************//
function Messwerte (s: string; s2: integer; s3: integer): string;
//Variablendeklaration
var
  s4: string;
begin
      //Den Strings Zufallszahlen zuweisen
      s2:= random(10)+8;
      s3:= random(99);
      //Wenn die Zahl von s2 kleiner als 10 ist,
      if s2 < 10 then
        //setze 0X.XX auf s4
        s4:= '0' + IntToStr(s2);
      //Wenn sie Zahl von s3 kleiner 10 ist,
      if s3 < 10 then
        //Dann setze das Resultat auf XX.0X
        result:= s4 + '.0' + IntToStr(s3)
      //sonst
      else
        //auf XX.XX
        result:= s4 + '.' + IntToStr(s3);
end;


//************************************************//
// //
// Name: Mittelwert //
// Datum: 03-05-30 //
// Zweck: Mittelwert von 10 Zahlen bilden. //
// //
//************************************************//
function Mittelwert(Mittel: string): string;
//Variablendeklaration
var
  s2, s3, s4, s5, i, Anz, Mittel2: integer;
begin
  //Zuweisungen auf 0
  s4:= 0;
  s5:= 0;
  Anz:= 0;
  //Von 1 bis 10, mache
  for i:= 1 to 10 do
    begin
      //Addiert die Ergebnisse der Randomzahlen
      s4:= s4 + s2;
      s5:= s5 + s3;
      //Während die Nachkommastellen bei 99 sind,
      while s5 > 99 do
        begin
          //ziehe bei s5, 99 ab, und
          s5:= s5-99;
          //erhöhe die Vorkommastellen um 1.
          s4:= s4+1;
        end;
      //Zähle zur Anzahl 1 hinzu
      Anz:= Anz+1;
    end;
  //Dividiert die Nachkommastellen durch die Anzahl
  Mittel2:= s5 div Anz;
  //Setzt das Resultat auf den Mittelwert der beiden Zahlen
  result:= IntToStr(s4 div Anz) + ',' + IntToStr(Mittel2);
end;


procedure TForm1.btStartClick(Sender: TObject);
//Variablendeklaration
var
 Mess, Mittel: string;
begin
 //Gibt den Messwert und den Mittelwert aus.
 mmAus.Lines.Add('VAC ' + Messwerte(Mess) + ' V'); [color=#e50000]//hier erscheint der Fehler[/color]
 mmAus.Lines.Add('Der Mittelwert ist ' + Mittelwert(Mittel) + '.');
end;


end.
Against TCPA & And I think we should live our dreams
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#2
  Alt 30. Mai 2003, 21:00
Du hast eine Dunktion deklariert der 3 Werte übergeben werden müssen:

function Messwerte (s: string; s2: integer; s3: integer): string; aber du übergibst nur den String, und lässt die beiden Integerwerte weg.

Mittelwert(Mittel) Du übergibst ja nur einen String (Mittel) du brauchst also noch die 2 anderen Werte.
  Mit Zitat antworten Zitat
Benutzerbild von n00b_on_knees
n00b_on_knees

Registriert seit: 5. Apr 2003
128 Beiträge
 
#3
  Alt 30. Mai 2003, 21:03
ich glaube du hast da was verwechselt, oder war ich das?

Function Messwert und Funktion Mittelwert sind 2 verschiedene.
Against TCPA & And I think we should live our dreams
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#4
  Alt 30. Mai 2003, 21:06
Hab mich in der Zeile vertan. Der Fehler bleibt der gleiche, is aber eine Zeile drüber.

Delphi-Quellcode:
begin
//Gibt den Messwert und den Mittelwert aus.
mmAus.Lines.Add('VAC ' + Messwerte(Mess) + ' V'); [color=#e50000]//hier erscheint der
  Mit Zitat antworten Zitat
Benutzerbild von n00b_on_knees
n00b_on_knees

Registriert seit: 5. Apr 2003
128 Beiträge
 
#5
  Alt 30. Mai 2003, 21:21
jo danke, das hab ich jetzt mal ausgebessert, doch es kommt irgendwie auch nicht das richtige raus, vielleicht weiß wer noch ne lösung... hier die falsche ausgabe:


Delphi-Quellcode:
VAC 08.03 V
VAC .20 V
VAC .66 V
VAC .16 V
VAC .42 V
VAC 08.47 V
VAC 08.83 V
VAC 08.29 V
VAC .36 V
VAC .32 V
Der Mittelwert ist 403,3.
Against TCPA & And I think we should live our dreams
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#6
  Alt 30. Mai 2003, 21:22
Ich hab mich jetzt nicht damit beschäftigt, was falsch is. Was is denn falsch?
  Mit Zitat antworten Zitat
Benutzerbild von n00b_on_knees
n00b_on_knees

Registriert seit: 5. Apr 2003
128 Beiträge
 
#7
  Alt 30. Mai 2003, 21:26
naja, wenn ich das wissen würde, hätte ich nicht gepostet
Against TCPA & And I think we should live our dreams
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#8
  Alt 30. Mai 2003, 21:28
Ich meine ja, was am Ergnis falsch is.
  Mit Zitat antworten Zitat
Benutzerbild von n00b_on_knees
n00b_on_knees

Registriert seit: 5. Apr 2003
128 Beiträge
 
#9
  Alt 30. Mai 2003, 21:32
achso, naja es wäre bei den meisten zahlen nicht schlecht wenn vorher ne zahl stehen würde anstatt nichts vor dem komma, und der mittelwert ist auch unrealistisch... auch wenn ich neue ergebnisse aufrufen will, kommen zahlen bis zu 14200 raus, und das kann nicht wirlich der mittelwert sein wenn da nur bei 3 zahlen grade mal 8 steht
Against TCPA & And I think we should live our dreams
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#10
  Alt 31. Mai 2003, 01:43
Hallo!

Du hast s2 und s3 in Mittelwert nicht initialisiert! Oder sollen da die Werte aus Mess drinstehen? Dann bitte als Parameter übergeben!
Wäre von der wenig vorhandenen Programmlogik her wohl sinnvoller!

Nebenbei: Result ist eine ganz normale Variable! Anders als bei der (Pascal-)Zuweisung an den Funktionsnamen kann man das auch wieder zurücklesen nach der Art
Result := Result + IntToStr(s2); Die Variable s4 in Messwerte ist also nicht nötig.
Übrigens: if s2 < 10: da fehlt der else-Teil 'else s4:=IntToStr(s2)', d.h. bei Werten größer 10 kommt '.xx'!

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
  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 08:00 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