String
-
char nr[] = "49927398716";
-
Hallo kscherz,
in der Aufgabe steht doch gar nicht drin, daß du einen neuen String erzeugen sollst, sondern du sollst einfach die Summe bilden (d.h. dieser ganze Thread hier ist völlig unnötig)!
-
hab ich auch gar nicht behauptet das ein neuer string erzeugt werden muss. allerdings wird ein string verwendet und nen kumpel von mir hat die aufgabe mit 2 strings gelöst ,kann ich auch gleich reinstellen die lösung von ihm:
-
So, jetzt noch mal getestet:
#include <stdio.h> int main() { char nr[] = "49927398716"; int i; int sum = 0; int doppelt = 0; int zwi; for(i = strlen(nr); i; ) { --i; zwi = nr[i] - '0'; if(doppelt) { zwi = zwi * 2; if(zwi > 9) { sum += 1; zwi %= 10; } } sum += zwi; doppelt = !doppelt; } printf("sum = %d\n", sum); }
-
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 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!?