kein fehler beim compilieren, stürzt aber ab...



  • hallo!

    nach langen problemen mit einer header-datei bin ich nun endlich dabei mein apfelmännchen-programm zu schreiben.

    der compiler gibt mir jetzt keine fehler mehr zurück - aber es sind noch welche drinnen, da es - anscheinend beim unterprogramm - abstürzt.

    hier ist mein code:

    //Programm Apfelmann.cpp
    
    using namespace std;
    #include <iostream>
    #include <cmath>
    #include "xwindows.h"
    
    int main() {
    
        double nx;
        double ny;
        int nn;
        double x;
        double y;
    
        cout << endl << "Programm Apfelmann.cpp" << endl << endl;
    
        double niter(double x,double y);
    
    //Deklaration eines Objektes der Klasse Xwindow
    
        XWindow fenster(800,0);
    
    //Oeffne Fenster der Groesse xmax*ymax
    
        fenster.Open (nx, ny, "Apfelmaennchen");
    
    //Fuelle das Fenster
    
        for  (nx = 0; nx <= 500;) {
    	for (ny = 0; ny <= 500;) {
    
    	    niter(x,y);
    
    		fenster.SetColor(1. - nn/(30.0));
    		fenster.DrawPoint(nx, ny);
    		ny = 2.5/ny;
    	}
    
    	nx = 2.5/nx;
        }
        return 0;
    }
    
    //Unterprogramm zur Iteration
    
        int u;
        int v;
        int z;
        int w;
        int uneu;
        int vneu;
        int nn;
    
    double niter(double x,double y) {
    
    	for (int i = 1; i <= 200; i++) {
    
    	    w = z;
    
    	for (u = -2.0; u <= 1.25;) {
    
    	    for (v = -1.25; v <= 1.25;) { 
    
    		uneu = u*u - v*v + x;
    		vneu = 2*u*v + y;
    
    		if(uneu^2 + vneu^2 > 4){i = nn; break;}
    
    		u = uneu;
    		v = vneu;
    	    }
    	    return nn;
    	}
    
    	}
        }
    

    und das steht in der konsole, wenn ich es laufen lasse:

    Programm Apfelmann.cpp

    X Error of failed request: BadValue (integer parameter out of range for operation)
    Major opcode of failed request: 1 (X_CreateWindow)
    Value in failed request: 0x0
    Serial number of failed request: 7
    Current serial number in output stream: 15

    weiß jmd, was da los ist?

    wäre für hilfe sehr danbar!

    lg
    Dharma



  • Erstmal: Das Programm ist ein Krampf - globale Variablen, aber dann ein lokal definierter Funktions-Prototyp.

    Zweitens:

    for  (nx = 0; nx <= 500;) {
        for (ny = 0; ny <= 500;) {
    
            niter(x,y);
    
            fenster.SetColor(1. - nn/(30.0));
            fenster.DrawPoint(nx, ny);
            ny = 2.5/ny;
        }
    
        nx = 2.5/nx;
        }
    

    Diese Schleife dürfte dir recht bald mit einem "Division by Zero" um die Ohren fliegen - ny wird mit 0 initialisiert und dann dividierst du 2.5 durch ny.

    Drittens: Schränke bitte etwas feiner ein, wo es kracht - entweder per Debugger oder zur Not indem du nach jeder Anweisung eine Statusmeldung an cerr sendest.



  • if(uneu^2 + vneu^2 > 4){i = nn; break;}
    

    Bist du sicher, dass du hier nicht eher uneu*uneu + vneu*vneu haben willst?
    Weil ^ ist der bitweise xor-Operator.


Anmelden zum Antworten