Autor Beitrag
PyguK
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 25.05.09 10:41 
Hallo alle zusammen,

bin ganz neu hier, daher würde ich euch bitten mit Fehler die ich evtl. mache nicht ganz so streng umzugehen.

Es geht um folgendes. Ich habe ein Programm das ich für die Schule programmieren soll. Nur sitze ich jetzt seit Tagen drann und komm nicht weiter (blutiger Anfänger). Ich weiß auch nicht ob ich hier mit meinem Problem richtig bin, hab schon überall geguckt und wußte sonst nicht wo ichs reinschreiben sollte.

Die Aufgabenstellung lautet wie folgt:

Schreiben Sie ein Programm welches nach Eingabe der EAN (Europäische Artikel Nr.) die Gültigkeit ermittelt und bei ungültiger Prüfziffer die richtige Prüfziffer ausgibt. Das Programm soll dabei beide Formen der EAN unterstützen (13-, 8-Stellig). Desweiteren sind FEhleingaben abzufangen. Das Programm ist laufend wiederhohlbar (ohne Neustart) und kann durch ein Beendigungsbefehl verlassen werden.

Abzugeben sind: - kommentierter Quellcode
- ausführbare Programmdatei
- Struktogramm oder Programmablaufplan

Ich hab bis jetzt nur eine Programmoberfläche mit 2 radiobuttons für die 2 EAN-Varianten.
und nem Textfeld in dem die max Anzahl an möglichen Eingabezeichen begrenzt wird, wenn man einen der Radiobuttons betätigt.
Ich weiß überhaupt nicht wo ich ansetzten soll.

Wäre echt nett wenn jemand helfen könnte.

mfg
Nemag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 132
Erhaltene Danke: 2



BeitragVerfasst: Mo 25.05.09 11:06 
Servus

fertige Lösungen für dein Problem wirst du hier garantiert nicht bekommen, da wir nicht dafür da sind deine Hausaufgaben zu erledigen. Aber wenn du ein spezielles Problem hast, wird dir sicher geholfen.

Eigene dir am besten erstmal die Grundlagen an.

openbook.galileocomp....de/csharp/index.htm

Dort findest du auch noch weitere Bücher zum Thema c#.


Soll dein Programm in der Kommandozeile erfolgen oder in einer Oberfläche. (Du meintest zwar das du Radiobuttons hast, aber in der Aufgabenstellung steht es ja nicht explizit dabei.)
wobei
Zitat:
und kann durch ein Beendigungsbefehl verlassen werden.

scheint mir doch ehr auf Kommandozeile hinzudeuten.

Also das solltest du vielleicht erstmal klären und dann die nächsten schritte machen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.05.09 11:21 
Hallo und :welcome: !

Die Berechnung der Prüfziffer ist ja auch nicht schwer...
de.wikipedia.org/wik...mber#Pr.C3.BCfziffer

Eine Auswahl des EAN-Typs musst du dem Benutzer gar nicht anbieten, denn wie lang die eingegebene Nummer ist merkst du ja. (Und so ist die Aufgabe wohl auch gemeint.)

Also versuch es erst einmal wie schon gesagt wurde und zeige dann den Quelltext deines Versuches. Zudem solltest du deinen Beitrag editieren und einen besseren Titel vergeben, denn an "Hilfe bei Programm" lässt sich schwer erkennen um was es geht (EAN Prüfung) und dass du Hilfe willst, ist eh klar.
PyguK Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 25.05.09 11:42 
Erstmal danke für die Tipps (Jaenicke) werds mir für die Zukunft merken.

Ja das ihr mir die ganze Aufgabe schreibt und die Lösung schickt ist sicher zuviel verlangt, würde mir auch nicht so richtig helfen. (Wenn der Lehrer nachfragt, steh ich doof da...)

Ich hab mal nen Klassenkameraden gefragt, der meinte das er das nur mit textboxen (max 1 Zeichen) und dann alles zusammenrechnen. Daraufhin hat er das Ergebniss der Prüfziffer mit dem des Benutzers verglichen und falls notwendig die Ausgabe korregieren lassen.
Jetzt meinte der, das ihm der Lehrer gesagt ha,t das er das bisschen anders haben möchte. Mit nur eines Textbox zum eingeben und dann mit hilfe von Schleifen, die Berechnung erfolgen soll.

Jetzt wollte ich mal versuchen meine Eingaben aus der Textbox in ein Array zuübertragen und dann die auf die einzellnen Zeichen im Array zugreifen und ausrechen. Jetzt gestalltet sich allein schon das übertragen schwierig.

hier mal mein Code

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
namespace EAN_Programm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void rb_ean8_CheckedChanged(object sender, EventArgs e)
        {
            int i=0;
            int[] Ean8 = new int[7];


            tb_ean.Visible = true;
            tb_pruef.Visible = true;
            gp_pruef.Visible = true;
            tb_ean.MaxLength = 7;


            for (tb_ean.MaxLength=7; Ean8.Length == tb_ean.MaxLength; i++)
            {
                tb_ean.MaxLength.ToString = Ean8[i];
            }


FEHLER: Fehler 1 Indizierung mit [] kann nicht auf einen Ausdruck vom Typ "Methodengruppe" angewendet werden. C:\...\TEst\EAN_Programm - 2 var\EAN_Programm\Form1.cs 33 17 EAN_Programm

Fehler 2 Nur assignment-, call-, increment-, decrement- und "new object"-Ausdrücke können als Anweisung verwendet werden. C:\Users\Pyguk\Desktop\TEst\EAN_Programm - 2 var\EAN_Programm\Form1.cs 51 13 EAN_Programm


Sollte ichs auf dem Wege versuchen oder gibts da eine leichtere Möglichkeit?

Moderiert von user profile iconKha: C#-Tags hinzugefügt
Nemag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 132
Erhaltene Danke: 2



BeitragVerfasst: Mo 25.05.09 12:02 
Servus nochmals

Erstmal zu deinem ersten Fehler ToString ist eine Methode und muss folglich mit Klammern beendet werden. (Davon abgesehen das die ganze Zeile so nichts wird.)

Als erstes kannst du ja mal noch nen Button einfügen auf dessen Click-event die ganze Überprüfung/Ausgabe gestartet wird.

Dort könntest du mit Hilfe von Konvertierung die EAN aus der Testbox auslesen.
-> Stichwort Int32.TryParse( TextBox.Text ) und dann Quersumme bilden (weiß jetzt nicht wie sich EAN zusammensetzt.)
-> Ggf auf Länge der Eingabe vergleichen und dementsprechend behandeln, dann sparste dir auch deine 2 RadioButtons.

(So erstmal Mittag ;-) )
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.05.09 12:19 
user profile iconPyguK hat folgendes geschrieben Zum zitierten Posting springen:
Erstmal danke für die Tipps (Jaenicke) werds mir für die Zukunft merken.
Du kannst den Titel auch nachträglich noch durch Editieren des Titels deines ersten Beitrages ändern. ;-)

Wenn du Quelltext postest, kannst du diesen so schreiben, damit er als Quelltext dargestellt wird:
ausblenden Quelltext
1:
<span class="inlineSyntax">{PROTECTTAGe24be5ad3a883dd2ca503fe8a3e2ca6f}</span>					


Zum Programm: Was machst du da? :shock:
user profile iconPyguK hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
            tb_ean.MaxLength = 7;


            for (tb_ean.MaxLength=7; Ean8.Length == tb_ean.MaxLength; i++)
            {
                tb_ean.MaxLength.ToString = Ean8[i];
            }
Du setzt die maximale Länge der Eingabe in tb_ean auf 7.
Dann fehlt dir in der Schleife irgendwie die Schleifenvariable i?
tb_ean.MaxLength.ToString gibt dir den Wert von MaxLength als String zurück, dem kannst du aber keinen Wert zuweisen. Und das Array kannst du da ja nicht auslesen, du hast ja noch nichts hineingelegt.

Du musst dir dringend die Grundlagen anschauen, du weißt offensichtlich nicht was du da eigentlich machst...

So kannst du zeichenweise durch den Inhalt deiner Textbox gehen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
            string currentEAN = textBox1.Text;
            int currentChar = 0;
            for (int i = 0; i < currentEAN.Length; i++)
            {
                if (Int32.TryParse(currentEAN[i].ToString(), out currentChar))
                    MessageBox.Show(currentChar.ToString());
                else
                    MessageBox.Show("Zeichen " + i.ToString() + " konnte nicht umgewandelt werden!");
            }