C :: Aufgabe #258
3 Lösungen

Berechnen der Prüfziffer einer EAN- Nummer
Anfänger - C
von JKooP
- 29.03.2020 um 13:53 Uhr
Schreibe ein Programm mit dem man sowohl die Prüfziffer einer EAN- Nummer (Europäische Artikel- Nummerierung) berechnen als auch überprüfen kann.
Die EAN- Nummer besteht aus 13 Ziffern, wobei es sich bei der letzten Ziffer um die Prüfziffer handelt.
Beispiel für eine EAN: 978381582086[?]
Die Prüfziffer wird berechnet, indem man die ersten 12 Ziffern von links beginnend abwechselnd mit 1 und 3 multipliziert und anschließend die Produkte summiert.
Die Differenz zum nächsten Vielfachen von 10 ist die Prüfziffer.
Ist die Summe durch 10 teilbar, ist die Prüfziffer die Ziffer 0.
9·1 + 7·3 + 8·1 + 3·3 + 8·1 + 1·3 + 5·1 + 8·3 + 2·1 + 0·3 + 8·1 + 6·3
= 9 + 21 + 8 + 9 + 8 + 3 + 5 + 24 + 2 + 0 + 8 + 18 = 115
115 + 5 = 120 ⇒ Prüfziffer: 5
Viel Spaß
Die EAN- Nummer besteht aus 13 Ziffern, wobei es sich bei der letzten Ziffer um die Prüfziffer handelt.
Beispiel für eine EAN: 978381582086[?]
Die Prüfziffer wird berechnet, indem man die ersten 12 Ziffern von links beginnend abwechselnd mit 1 und 3 multipliziert und anschließend die Produkte summiert.
Die Differenz zum nächsten Vielfachen von 10 ist die Prüfziffer.
Ist die Summe durch 10 teilbar, ist die Prüfziffer die Ziffer 0.
9·1 + 7·3 + 8·1 + 3·3 + 8·1 + 1·3 + 5·1 + 8·3 + 2·1 + 0·3 + 8·1 + 6·3
= 9 + 21 + 8 + 9 + 8 + 3 + 5 + 24 + 2 + 0 + 8 + 18 = 115
115 + 5 = 120 ⇒ Prüfziffer: 5
Viel Spaß
Lösungen:

#include <stdio.h> int main(void) { char ean[12] = "978381582086"; // Muss 12 Ziffern haben. int p=0; // Prüfziffer for(int i=0; i<12; i++) { p = p + (1 + 2*(i%2)) * (ean[i]-48); // Faktor (1 oder 3) hängt von (i%2) ab. } printf("Die Prüfziffer ist %d\n", 10-p%10); }

#include <stdio.h> int main() { int temp1; int temp2 = 0; for(int i = 1; i < 13; i++) { printf("Geben Sie Ziffer %d ein!\n",i); scanf("%d", &temp1); if((i % 2) == 1) { temp2 = temp2 + temp1; } else if((i % 2) == 0) { temp2 = temp2 + (3* temp1); } } temp2 = (temp2 % 10); if(temp2 == 0) { temp2 = 0; } else { temp2 = (10 - temp2); } printf("Pruefzahl = %d",temp2); return 0; }

#include <stdio.h> #include <math.h> int stelle(long zahl, int stelle); int main(void) { int i, ergebnis,pruefziffer; long ean; int eanarray[12]; printf("Bitte gib eine EAN ein, diese muss aus 12 Zeichen bestehen: "); scanf("%ld", &ean); //ean = 978381582086; for (i=0;i<12;i++) { eanarray[11-i]=(int)stelle(ean,i+1); } ergebnis = eanarray[0]+ 3*eanarray[1]+ eanarray[2]+ 3*eanarray[3]+ eanarray[4]+ 3*eanarray[5]+eanarray[6]+ 3*eanarray[7]+ eanarray[8]+3*eanarray[9]+ eanarray[10]+ 3*eanarray[11]; pruefziffer = 10 - (ergebnis %10); if (pruefziffer==10) pruefziffer=0; printf("Die Prüfziffer zur eingegeben EAN ist: %d\n", pruefziffer); } // gibt die x. Stelle einer Zahl zurück int stelle(long zahl, int stelle) { zahl = fabs(fmod(zahl/pow(10,stelle-1),10)); return zahl; }