Helft mir auf die Sprünge!

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Helft mir auf die Sprünge!

    Hallo Leute!
    Ich bin neu hier und zugegeben, nicht gerade die Leuchte was proggn angeht, leider... :cry:

    Ich grabe mich im Moment mühsam durch eine Aufgabe. Eigentlich ist es so gar nicht schwer, aber ich kann es einfach nicht umsetzten. Kurz um: Bitte gebt mir einen Anhaltspunkt!

    Also, zum Programm: Es soll ein IBAN Rechner werden. Man wählt per Formular ein Land aus ( Ich hab mich für Deutschland u. Finnland entschieden), dann gibt man die Kontonummer und die Bankleitzahl ein und daraus wird dann der IBAN berechnet.

    Der deutsche IBAN hat dabei immer 22 Ziffern, also müsste ich doch in einer if-Schleife es so legen, das es immer 22 Ziffern IBAN sind, wenn Deutschland oben in der Auswahlbox steht, und sind es nicht 22 Ziffern dann wird mit Nullen aufgefüllt.

    Dann kommt ja noch die Prüfsumme dazu, die ja erst vorne und dann hinten dran gehangen wird und deren Wert nachher mit modulo raus gerechnet wird.

    Wie bekomme ich die Kontonr. und die Bankleitzahl zusammen? Kann ich dafür die Werte umwandeln und dann mit den && zusammenfügen?
    wie kann ich die Prüfsumme die ja vorne für Deutschland die Ziffern DE trägt, einfügen und dann jeweils vom Anfang an das Ende der Zahlen Kette Kontonr/Bakleitzahl schieben :?:

    Könntet ihr mir eine Seite zu dem Thema zeigen, an der ich mich vielleicht ein bisschen orientieren kann?

    Ich bin dankbar für jede Hilfe! Danke schonmal im vorraus!
    I cross the line and lose myself
  • hi,

    das ist doch eine nette, knifflige aufgabe
    vor allem da 22 Zeichen die Grenzen von INT und LONG sprengen ;)

    ich nehme an ihr dürft noch keine abstrakte Datentypen benutzen, oder?
    Mit einem BigInteger wäre das ein Einzeier

    Quellcode

    1. BigInteger checksum = new BigInteger("200800000970375700131400").mod(new BigInteger("29"));


    so musst du dir überlegen wie du das mathematisch angehen kannst
    Ich hoffe diese PHP Lösung hilft dir dabei..
    http://forum.fachinformatiker.de/skript-webserverprogrammierung/65292-php-modulo-zu-grosse-zahl.html

    machen wir den modulo algorithmus mit der 9 stelligen zahl 123456789
    next bedeutet immer "nächste Stelle dranhänhen" und wird bei jedem Schritt gemacht

    1 = 1%97 : 1=1 OK; next(2)
    12 = 12%97 : 12=12 OK; next(3)
    26 = 123%97 : 26!=123 ersetze 123 durch mod & next(4)
    70 = 264%97 : 70!=264 ersetze 264 durch mod & next(5)
    26 = 705%97 : 26!=705 ersetze 705 durch mod & next(6)
    72 = 266%97 : 72!=266 ersetze 266 durch mod & next(7)
    48 = 727%97 : ...
    3 = 488%97 ...
    39 = 39%97 ...
    Modulo: 39


    Zu den Basic fragen: arbeite einfach mit Strings
    diese konkatinierst du mit einem einfach + (Plus)

    Quellcode

    1. string gesamt = kuerzel+crc+"123123123"+konto;


    Hier ein paar weitere Beispiele

    Quellcode

    1. #include <string>
    2. using namespace std;
    3. int main()
    4. {
    5. string s("123"); // Konstruktor fuer C-String
    6. len = s.length(); // liefert 3, die Laenge des Strings
    7. s.insert(2, "xy"); // s ist nun "12xy3"
    8. s.erase(2,2); // s ist nun "123"
    9. pos = s.find("23"); // liefert die Position 1
    10. }
    Alles anzeigen



    gruß, d0n
  • Danke für die schnelle Antwort!

    Ja also ich hab mal versucht den PHP code umzuschreiben, aber ich weiß immer noch nicht so ganz wie ich anfangen soll, muss ich ehrlich zugeben :oops:

    Also zuerst muss ich also die Kontonummer sowie die Bankleitzahl, weil sie zusammen eben mit der Prüfziffer zu lang für int oder long wären als BigInteger deklarieren?

    Also:

    Quellcode

    1. BigInteger checksum= new BigInteger ("Kontonummer").mod(new BigInteger("29"));


    Und dann einen String mit Kontonummer, Bankleitzahl und Prüfziffer bilden, in dem ich sie mit dem + aneinander füge,

    Also:

    Quellcode

    1. string iban= Prüfziffer+Bankleitzahl+Kontonummer;


    Dann muss ich mit pos=s.find("23") Die position der Prüfziffer nach hinten an den string versetzen.

    Dann kommen die Berechnungen,
    Ich hab den Code so umgeschrieben (schon mit den Edit Feldern):
    Aber noch ohne Deklarierung

    Quellcode

    1. Ktnr->Edit1;
    2. t=" ";
    3. teiler= 97;
    4. i=0;
    5. erg;
    6. str;
    7. while (i<str(Ktnr))
    8. {
    9. do
    10. {
    11. t.=Ktnr; // Hier kann ich ja auch den Punkt verwenden?!
    12. i++;
    13. erg=(int)t % teiler;
    14. }
    15. while (erg==(int)t &&<str(Ktnr));
    16. t=erg;
    17. }
    18. Edit3=erg;
    Alles anzeigen


    Und dann muss ich doch nur noch die einzelnen Bedingungen festlegen, also 1=1%97=1 OK;
    Das könnte ich dann in der while Schleife weiter führen?!.

    Liege ich jetzt mit dem Gedankengang komplett falsch, oder hab ich das richtig verstanden?

    Noch mal ein Danke für die Hilfe ;)
    LG justin
    I cross the line and lose myself