bin noob der abunzu mal nen paar fragen beantwortet hätte ^^



  • Und leg bitte das "kay" und "abunzu" ab, wenn du weiterhin Antworten erhalten willst. Die Forensprache ist Hochdeutsch (wird leider immer seltener an den Schulen gelehrt)!



  • ergebnis=sqrt(a);
    cout <<"Das Ergebnis ist: "<<a<< endl;

    na, so kann dass ja nicht funktionieren.
    du gibst a aus, aber die quadratwurzel steht doch in ergebnis.



  • ok dann versuche ich meine nicht ordentlichen audrucksweisen zu unterdrücken. Aber so ein wenig mal von der spache abzurutschen is doch nichts schlimmes, da die sprache so interessanter wird. Und das sind halt so standarts die ich in mein vokabular aufgenommen hab und warscheinlich immer benutzen werde ^^.

    zurück zum thema
    ich versuche es ncoh einmal und schau dann mal was drauß wird danke für dem Tipp es gibt echt mainchmal fehler dei sind zu leicht um sie zu finden

    edit: ok klappt danke melde mich dann nochmal wenn ich wieder ne neue frage hab aber kann net mehr lange dauern



  • florian1x schrieb:

    standarts

    Uaaaah!



  • ach jungs ihr stellt euch wegen belanglosichkeiten an. Naja Ich entschuldige mich hiermit für diesem spam aber das war etwas,was ich losweredn wollte.



  • ok also hab neue frage... da wir momentan das berechnen von 4 gleichungen mit vier unbekannten machen hab ich mir gedacht schreibste doch mal nen problem

    also ich hoffe ihr kennt die vorgehensweise

    (wenn ent dann muss ich mal ein ding ein scannen wo das lösungverfahren besser erkennbar ist

    //--------Test Programm---------------------------------------------------------
    #include <iostream>
    #include <cmath>
    using namespace std;
    //------------------------------------------------------------------------------
    int main()
    {
    
      char a;
    
      double x11,x12,x13,x14,rs1;
      cout<<"geben sie die erste Reihe ein:"<<endl;
      cout<<"Bsp. a1 a2 a3 a4 rs"<<endl<<flush;
      cin>>x11>>x12>>x13>>x14>>rs1;
    
      double x21,x22,x23,x24,rs2;
      cout<<"geben sie die zweite Reihe ein:"<<endl;
      cin>>x21>>x22>>x23>>x24>>rs2;
    
      double x31,x32,x33,x34,rs3;
      cout<<"geben sie die dritte Reihe ein:"<<endl;
      cin>>x31>>x32>>x33>>x34>>rs3;
    
      double x41,x42,x43,x44,rs4;
      cout<<"geben sie die vierte Reihe ein:"<<endl;
      cin>>x41>>x42>>x43>>x44>>rs4;
    
      double s1,s2,s3,s4;
      s1=x11+x12+x13+x14+rs1;
      s2=x21+x22+x23+x24+rs2;
      s3=x31+x32+x33+x34+rs3;
      s4=x41+x42+x43+x44+rs4;
    
      cout<<endl<<"Lösung:"<<endl<<endl;
      cout << "a1 \ta2 \ta3 \ta4 \trs \tSumme" << endl << endl; 
      cout << x11<< "\t" << x12<< "\t" << x13<< "\t" << x14<< "\t" << rs1<< "\t" << s1<< "\tX1" <<endl; 
      cout << x21<< "\t" << x22<< "\t" << x23<< "\t" << x24<< "\t" << rs2<< "\t" << s2<< "\tX2" <<endl;
      cout << x31<< "\t" << x32<< "\t" << x33<< "\t" << x34<< "\t" << rs3<< "\t" << s3<< "\tX3" <<endl;
      cout << x41<< "\t" << x42<< "\t" << x43<< "\t" << x44<< "\t" << rs4<< "\t" << s4<< "\tX4" <<endl<<endl;
    
      if(((x12>0)&&(x22>0))||((x12<0)&&(x22<0)))
      {
          x22=x22*x12-x12*x22;
      }
      else
          x22=x22*x12-x12*x22;
    
      cout << x11<< "\t" << x12<< "\t" << x13<< "\t" << x14<< "\t" << rs1<< "\t" << s1<< "  X1'" <<endl; 
      cout << "0"<< "\t" << x22<< "\t" << x23<< "\t" << x24<< "\t" << rs2<< "\t" << s2<< "  X2'" <<endl;
      cout << "0"<< "\t" << x32<< "\t" << x33<< "\t" << x34<< "\t" << rs3<< "\t" << s3<< "  X3'" <<endl;
      cout << "0"<< "\t" << x42<< "\t" << x43<< "\t" << x44<< "\t" << rs4<< "\t" << s4<< "  X4'" <<endl<<endl;
    
      system("Pause");    
      return 0 ;
    }
    

    und ioch wollte nun wissen wie ich die werte im zweiten block der Ausgabe neu berechnen kann. also ich meine x22 aus rechne bei x2'.

    man muss ja auch noch + und - beachten



  • Es wär gut, wenn du pro Frage einen Thread eröffnest. Das macht das ganze übersichtlicher.

    Die Vorgehensweise bei 4x4 kenn ich nicht. Geht das genau so wie bei 3x3? Müsste ja eigentlich funktionieren. Aber was genau willst du jetzt wissen? Wie du die Ausgabe positionieren kannst? Wie du vorgehst? Ich dachte, das kannst du.



  • florian1x: Am einfachsten ist es den Gauß-Algorithmus anwenden und rückwärts einsetzen. Am besten machst du dich vorher mal mit den Grundlagen von C++ und dem Algorithmus vertraut, weil so wie du angefangen hast gibt das nix...



  • ok mach ich nächste mal nen neuen auf
    auf den anderen boards wird man deswegen nur imemr doofangemacht

    also das geht wei folgt wenn man das programm ausführt sieht man ddas man vereinfacht immer weiter bis man hinterher nur noch bei x''' ist und die gleichung hat dann nur noch 1 unbekannte. Ist schneller als cramsche regel oder wie das hieß habs übrigens selber hinbekommen

    {
    if(((x12>0)&&(x22>0))||((x12<0)&&(x22<0)))
    {
    x22=x21*x12-x11*x22;;
    }
    else
    {
    x22=x21*x12+x11*x22;
    }

    ^^ naja hatte irgendwei nur 2 variablen vertauscht

    und das systhem bei den variablen ist eigentlich voll einfach

    z.b. bei x12 heisst erste zeile(1) zweite variable(2) ^^ naja jetzt darf ich das alle nur noch dutzendmal machen damit ich den zweiten block rechnen kann ^^ und dann kommt noch nen dritetr und nen 4-er und dann bin ich fertig sind noch so etwaa 25 berechnungen ^^



  • Kennst du schon Schleifen und Arrays? Wenn nicht, dann such mal danach. Damit kriegst du einen deutlich kürzeren Code.



  • schleifen kenn ich nur for while und do while schleifen und arrays hab ich auch schon mehrmals gelesen nur nie ganz gecheckt auch net wozu die überhaupt da sind ^^ naja und ich dreh glei am rad das systhem was ich da habe is zwar gut aber auch irgendwei un übersichtlich ich hab immer fehler drin und brauch immer ne viertelstunde um einen zu finden. (aber irgendwie macht es ja spass) nur soviele zahlen verursachen kopfschmerzen ^^

    aber wenigstens hab ich meinen fehler selber gefunden und wenn das so bleibt kann ich sagen ich habs alleine gemacht



  • Es gibt keine anderen Schleifen als for, while und do while.

    Noch mal mein Tipp: Mit Schleifen und Arrays sparst du Unmengen an Nerven und Zeit.



  • k danke für den tip aber ich weiß net wie ich die schleife einbauen sollte und arrays keine ahnug wei das ist hab jetzt auch ein system hinter den einzelnen gleichungen entdeckt jetzt schreib ich das prog soweit wie ich bin net in 3 stunden sondern 20 nin ^^



  • florian1x schrieb:

    k danke für den tip aber ich weiß net wie ich die schleife einbauen sollte und arrays keine ahnug wei das ist hab jetzt auch ein system hinter den einzelnen gleichungen entdeckt jetzt schreib ich das prog soweit wie ich bin net in 3 stunden sondern 20 nin ^^

    Schleifen und Arrays könntest du z.B. am Anfang einbauen. (Zum einlesen der Werte)
    Statt:

    char a;
    
      double x11,x12,x13,x14,rs1;
      cout<<"geben sie die erste Reihe ein:"<<endl;
      cout<<"Bsp. a1 a2 a3 a4 rs"<<endl<<flush;
      cin>>x11>>x12>>x13>>x14>>rs1;
    
      double x21,x22,x23,x24,rs2;
      cout<<"geben sie die zweite Reihe ein:"<<endl;
      cin>>x21>>x22>>x23>>x24>>rs2;
    
      double x31,x32,x33,x34,rs3;
      cout<<"geben sie die dritte Reihe ein:"<<endl;
      cin>>x31>>x32>>x33>>x34>>rs3;
    
      double x41,x42,x43,x44,rs4;
      cout<<"geben sie die vierte Reihe ein:"<<endl;
      cin>>x41>>x42>>x43>>x44>>rs4;
    
      double s1,s2,s3,s4;
      s1=x11+x12+x13+x14+rs1;
      s2=x21+x22+x23+x24+rs2;
      s3=x31+x32+x33+x34+rs3;
      s4=x41+x42+x43+x44+rs4;
    

    Z.B.: (geht wahrscheinlich noch viel besser und kürzer)

    ...
    double x[4][5];
      for(unsigned int i = 0; i < 4; ++i)
      {
            cout << "\Bitte gib die " << i + 1 << ". Reihe ein: " << endl;
            cout << "Bsp. a1 a2 a3 a4 rs" << endl << flush;        
            for(unsigned int j = 0; j < 5; ++j)
                    cin >> x[i][j];
      }
    
      double s[4];
      for(unsigned int i = 0; i < 4; ++i)
            s[i] = x[5 * i] + x[5 * i + 1] + x[5 * i + 2] + x[5 * i + 3] + x[5 * i + 4];
    ...
    

    Und kriegst du Lust auf Arrays und Schleifen? 😉

    Siehe auch C++-FAQ! (Thread: Arrays und Pointer)

    Caipi



  • also ich hab mal nen bisschen weiter geschreiben hab aber ein problem
    erstmal der quelltext

    //--------Test Programm---------------------------------------------------------
    #include <iostream>
    #include <cmath>
    using namespace std;
    //------------------------------------------------------------------------------
    int main()
    {
    
      char a;
    
      double x11,x12,x13,x14,rs1;
      cout<<"geben sie die erste Reihe ein:"<<endl;
      cout<<"Bsp. a1 a2 a3 a4 rs"<<endl;
      cin>>x11>>x12>>x13>>x14>>rs1;
    
      double x21,x22,x23,x24,rs2;
      cout<<"geben sie die zweite Reihe ein:"<<endl;
      cin>>x21>>x22>>x23>>x24>>rs2;
    
      double x31,x32,x33,x34,rs3;
      cout<<"geben sie die dritte Reihe ein:"<<endl;
      cin>>x31>>x32>>x33>>x34>>rs3;
    
      double x41,x42,x43,x44,rs4;
      cout<<"geben sie die vierte Reihe ein:"<<endl;
      cin>>x41>>x42>>x43>>x44>>rs4;
    
      double s1,s2,s3,s4;
      s1=x11+x12+x13+x14+rs1;
      s2=x21+x22+x23+x24+rs2;
      s3=x31+x32+x33+x34+rs3;
      s4=x41+x42+x43+x44+rs4;
    
      cout<<endl<<"Lösung:"<<endl<<endl;
      cout << "a1 \ta2 \ta3 \ta4 \trs \tSumme" << endl << endl; 
      cout << x11<< "\t" << x12<< "\t" << x13<< "\t" << x14<< "\t" << rs1<< "\t" << s1<< "\tX1" <<endl; 
      cout << x21<< "\t" << x22<< "\t" << x23<< "\t" << x24<< "\t" << rs2<< "\t" << s2<< "\tX2" <<endl;
      cout << x31<< "\t" << x32<< "\t" << x33<< "\t" << x34<< "\t" << rs3<< "\t" << s3<< "\tX3" <<endl;
      cout << x41<< "\t" << x42<< "\t" << x43<< "\t" << x44<< "\t" << rs4<< "\t" << s4<< "\tX4" <<endl<<endl;
    
    //------------berechnen des zweiten blocks-----------------------------------------------------------------------
      {
           if(((x11>0)&&(x21>0))||((x11<0)&&(x21<0)))
            {
            x22=x21*x12-x11*x22;
            }
            else
            {
            x22=x21*x12+x11*x22;
            }
    
            if(((x11>0)&&(x21>0))||((x11<0)&&(x21<0)))
            {
            x23=x21*x13-x11*x23;;
            }
            else
            {
            x22=x21*x13+x11*x23;
            }
    
           if(((x11>0)&&(x21>0))||((x11<0)&&(x21<0)))
            {
            x24=x21*x14-x11*x24;
            }
            else
            {
            x24=x21*x14+x11*x24;
            }
            if(((x11>0)&&(x21>0))||((x11<0)&&(x21<0)))
            {
            rs2=x21*rs1-x11*rs2;
            }
            else
            {
            rs2=x21*rs1+x11*rs2;
            }
       }
    //---------------zweite reihe --------------------------------------------------------------
    
      {
            if(((x11>0)&&(x31>0))||((x11<0)&&(x31<0)))
            {
            x32=x31*x12-x11*x32;
            }
            else
            {
            x32=x31*x12+x11*x32;
            }
            if(((x11>0)&&(x31>0))||((x11<0)&&(x31<0)))
            {
            x33=x31*x13-x11*x33;
            }
            else
            {
            x33=x31*x13+x11*x33;
            }
            if(((x11>0)&&(x31>0))||((x11<0)&&(x31<0)))
            {
            x34=x31*x14-x11*x34;
            }
            else
            {
            x32=x31*x14+x11*x34;
            }
            if(((x11>0)&&(x31>0))||((x11<0)&&(x31<0)))
            {
            rs3=x31*rs1-x11*rs3;
            }
            else
            {
            rs3=x31*rs1+x11*rs3;
            }
    
      }
    //---drite reihe------------------------------------------------------------------------
      {
            if(((x11>0)&&(x31>0))||((x11<0)&&(x31<0)))
            {
            x42=x41*x12-x11*x42;
            }
            else
            {
            x42=x41*x12+x11*x42;
            }
            if(((x11>0)&&(x31>0))||((x11<0)&&(x31<0)))
            {
            x43=x41*x13-x11*x43;
            }
            else
            {
            x43=x41*x13+x11*x43;
            }
            if(((x11>0)&&(x31>0))||((x11<0)&&(x31<0)))
            {
            x44=x41*x14-x11*x44;
            }
            else
            {
            x44=x41*x14+x11*x44;
            }
            if(((x11>0)&&(x31>0))||((x11<0)&&(x31<0)))
            {
            rs4=x41*rs1-x11*rs4;
            }
            else
            {
            rs4=x41*rs1+x11*rs4;
            }
        }
    
      s1=x11+x12+x13+x14+rs1;
      s2=x22+x23+x24+rs2;
      s3=x32+x33+x34+rs3;
      s4=x42+x43+x44+rs4;
    
      cout << x11<< "\t" << x12<< "\t" << x13<< "\t" << x14<< "\t" << rs1<< "\t" << s1<< "\tX1" <<endl; 
      cout << "0"<< "\t" << x22<< "\t" << x23<< "\t" << x24<< "\t" << rs2<< "\t" << s2<< "\tX2'"<<endl;
      cout << "0"<< "\t" << x32<< "\t" << x33<< "\t" << x34<< "\t" << rs3<< "\t" << s3<< "\tX3'" <<endl;
      cout << "0"<< "\t" << x42<< "\t" << x43<< "\t" << x44<< "\t" << rs4<< "\t" << s4<< "\tX4'" <<endl<<endl;
    
    //--- neuer block----------------------------------------------------------------
    
      {
    
            if(((x22>0)&&(x32>0))||((x22<0)&&(x32<0)))
            {
            x34=x32*x24-x22*x34;
            }
            else
            {
            x34=x32*x24+x22*x34;
            }
            if(((x22>0)&&(x32>0))||((x22<0)&&(x32<0)))
            {
            x33=x32*x23-x22*x33;
            }
            else
            {
            x33=x32*x23+x22*x33;
            }
            if(((x22>0)&&(x32>0))||((x22<0)&&(x32<0)))
            {
            rs3=rs1*x23-x22*rs3;
            }
            else
            {
            x33=x32*x23+x22*x33;
            }
    
      }
      s1=x11+x12+x13+x14+rs1;
      s2=x22+x23+x24+rs2;
      s3=x33+x34+rs3;
      s4=x43+x44+rs4;
    
      cout << x11<< "\t" << x12<< "\t" << x13<< "\t" << x14<< "\t" << rs1<< "\t" << s1<< "\tX1" <<endl; 
      cout << "-"<< "\t" << x22<< "\t" << x23<< "\t" << x24<< "\t" << rs2<< "\t" << s2<< "\tX2'" <<endl;
      cout << "-"<< "\t" << "0"<< "\t" << x33<< "\t" << x34<< "\t" << rs3<< "\t" << s3<< "\tX3''" <<endl;
      cout << "-"<< "\t" << "0"<< "\t" << x43<< "\t" << x44<< "\t" << rs4<< "\t" << s4<< "\tX4''" <<endl<<endl; 
    
    //---neuer block-----------------------------------------------------------------
      {
    
            if(((x33>0)&&(x43>0))||((x33<0)&&(x43<0)))
            {
            x44=x43*x34-x33*x44;
            }
            else
            {
            x44=x43*x34+x33*x44;
            }
            if(((x33>0)&&(x43>0))||((x33<0)&&(x43<0)))
            {
            rs4=x43*rs3-x33*rs4;
            }
            else
            {
            rs4=x43*rs3+x33*rs4;
            }
      }
      s1=x11+x12+x13+x14+rs1;
      s2=x22+x23+x24+rs2;
      s3=x33+x34+rs3;
      s4=x44+rs4;
    
      cout << x11<< "\t" << x12<< "\t" << x13<< "\t" << x14<< "\t" << rs1<< "\t" << s1<< "\tX1" <<endl; 
      cout << "-"<< "\t" << x22<< "\t" << x23<< "\t" << x24<< "\t" << rs2<< "\t" << s2<< "\tX2'" <<endl;
      cout << "-"<< "\t" << "-"<< "\t" << "0"<< "\t" << x34<< "\t" << rs3<< "\t" << s3<< "\tX3''" <<endl;
      cout << "-"<< "\t" << "-"<< "\t" << "0"<< "\t" << x44<< "\t" << rs4<< "\t" << s4<< "\tX4'''" <<endl<<endl;
    
      double X1,X2,X3,X4;
      X4=rs4/x44;
      X3=rs3/x33+X4;
    
      system("Pause");    
      return 0 ;
    }
    

    so ich hab grad leider keine zeit das zu kürzen naja das prob is
    da kommen falsche ergebnisse raus ^^. ich hab auch schon eine idee woran das legt. gerechnet wird ja
    x44=x43*x34-x33*x44
    wenn x43=2 und x33=3 also bede positiv sind kein prob aber wenn x33 negativ wäre käm falsches ergebnis raus da das andere vorzeichen ergibt wenn du die zwischen ergebnisse betrachtest welche man dann in der dividion benutzt also noch ein bsp mit x33*x44=-3*4 ergibt ja -12 naja aber rauskommen darf nur 12 damit man richtig eiterrechen kann und ich will nu wissen wie ich das richtig einbaue

    also dass der da net ins minus gerät



  • ich versuche das noch ein bisschen zu erläutern also die aufgabe des programms ist das per additionsverfahren sozusagen in jedem block jeweils eine variable verschwindet und man übernimmt jeden block eine reihe mehr bis man dann nur noch eine unbekannte und eine gleichung hat. Verstanden? naja
    mit dem if hab ich gemacht, dass der wie beim additionsverfahren bei vorzeichen(+ und -) addiert und halt umgekerht
    naja die einer include anweisung oben kann man weglassen ka warum die da steht hab ie bei mir scho weg und das flush kann au weg also falls ihr noch was wisswen wollt um mir zu helfen fragt



  • florian1x schrieb:

    ich versuche das noch ein bisschen zu erläutern also die aufgabe des programms ist das per additionsverfahren sozusagen in jedem block jeweils eine variable verschwindet und man übernimmt jeden block eine reihe mehr bis man dann nur noch eine unbekannte und eine gleichung hat. Verstanden?

    Aua! Zum letzten Mal: Schau dir Arrays und Schleifen an! Was machst du wenn du ein 5x5 LGS lösen willst? Schreibst du dann den ganzen Code neu (und doppelt so lang)? Gut, 5x5 kann man vielleicht noch runtertippen wenn man viel Zeit hat, aber mach das mal für ein 100x100 LGS. Da sitzt du ein Jahr dran. Programmieren lernen heißt auch erkennen welche Operationen sich wiederholen... Mit Schleifen und Arrays wäre der Code für ein beliebig großes LGS jedenfalls schon wesentlich kürzer als das, was du da fabriziert hast.

    Nur mal als Anregung ein Code für eine Reduktion auf obere Dreiecksform (ungetestet):

    for(int j = 0; j != (N - 1) && a[j][j] != 0; ++j)
    {
      for(int i = j + 1; i != N; ++i)
      {
        a[i][j] /= a[j][j];
        for(int k = j + 1; k != N; ++k)
          a[i][k] -= a[i][j] * a[j][k];
      }
    }
    


  • ja das ist möglich aber ich check das irgendwie net mit den arrays und verscuh mir das grad anzulernen und bei 5 müsste ich da net alles neu oder doppelt schreiben sondern nur da und da was ergänzen außerdem is der code ja so wie er da steht fehlerhaft und weil ich das noch net konnt hab ich das sogemacht

    kann ich mit arrays denn au x11 - x14 machenm damit das glei bleibt iund ka ich muss erstmal wissen wie ich in der gleichung das vorzeichen wegkriege also weil sich das ergebnis sonst total verfälscht

    edit: außerdem net böse sein aber ich check das alles net wie gesagt ich versuch es erst seit einer woche zu lernen und da ist bis jetzt noch net viel rausgekommen da ich auch noch andere sachen zu tun hab



  • Tu dir den Gefallen und arbeite ein Tutorial durch bevor du weiter machst.



  • mach ich doch schon naja aber ich check das alles net


Anmelden zum Antworten