Gleichungen true/false



  • Hallo ! Ich will mir gerne ein Programm machen das gucken kann ob eine gleichung richtig ist oder nicht ! Mein bisheriger Ansatz ist so :

    int main()
    {
    	ofstream fout( "C:\Text.txt" );
    
    	for(double x=-999999;x<999999;x=x+0.1)
    	{
    	    for(double y=999999;x>-999999;x=x-0.1)
    		{
    		   if((-2*x+5*y=3)==true)
    		   {
                 fout << ergebnis;
                 fout << endl;
    		   }
    	    }
    
         }
    }
    

    doch mein Compiler meckert : Fehler 2 error C2106: '=': Linker Operand muss ein L-Wert sein c:\dokumente und einstellungen\simon\eigene dateien\visual studio 2008\projects\mathe\mathe\main.cpp 14

    Was habe ich falsch gemacht ?



  • Der Fehler dürfte hier liegen:

    if((-2*x+5*y=3)==true)
    

    und sollte wohl so lauten:

    if(-2*x+5*y==3)
    


  • Die Bedingung wird aufgrund der Fliesskomma-Ungenauigkeiten kaum jemals true sein. Führe Toleranzbereiche um 3 ein.



  • Jo danke ! Mein Programm startet und läuft auch fröhlich durch nur wie du gesagt hast landet es kaum treffer und ist (verhältnismäßig) EXTREM langsam ! Wie führe ich diese Toleranzbereiche ein ? Code :

    #include <fstream>
    
    using std::ofstream;
    using std::endl;
    #include <iostream>
    using namespace std;
    
    int main()
    {
    
    	ofstream fout( "C:\Text.txt" );
    
    	for(double x=-999999;x<999999;x=x+0.1)
    	{
    	    for(double y=999999;y>-999999;y=y-0.1)
    		{
    			cout << "(" << x << "|" << y << ")";
    		   if(-2*x+5*y==3)
    		   {
                 fout << "(" << x << "|" << y << ")";
                 fout << endl;
    		   }
    	    }
    
         }
    }
    


  • Oder de multiplizierst einfach alles mit 10. Dann fallen die Kommata ganz weg und du kannst Integers nehmen.



  • Die Toleranzbereiche machst du, indem du jeweils prüfst, ob das Resultat nur um einen kleinen Wert von 3 abweicht.

    BruteForce ist meistens sehr langsam. Was willst du mit diesem Code überhaupt bezwecken?



  • ja das merk ich auhc gerade ! Also die aufgabe ist so :

    Nenne Zahlenpaare , die Lösung der Gleichung -2x+5y=3 sind.

    Damit ist sowas gemeint : (-99|-39).Mir ist klar das man diese Aufgabe auch mit einem hübschen Koordinaten Kreuz lösen könnte aber da ich nciht weis wie man dieses in c++ macht habe ich die try and error methode versucht xD



  • Ich habe es gerade mit Zahlen zwischen -99 und 99 probiert und festgestellt das in meine text.txt nichts geschrieben wird ! Fehler : Cannot create a file when that file already exists. Nachdem löschen der Datei = selber Fehler ?



  • Was soll das für ein Fehler sein? Ist er während der Laufzeit mit einer Popup-Meldung aufgetaucht?



  • Nein ! Die Übersetzung meines Error Codes nach GetLastError()



  • Bin ich dumm ! Ich habs ! (statt C:\.txt hatte ich C:\.txt geschrien) DANKE ! an alle die mir geholfen haben !


Anmelden zum Antworten