[Delphi] Erste Zahl von einer Zahlenfolge auslesen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Sponge Bob, 3. Dezember 2007 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 3. Dezember 2007
    Erste Zahl von einer Zahlenfolge auslesen

    Tach...

    Ich will mir einen kleinen rechner für die Arbeit programmieren. Ich muss eine bestimmte Zahl aus einer 3-stelligen Zahl ermitteln. Das Prinzip ist eigentlich simpel.

    Zur erklärung:

    Es handelt sich immer um eine 3-stellige Zahl, die entweder mit 0, 8 oder 9 beginnt.

    Wenn die Zahl mit 0 beginnt, dann sollen die beiden anderen Zahlen mit 3 multipliziert werden und 1 addiert werden.

    Wenn die Zahl mit 8 beginnt, dann sollen die beiden anderen Zahlen mit 3 multipliziert werden und 2 addiert werden.

    Wenn die Zahl mit 9 beginnt, dann sollen die beiden anderen Zahlen mit 3 multipliziert werden und 3 addiert werden.


    Als Beispiel:

    "055" die Zahl 55x3 +1 = 166

    "855" die Zahl 55x3 +2 = 167

    "955 " die Zahl 55x3 +3 = 168

    Ich will das ganze in ein Edit-Fenster reinschreiben und die Zahl errechnet bekommen. Nur weiß ich nicht, wie ich die erste Zahl "auslesen" kann.

    Bitte um eure Unterstützung.

    Bewertungen vergebe ich großzügig für Hilfe.

    Grüße Sponge Bob
     
  2. 3. Dezember 2007
    AW: Erste Zahl von einer Zahlenfolge auslesen

    Alle kannst auslesen per "for to do":

    sollte eigendlich gehen
     
  3. 3. Dezember 2007
    AW: Erste Zahl von einer Zahlenfolge auslesen

    ich geb nur mal nen denkanstoss:

    Code:
    if pos('0' ,edit1.text) > 0 then begin
    
    //Berechnung der anderen beiden zahlen ...
    
    end;
    
     
  4. 3. Dezember 2007
    AW: Erste Zahl von einer Zahlenfolge auslesen

    Fanatics Idee ist im Grunde genommen richtig, jedoch weiß ich nicht ob man bei einer Integer-Variablen auch die Stellen auslesen kann.
    auf jeden Fall sollte es folgendermaßen gehen (wenn auch etwas umständlich, probier Fanatics Idee halt mal aus!):
    Code:
    VAR
    Puffer : String;
    Rest : Integer;
    
    BEGIN
    Puffer := Edit1.text;
    Rest := StrToInt(Puffer[2])*10+StrToInt(Puffer[3]);
    
    If Puffer[1]=0 then
    Panel1.caption := Rest *3 +1;
    else
    If Puffer[1]=8 then
    Panel1.caption := Rest *3 +2;
    else
    Panel1.caption := Rest *3 +3;
    
    Bin mir mit dem Syntax teilweise nicht ganz sicher, hab grad Delphi nicht installiert.
    Können also Fehler drin sein

    greetz
     
  5. 3. Dezember 2007
    AW: Erste Zahl von einer Zahlenfolge auslesen

    generell richtig, aber man kann auch mit pos die erste stelle auslesen, und dann die anderenbeiden zahlen mit strtoint einzeln ins integer format bringen und berechnen .... is evtl. umstaendlicher, aber fuer definitiv auch zum zeil.
     
  6. 5. Dezember 2007
    AW: Erste Zahl von einer Zahlenfolge auslesen

    es wäre auch möglich, dir die einzelnen stellen mit MOD und DIV zu holen.. nur als ergänzung zu den andern lösungen..

    Beispiel:

    Code:
    VAR stellen:ARRAY[1..3] OF Integer;
     zahl,i:Integer;
    
    Begin
     zahl:=StrtoInt(edit1.text);
     For i:= 3 Downto 1 DO
     begin
     stellen[i]:=zahl MOD 10;
     zahl:= zahl DIV 10;
     end;
     case stellen[1] of
     0: //
     8: //
     9: //
     end;
    end.
     
  7. 6. Dezember 2007
    AW: Erste Zahl von einer Zahlenfolge auslesen

    dadurch, dass du jedesmal eine dreistellige zahl gegeben hast, kannst du ganz einfache mathematische regeln benutzen:
    gehen wir von 3 if-zuständen aus, der erste:
    Code:
    int function zahlausgeben(int zahl){
     //kette fängt mit 0 an
     wenn(zahl/100<1)
     return (zahl*3)+1;
     //kette fängt mit 9 an
     wenn(zahl/900>=1)
     return ((zahl-900)*3)+3;
     //weder 0, noch 9 an erster stelle -> 8
     sonst:
     return ((zahl-800)*3)+2;
    }
    
    Diese Funktion geht aber wirklich nur von den spezialfällen aus, dass die Zahlen immer dreistellig sind, und nur mit 0, 9 und 8 beginnen.

    Ich hoffe, dir ist damit geholfen, der Code wird so nicht funktionieren, den musst du noch für Delphi anpassen

    mfg Idefix!
     
  8. 6. Dezember 2007
    AW: Erste Zahl von einer Zahlenfolge auslesen

    Ist jetzt auf die schnelle geschrieben.. kann sein, dass da noch Fehler drin sind.
    Code:
    var
     iIn : Integer;
     S : String;
    begin
     S := Edit1.Text;
     if Length(S) <> 3 then
     begin
     ShowMessage('Die Eingabe muss genau 3 Zeichen lang sein');
     exit; 
     end;
     try
     iIn := StrToInt(S);
     except 
     ShowMessage(S + ' ist keine Zahl');
     exit;
     end;
    
     if not(S[1] in ['0', '8', '9'])
     begin
     ShowMessage('Die Eingabe muss mit einer 0, 8 oder 9 beginnen');
     exit; 
     end;
    
     if S[1] = '0' then
     result := StrToInt(copy(S, 2, 2)) *3 +1 else
     if S[1] = '8' then
     result := StrToInt(copy(S, 2, 2)) *3 +2 else
     result := StrToInt(copy(S, 2, 2)) *3 +3;
    end;
    
     
  9. 6. Dezember 2007
    AW: Erste Zahl von einer Zahlenfolge auslesen

    wenn ich mal nen problem hab sollten mir auch so viele lösungen un den kopf geschmissen werden

    naja sollte erstmal was richtiges dabei sein, wenne noch fragen hast kannste ja hier aufmachen, aber sonst kommen hie rnoch 50000000 weitere Lösungen hinzu!

    Knusperkeks
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.