Einfache Berechnung lässt sich nicht kompilieren

#3871539
Lesenswert?

MoinMoin,

ich glaube, die Betriebsblindheit hat mal wieder zugeschlagen. Mein 
Lieblingsfehler, das vergessene Semikolon, ist es diesmal nicht.

Mein Compiler(MinGW32GCC) wirft mir noch 3Fehler. In Zeile 55 und 
58:"error: expected expression before '/' token"

Und dann nochmal in Zeile 58:"error: stray '\344' in program".

Könnte da einer von euch mal kurz drüberschauen, und mir sagen, was ich 
da falsch mach?

Mit Dank im Voraus und freundlichen Grüßen,
Chaos

1
#include <windows.h>
2
#include <stdio.h>
3
#include <stdlib.h>
4

5

6
#define xMax 1366
7
#define yMax 768
8

9
void Mandelbrot (float CReaMin, float CReaMax, float CImaMin, float CImaMax, int nMax, int Tiefe3D);
10

11

12
int main()
13
{
14

15

16

17
    return 0;
18
}
19

20

21
void Mandelbrot (float CReaMin, float CReaMax, float CImaMin, float CImaMax, int nMax, int Tiefe3D)
22
{
23
    int xPos = 0;
24
    int yPos = 0;
25
    int xPosMerker = 0;
26
    int yPosMerker = 0;
27

28
    int n = 0;
29

30
    float DeltaCRea = (CReaMax - CReaMin) / xMax;
31
    float DeltaCIma = (CImaMax - CImaMin) / yMax;
32

33
    float CRea = CReaMin;
34
    float CIma = CImaMin;
35
    float ZRea = 0;
36
    float ZIma = 0;
37

38
    float BetragZ = 0;
39

40
    float CReaHalter = CRea;
41
    float CImaHalter = CIma;
42
    float ZReaHalter = 0;
43
    float ZImaHalter = 0;
44

45

46
    while (yPos < yMax)
47
    {
48
        while (xPos < xMax)
49
        {
50
            while (BetragZ < 4 && n < nMax)
51
            {
52
                ZReaHalter = ZRea;
53
                ZImaHalter = ZIma;
54

55
                ZRea = (ZReaHalter * ZReaHalter) - (ZImaHalter * ZImaHalter) - CRea; //Zeile55
56
                ZIma = (ZReaHalter * ZImaHalter) + (ZReaHalter * ZImaHalter) - CIma;
57

58
                BetragZ = (ZRea*ZRea) + (ZIma*ZIma);    //Zeile58
59

60
                n++;
61
            }
62

63
            if (n == nMax)
64
            {
65
                BetragZ = 0;
66
                n = 0;
67
            }
68

69
            if (BetragZ >= 4)
70
            {
71
                yPosMerker = yPos + Tiefe3D;
72
                if (yPosMerker > yMax) yPosMerker = yMax;
73

74
                while (yPosMerker > yPos)
75
                {
76
                    HDC hdc = GetDC(0);
77
                    SetPixel(hdc, xPos, yPos, RGB(0, 255, 255));
78
                    yPosMerker--;
79
                }
80

81
                BetragZ = 0;
82
                n = 0;
83
            }
84

85
            xPos++;
86
            CRea += DeltaCRea;
87
            ZRea = 0;
88
            ZIma = 0;
89
        }
90

91
        yPos++;
92
        xPos = 0;
93
        CIma += DeltaCIma;
94
        CRea = CReaHalter;
95
    }
96

97
    yPos = 0;
98
    CIma = CImaHalter;
99
}
Gast #3871548
Lesenswert?

Weil ich grad lese "stray '\344'": Lösche alle UTF/nicht ASCII-Zeichen. 
Die entstehen wenn man z.B. einen Modifier hält und ein Leerzeichen 
tippt. Im Editor sieht das dann leider nach einem Leerzeichen aus. Das 
Gleiche wird dir in Zeile 55 passiert sein.
#3871560
Lesenswert?

Danke euch für Tipps.... Scheinbar kommt CodeBlocks mit den Kommentaren 
nicht richtig klar... Ich hatte in entsprechenden Zeilen welche, die ich 
hier nur durch Zeile 55 und 58 ersetzt hatte. Es waren eigentlich nur 
normale Zeichen in den Kommentaren....

Und Kommentare über mehrere Zeilen machen auch keine Probleme....

Nunja nun kompiliert er zumindest. Danke euch für die Hilfe =)

MfG Chaos

P.S. @ Dirk B

Kannst du mir zufällig sagen, wo ich in CodeBlocks in den Hexmode 
schalten kann? bzw ganz generell, was passiert im HexMode? Wird mir da 
jedes (ASCII)Zeichen in seiner Hexdarstellung gezeigt?
#3872008
Lesenswert?

Das Programm soll in C sein. Ich war der Meinung, es gäbe irgendwo ein 
Häkchen zu setzen, das er nach C99 compiliert, habs aber nicht gefunden.

Ich wunder mich dann nur, wieso es klappt wenn ich

foo = bar; /*SNAFU*/ schreibe,

aber

foo = bar; //SNAFU

nicht geht.

Wenn es Kommentare erst ab C99 gibt, sollte er doch in beiden Fällen den 
/ als Operator interpretieren?
Moderator Persönliche Seite #3872246
Lesenswert?

Rufus Τ. Firefly schrieb:
> Daß jetzt tatsächlich ein Compiler so ... analretentiv ist,
> Zeilenkommentare gezielt abzuweisen, das hätte ich nicht erwartet.

Ist halt die Frage, ob du den C-Compiler im strikten C89-Modus
betreibst (-std=c89) oder im Modus „mach mal C89, aber mit den
Erweriterungen, die GCC so im Laufe der Jahre eingebaut hat“
(-std=gnu89).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren