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);
}
-
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 demklicken.
-
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!?