C :: Aufgabe #258

2 Lösungen Lösungen öffentlich

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ß

Lösungen:

vote_ok
von Gnom (550 Punkte) - 31.03.2020 um 00:08 Uhr
Quellcode ausblenden C-Code

#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);

}

vote_ok
von Tischbein42 (580 Punkte) - 06.04.2020 um 00:10 Uhr
Quellcode ausblenden C-Code
#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;
}