C# :: Aufgabe #294 :: Lösung #1

4 Lösungen Lösungen öffentlich
#294

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ß
#1
vote_ok
von Waldgeist (2310 Punkte) - 08.04.2020 um 14:41 Uhr
Hallo,

mir mein Lösungsvorschlag.

Quellcode ausblenden C#-Code
using System;
using System.Windows;

namespace EAN_Prüfsumme
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void ButtonBerechne_Click(object sender, RoutedEventArgs e)
        {
            int prüfsumme = 0;
            string c;
            int zahl = 0;
            int summe = 0;
            string eingabe = TextBoxEingabe.Text;
            if (eingabe.Length != 12)
            {
                TextBoxAusgabe.Text = "Falsche Eingabe";
            }
            else
            {
                for (int i = 1; i < eingabe.Length + 1; i++)
                {
                    if (i % 2 == 0)
                    {
                        c = eingabe[i - 1].ToString();
                        zahl = (Convert.ToInt32(c)) * 3;
                        TextBoxAusgabe.Text = c.ToString();
                    }
                    else
                    {
                        c = eingabe[i - 1].ToString();
                        zahl = (Convert.ToInt32(c));
                        TextBoxAusgabe.Text = c.ToString();
                    }
                    summe = summe + zahl;
                }

                if (summe % 10 == 0)
                {
                    prüfsumme = 0;
                }
                else
                {
                    while (summe % 10 != 0)
                    {
                        summe++;
                        prüfsumme++;
                    }
                }
            }
            TextBoxAusgabe.Text = prüfsumme.ToString();
        }
    }
}



hier der XAML Code

Quellcode ausblenden C#-Code
<Window x:Class="EAN_Prüfsumme.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:EAN_Prüfsumme"
        mc:Ignorable="d"
        Title="EAN Prüfsumme" Height="321" Width="355">
    <Grid>
        <TextBox x:Name="TextBoxEingabe" HorizontalAlignment="Left" Height="28" Margin="39,63,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="265" />
        <Button x:Name="ButtonBerechne" Content="Berechne Prüfsumme" HorizontalAlignment="Left" Height="37" Margin="39,108,0,0" VerticalAlignment="Top" Width="265" Click="ButtonBerechne_Click" />
        <TextBox x:Name="TextBoxAusgabe" HorizontalAlignment="Left" Height="29" Margin="39,198,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="265" />
        <Label Content="Bitte eine EAN Nummer (12-stellig) eingeben:" HorizontalAlignment="Left" Height="42" Margin="39,21,0,0" VerticalAlignment="Top" Width="529" />
        <Label Content="Prufsumme" HorizontalAlignment="Left" Height="30" Margin="39,168,0,0" VerticalAlignment="Top" Width="265" />
    </Grid>
</Window>

Kommentare:

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

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