C :: Aufgabe #258 :: Lösung #3

3 Lösungen Lösungen öffentlich
#258

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ß
#3
vote_ok
von kathleenw (3600 Punkte) - 01.07.2020 um 12:14 Uhr
Quellcode ausblenden C-Code
#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;
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben