Autor Beitrag
0jeppa
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Do 22.10.09 18:19 
Hallo Zusammen
ich habe von meinem Lehrer diese Methode bekommen und soll nun nach Fehlern suchen. Leider weiss ich noch nicht einmal was diese Methode überhaupt für einen Zweck hat. Vielleicht kann mir jemand von euch sagen, wie diese Methode funktionieren soll und wo Fehler versteckt sind. Wäre euch sehr dankbar.

Gruss Thomas

ausblenden volle Höhe 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:
26:
27:
28:
29:
30:
31:
static void Main(string[] args)
        {
            private int syntaxFehler(int StartZahl, int Endzahl, int max);
    
            max = int.MinValue;
            min = int.MaxValue;
         }
            for(int i = StartZahl; i <= Endzahl; i++)
         {
             int zahl = i;
             int zähler = 0;
             while (zahl != 1)
         {
             if (zahl % 2 = 0)
             zahl /=2;
             else
             zahl = (3 * zahl + 1) / 2;
             zähler++;
         }
             if min < zähler
            {
             min = zähler;
            }
             if (max > zähler)
            {
             max = zähler;
            }

             return min
}
        }


Zuletzt bearbeitet von 0jeppa am Do 22.10.09 20:22, insgesamt 4-mal bearbeitet
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 22.10.09 19:06 
Lies erstmal die Forumshilfe durch, wie Beiträge geschrieben werden sollen. Bei deiner ersten Diskussion ist dir immer ein Moderator hinterhergerannt und hat deine Codeauszüge formatiert. Mach das erst mal selber (dafür gibt es den Schere-Button); danach bin ich bereit, deinen Code durchzulesen. Jürgen

PS. Ich hoffe, dass alle anderen potenziellen Helfer ebenfalls warten und nicht voreilig helfen.
0jeppa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Do 22.10.09 19:21 
Danke für den Tip, jetzt weiss ich wenigstens auch mal wie das funktioniert.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 22.10.09 20:02 
Na, das ist doch schon etwas. Nun bearbeite den Beitrag bitte nochmals und setze Einrückungen und Klammern {} so, dass alles, was zusammengehört, auch zusammenhängend eingerückt ist. Danke! Jürgen
0jeppa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Do 22.10.09 20:22 
Ich habe die Anordnung noch einmal etwas angepasst. Das Problem ist, das die Klammer vermutlich auch noch an der falschen Stelle stehen, da sie ein Teil der Fehlersuche sind.

Gruss Thomas
Gabe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Do 22.10.09 20:28 
Also ich würde mir erst mal diese geschweiften Klammern anschauen...

VS formatiert die automatisch richtig, wenn du die letzte Klammer entfernst und nochmal setzt. Wenn das nicht klappt, stimmen deine Klammern nicht...
Also erst mal die richtig setzen.

In diesem Kapitel findest du alles für dein Problem...
openbook.galileocomp...al_csharp_02_001.htm

Gruß Gabe

Edit: Link hinzugefügt
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 22.10.09 20:52 
user profile iconGabe hat folgendes geschrieben Zum zitierten Posting springen:
Also ich würde mir erst mal diese geschweiften Klammern anschauen...

In der Tat, damit geht es los.
user profile iconGabe hat folgendes geschrieben Zum zitierten Posting springen:
Also erst mal die richtig setzen.


Danach Semikolons prüfen.

Was die Methode soll, ist vermutlich eher zweitrangig. Vielleicht kann man es am Ende erkennen. Aber klar ist zunächst: Es gibt nur die Main-Methode. Aufruf und Verwendung von syntaxFehler() gehören vermutlich mit zur Aufgabenstellung; denn es geht nur um die Fehlersuche.

Gruß Jürgen
Gabe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Do 22.10.09 21:05 
Die runden Klammern auch nicht vergessen... ;-)
0jeppa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Do 22.10.09 21:09 
Bin euren Tips gefolgt und habe noch einmal etwas daran rumgebastelt. Was meint ihr?


ausblenden volle Höhe 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:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
static void Main(string[] args);
        
            public static void syntaxFehler(int StartZahl, int Endzahl, int max);
   
            int max = Int32.MinValue;
            int min = Int32.MaxValue;
            int Startzahl;
            int Endzahl;
    
            for (int i = StartZahl; i <= Endzahl; i++)
               
         
    {
             int zahl = i;
             int zähler = 0;
       
    }        while (zahl != 1)
    
         
             if (zahl % 2 = 0)
    {        zahl /=2;
    }
             else
    {        zahl = (3 * zahl + 1) / 2;
             zähler++;
    }
         
             if (min < zähler)
            {
             min = zähler;
            }
            
             if (max > zähler)
            
{            max = zähler;
            }
   
             return min
}
Gabe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Do 22.10.09 21:16 
user profile icon0jeppa hat folgendes geschrieben Zum zitierten Posting springen:
Was meint ihr?


Wenn ich das so schnell übersehe, hast du Startzahl und Endzahl zusätzlich noch einmal deklariert. Die bekommst du aber schon mit der Funktion übergeben. Kannst also wieder streichen.
Zudem hast du es noch falsch geschrieben, so funktioniert es dann eh nicht. C# unterscheidet zwischen Groß- und Kleinschreibung!

Versuch mal nicht, nach der Funktion zu schauen, sonder nur nach der Syntax. Funktion ist glaub ich eh unwichtig oder?

Die geschweiften Klammern passen immer noch nicht.
0jeppa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Do 22.10.09 21:27 
Habe die Klammern geändert. Fehler der Klammern werden jetzt keine mehr angezeigt. Nur noch ein Fehler token und einer Member
Das war ein hartes Stück Arbeit

ausblenden volle Höhe 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:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
namespace SchweizerKreuz
{
    class Program
    {

        static void Main(string[] args);
        
            public static void syntaxFehler(int StartZahl, int Endzahl, int max);
   
    {    
            int max = Int32.MinValue;
            int min = Int32.MaxValue;
    } 
            
            for (int i = StartZahl; i <= Endzahl; i++)
               
{
    
             int zahl = i;
             int zähler = 0;
       
           
         
             while (zahl != 1)

         
             if (zahl % 2 = 0)
{            zahl /=2;

              
}
             else
                 zahl = (3 * zahl + 1) / 2;
                     zähler++;
              
}
             if (min < zähler)
            
{   min = zähler;
            
}
             if (max > zähler)
{  
           
            max = zähler;
            
    
}
    

             return min

        
}
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 22.10.09 21:53 
user profile icon0jeppa hat folgendes geschrieben Zum zitierten Posting springen:
Man, die geschweiften Klammern machen mich echt fertig. Mir raucht schon die Birne. Kann man die nicht automatisch setzen lassen?

Ja, vor allem wenn man anfängt, den Code selbst zu schreiben. Einen anderen Vorschlag hat Gabe vorhin schon gebracht:
Zitat:
VS formatiert die automatisch richtig, wenn du die letzte Klammer entfernst und nochmal setzt. Wenn das nicht klappt, stimmen deine Klammern nicht...

Aber das, was du gemacht hast, nennt man Verschlimmbesserung. Schau zunächst mal, wie eine Methode aussehen muss, z.B. im OpenBook Kap.2.2.5 (siehe Beitrag von Gabe). Dort ist das Muster der Main-Methode; alles andere gehört dort hinein.

Bitte erläutere hier einmal, wie eine Methode strukturiert sein muss (und vergleiche das mit der aktuellen Version von Main); dann sehen wir, ob du das wenigstens verstanden hast. Jürgen

PS. Bitte korrigiere die Einrückungen; dann kannst auch du falsche Klammern leichter erkennen. Und jeweils eine Leerzeile genügt vollkommen; mehr ist überflüssig.

PS 2. So wie der Code ursprünglich aufgebaut ist, kannst du kein korrektes Programm daraus machen. Es kann nur darum gehen, Fehler festzustellen; die musst du vor allem begründen statt zu beseitigen.
Gabe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Do 22.10.09 22:03 
Soviele Klammern wie du öffnest musst du auch wieder schließen...
0jeppa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Fr 23.10.09 22:25 
Hallo, habe es nochmals überarbeitet. Denke das die Klammern nun stimmen. Seht ihr noch Fehler in der Anweisung? Gruss Thomas

ausblenden volle Höhe 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:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
{
    class Program
    {

        static void Main(string[] args);
    
            public static void syntaxFehler(int StartZahl, int Endzahl, int max);
   
    
            int max = Int32.MinValue;
            int min = Int32.MaxValue;
     
         
            for (int i = StartZahl; i <= Endzahl; i++)
{        
             int zahl = i;
             int zähler = 0;
           }
             while (zahl != 1)

             if (zahl % 2 = 0)
            {   zahl /=2;
            }
             else
            {                
                  zahl = (3 * zahl + 1) / 2;
                  zähler++;
            }  
              if (min < zähler)
            {
                  min = zähler;
            }
              if (max > zähler)
            {
                  max = zähler;
            }
                     return min}
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Sa 24.10.09 10:35 
Ich sehe jetzt vor allem zwei Fehler: Es sind zwei Methoden deklariert worden mit Namen und Argumenten, aber keinerlei Methodenrumpf dazu. Außerdem gibt es eine Menge Anweisungen innerhalb einer Klasse, die dort nichts, aber auch gar nichts zu suchen haben. Und die Einrückungen (z.B. if hinter while) sind nach wie vor eine Katastrophe und machen alles völlig unverständlich.

Wie schon gesagt: Verschlimmbesserung.

Ich habe mit meinem letzten PS2 bereits angedeutet, wie hier die Fehlersuche laufen müsste. Gehe am besten zurück auf Anfang, korrigiere zuerst die Einrückungen und fang dann mit weiterer Fehlersuche an.

Jürgen