Ankündigung

Einklappen
Keine Ankündigung bisher.

User helfen User - Programmieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Wenn deine Lösung das gewünschte Ergebnis bringt, dann ist doch alles in Ordnung. War jetzt auch nur mein erster Gedanke dazu, so hätte ich es in php oder c# umgesetzt. Vielleicht hat noch jemand eine bessere Idee

    Kommentar


      Zitat von IcingD34th
      dein cpin kann aber auch kleiner 1000 sein, wenn pins mit der 0 beginnen

      Edith: Es können bei der Eingabe ja beliebige Zeichen eingegeben werden und eine beliebige Länge. Als erstes müsste man ja Buchstaben,Sonderzeichen, etc... abfangen und eine fehlerhafte Eingabe zurückliefern.
      Das mach ich hiermit:

      if (!(cin >> cpin )) {
      cerr

      Kommentar


        Zitat von keu1e
        edit: mit meiner Lösung ist jetzt natürlich ein Code von 0001-0999 nicht Verfügbar, wobei ich die nullen am Anfang auch echt unsinnig finde, die werden vom Compiler doch eh immer gestrichen, oder?
        Du machst es dir so kompliziert ... Überprüf cin einfach mit strlen und wegen den Zeichen würde ich isdigit verwenden.

        In VB.Net wäre es einfach:

        Dim sZahl As String = InputBox("bla")
        If sZahl.Length = 4 And IsNumeric(sZahl) = True Then MsgBox("Ist eine vierstellige Zahl")
        Unter C++ muss du afaik die einzelnen Zeichen halt mit isdigit überprüfen oder eine kleine Funktion IsNumeric oder so schreiben.

        Kommentar


          aber strlen ist doch string length, wenn ich mit strlen(cpin) überprüfe klappt das doch garnicht :o weil cpin=int und nicht str

          Kommentar


            Was spricht denn dagegen, sowohl cpin und pin als string zu deklarieren? Wofür brauchst du da int?

            int macht da keinen Sinn, da aus einem 0815 direkt eine 815 wird, da kannst du nichts mehr überprüfen, ob der Nutzer vorher "0815" eingegeben hat.

            Kommentar


              Weil ein String auch Zeichen aufnimmt, und ein int nicht. bei der cin eingabe überprüfe ich ja direkt ob die Eingabe mit einem int überhaupt übereinstimmt, damit keine Zeichen eingegeben werden können.

              edit: bin noch relativ neu dabei, vielleicht denk ich auch einfach falsch

              Kommentar


                Sorry Keule hatte mich auf die erste if-Abfrage konzentriert.
                Allerdings hab ich von C++ gar keine Ahnung :P Da ich aber gerade nichts zu tun hab, hab ich mich ein bisschen eingelesen und würde etwas anders herangehen. Und zwar würde ich mit Strings arbeiten statts mit Integern, da man mit C++ anscheinend Strings ziemlich einfach vergleichen kann.

                [spoiler]
                #include "stdafx.h"
                #include "conio.h"
                #include "iostream"
                #include "myfunction.h"
                #include

                using namespace std;

                void pinueberpruefung() {

                std:string pin = 1234;
                std:string cpin;
                int versuche = 3;
                int vpin = 0;


                do {

                cout > cpin;

                if(cpin.size()==4){
                if(cpin==pin){
                system("CLS");
                cout

                Kommentar


                  Deswegen mit isdigit die Eingabe danach überprüfen.

                  Dein Einwand ist nicht verkehrt, aber es ändert nichts an der Problematik, dass du mit dieser Art und Weise, niemals einen 0815 PIN erkennst. Unmöglich, da direkt aus der 0815 Eingabe ein 815 entsteht und dieser cpin zugewiesen wird.

                  Du kannst also nachher nicht mehr prüfen, ob da nur 815 oder 0000815 eingegeben wurde.

                  Deine aktuelle Überprüfung, ob es nur Zahlen sind, ist ja eigentlich nichts anderes, als eine isdigit Überprüfung der Zeichen. Die kannst du also mit einem String genauso machen ;)

                  cin kannst du afaik nicht eingrenzen, er wird also immer buchstaben, zahlen und zeichen eingeben können. Die Frage ist halt, wie willst du damit umgehen.

                  Kommentar


                    Man könnte die Pin auch in ein Array schreiben und die Eingabe ebenfalls. Dann ließe sich die Arraylänge überprüfen und man könnte die einzelnen Zellen gegenprüfen.

                    Kommentar


                      puh.. ich versuch mich mal durch zu kämpfen, danke erstmal für die Hilfe.

                      string pin = 1234; -> Meckert mein Visual Studio schon an..

                      " 6 IntelliSense: Für eine Konvertierung von ""int"" in""std::basic_string"" ist kein passender Konstruktor vorhanden.
                      "

                      Kommentar


                        Zitat von IcingD34th
                        Man könnte die Pin auch in ein Array schreiben und die Eingabe ebenfalls. Dann ließe sich die Arraylänge überprüfen und man könnte die einzelnen Zellen gegenprüfen.
                        String = Array aus Chars

                        Mit cin hast du keine andere Möglichkeit als einen String zu nehmen. Lass den Nutzer die PIN eingeben, danach prüfst du:
                        1. Ist der String 4 Zeichen lang
                        2. Ist jedes der vier Zeichen eine Zahl

                        Wenn nicht, dann lass ihn erneut eingeben. Wenn doch, dann überprüfe die PIN.

                        Kommentar


                          Ich meinte wenn er es unbedingt als Int machen möchte, kann er das ganze in ein Int Array schreiben ;)

                          Habe mich auf die schnelle wohl etwas undeutlich ausgedrückt :(

                          Kommentar


                            Zitat von IcingD34th
                            Ich meinte wenn er es unbedingt als Int machen möchte, kann er das ganze in ein Int Array schreiben ;)
                            Hm, könnte er, falls das in C++ funktioniert. Ergibt aber alles net mehr Sinn als ein String und ist deutlich aufwendiger ;D

                            Auch dann musst du ja danach überprüfen ob die Zeichen Zahlen sind. Ob du das nun anhand der Zuweisung von cin >> cpin machst oder mit isdigit ist ja egal.

                            Zitat von keu1e
                            string pin = 1234; -> Meckert mein Visual Studio schon an..
                            Ein String ist ein Text und keine Zahl ;) -> string pin = "1234";

                            Kommentar


                              Ah ok, das funktioniert nun. hatte auch das #include "string" vergessen

                              ich schau dann mal weiter, muss jetzt erstmal noch was anderes fix erledigen :) danke schomal soweit

                              Kommentar


                                Da ich anscheinend C++ momentan gar net installiert habe, hier mal ein Beispiel für dich in C#. Der Aufbau dürfte ja exakt der gleiche sein. Sollte man natürlich eleganter lösen, aber funktionieren tut es perfekt.

                                http://pastebin.com/sHYqg8rT

                                Edit: Hier etwas eleganter: http://pastebin.com/WLswMMbn

                                Switch Case wäre da natürlich angebracht gewesen ;D

                                Kommentar

                                Lädt...
                                X