String



  • int main()
    {
    int flag, i, C, B, mod; // Deklaration der Variablen
    char A[] = "Kreditkartennummer eingeben bitte"; // String Deklariert
    char X[] = "00000000000000000000"; // String Deklariert
    do // Do-schleife eingang
    {
    printf("Kreditkartennummer eingeben bite\n"); // Text Ausgabe
    flag = 0; // Schalter initialisiert
    gets(A); // Eingabe der Kartennummer
    if (!(strlen(A) >= MIN && strlen(A) <= MAX)) // Länge der Kartennummer einschränken in if Anweisung
    flag = 1; // if Anweisung false=umwandlung durch negation in true schalter=1
    else
    for (i = 0; i < strlen(A); i++) //
    if (!(A[i] >= 48 && A[i] <= 57)) //es wird geprüft ob an jeder stelle des strings der Wert zwischen 0 und 9 liegt
    flag = 1; //

    } while (flag); // wenn flag=1 durchlaufen folgende schritte unterhalb der while-schleife
    X[20 - strlen(A)] = '\0'; // 0 Terminierung
    strcat(X, A); // Anhängen des strings A an string X (verkettung)
    C = 0; // Variable Initialisiert
    for (i = 19; i >= 0; i--){
    mod = i % 2; // jede stelle der kartennummer durch 2 und mit den restwerten wird gearbeitet
    if (mod == 0){ // es wird verglichen ob mod gleich null ist
    B = (X[i] - 48) * 2; // alle geraden Stellen werden verdoppelt
    if (B > 9){ //Wenn Zahl größer 9 dann wird 9 abgezogen
    B = B - 9;
    }
    else{ B = B; }
    }
    else
    {
    B = X[i] - 48; // string werte minus 48
    }C = C + B;
    } //Prefix Abfrage über Ascii Tabelle
    if (A[0] == 53 && A[1] == 49 || A[0] == 53 && A[1] == 50 || A[0] == 53 && A[1] == 51 || A[0] == 53 && A[1] == 52
    || A[0] == 53 && A[1] == 53 && strlen(A) == 16){
    printf("Mastercard\n\n");
    }
    if (A[0] == 52 && strlen(A) == 13 || A[0] == 52 && strlen(A) == 16) {
    printf("Visa\n\n");
    }
    if (A[0] == 51 && A[1] == 52 || A[0] == 51 && A[1] == 55 && strlen(A) == 15){
    printf("AMEX\n\n");
    }
    if (A[0] == 51 && A[1] == 48 && A[2] == 48 || A[0] == 51 && A[1] == 48 && A[2] == 49 || A[0] == 51 && A[1] == 48 && A[2] == 50 ||
    A[0] == 51 && A[1] == 48 && A[2] == 51 || A[0] == 51 && A[1] == 48 && A[2] == 52 || A[0] == 51 && A[1] == 48 && A[2] == 53 ||
    A[0] == 51 && A[1] == 54 || A[0] == 51 && A[1] == 56 && strlen(A) == 14){
    printf("Dinners Club/Carte Blanche\n\n");
    }
    if (A[0] == 54 && A[1] == 48 && A[2] == 49 && A[3] == 49 && strlen(A) == 16){
    printf("Discover\n\n");
    }
    if (A[0] == 50 && A[1] == 48 && A[2] == 49 && A[3] == 52 && strlen(A) == 15){ // calcular para any???
    printf("enRoute\n\n");
    }
    if (A[0] == 51 && strlen(A) == 16){
    printf("JCB\n\n");
    }
    if (A[0] == 50 && A[1] == 49 && A[2] == 51 && A[3] == 49 || A[0] == 49 && A[1] == 56 && A[2] == 48 && A[3] == 48 && strlen (A)==15){
    printf("JCB\n\n");
    }
    if (C % 10 == 0){ // Modulo 10
    printf("Die karte ist gueltig\n\n"); //Ausgabe
    }
    else {
    printf("Karte ist ungueltig\n\n");
    }
    system("PAUSE");
    }



  • kscherz schrieb:

    Belli hast du whatsapp oder so,da ich [...]

    Frag ma besser hier im Forum, da kriegst Du auch dann Hilfe, wenn ich grad keine Zeit habe 😉



  • Belli danke für die Unterstützung bis dahin ich muss jetzt erstmal los wird nachher nochmal mir das Problem genauer angucken.



  • 1.) Kennt C kein const?
    2.) Was stimmt mit der Quelle bei Wikipedia nicht?



  • C kennt const wieso ?



  • was mach ich falsch statt zahlen kommen komische zeichen raus ?

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int main() {
    int i,a;
    char karte[]="krdeitkate balabalabal";

    scanf("%s",karte);
    for(i=0;i<strlen(karte);i++){
    karte[i]=(karte[i]-48) * 2;
    }
    printf("%s",karte);
    }


  • Mod

    karte[i]=(karte[i]-48) * 2;
    

    Wieso sollten nach dieser Behandlung denn deiner Meinung nach noch Zahlen heraus kommen?



  • Wenn du Ziffern haben willst, musst du die '0' auch wieder addieren.

    karte[i]=(karte[i]-48) * 2 + '0'; 
                               ^^^^
    

    Nutze doch auch bitte die Code-Tags.
    Code markieren und auf den C-Button unter dem 😡 klicken.



  • na ich gebe sag ich mal 22222 ein das wäre 5050505050 als char und dann in der schleife 50-48 und mal 2 oder nicht ? ich glaube ich muss das noch erst in ein integer konvertieren wa nur wie ?



  • ahh ja macht sinn danke dirkb 🙂 YEs



  • Du machst ja immer noch den gleichen Scheiß 😕
    Gib mal statt 22222 34567 ein.
    Ich hab Dir doch schon ein fertiges Programm bis zur Bildung der Summe gepostet!?


Anmelden zum Antworten