Quadratische Gleichungen

Dieses Thema im Forum "Programmieren" wurde erstellt von Spy Secret Agen, 17. März 2004.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Spy Secret Agen

    Spy Secret Agen Halbes Megabyte

    Registriert seit:
    19. Oktober 2003
    Beiträge:
    673
    Hallo
    Mein lehrer hat mir gesagt ich soll eine "Gleichung mit zwei unbekanten Variablen"{Quadratische Gleichungen} bauen bzw ein programm das das ausrechnet.In turbo pascal

    Wir haben kurz eine aufgabe an der tafel gerechnet und dann sollte es schon losgehen, ich habs 2 stunden probiert und es nicht zum laufen gebracht, ich hatte kein plan wie ich anfangen soll, leider habe hatte ich keine zeit mir das nach hause zu schicken, war eh besimmt nur unsinn was ich geschrieben hatte.

    Ich soll das so machen, 6 Variablen wählen,

    z.b.

    Code:
    ax+by=c  /e        3x+[b]2y[/b]=5  [b] /3[/b]     
    dx+ey=f  /b         4x+[b]3y[/b]=7  [b] /2[/b]
    
    
    axe+eby=ec       9x+[b]6y[/b]=15 
    
    bdx+bey=fb        8x+[b]6y[/b]=14
    
    
         ce-bf  
    X=--------------------               17x=29 /17
         ae-bd                               X   = 1,7
    
    So haben wir die gleichung gelöst in der schule, oben bekommen wir nur x raus um jetzt auch noch y rauszubekommen, muss man das gleiche am anfang mit y machen, so wie ich das oben mit x gemacht habe, ich habe mal die stelle markiert, damit ihr wisst was ich meine!


    Hier noch die Formel für Y

    Code:
         cd-fa
    Y=------------------------  
         bd-ea

    Das programm soll dann so aussehen, wenn ich zu der Rechnung komme sol da z.b. dass schon zu sehen sein

    Code:
    _x+_y=_
    
    _x+_y=_
    
    Das hier _ braucht da nicht zu stehen, habe ich jetzt nur gemacht damit ihr wisst das man dann dann die zahl eintragen muss, ob jetzt das pluszeichen da stehen muss weiß ich nicht, oder ob man erst wählen muss zwischen plus und minus, kann sein das da plus stehen muss falls man mit minus eine variable nicht lösen kann, was ich nicht glaube, wäre also besser wenn ich das selber auswählen könnte.

    Das problem ist jetzt das ich nicht weiß wie ich das bewerkstelligen soll, ob procedure oder nicht, vielleicht kann mir jemand anhand der daten ein beispiel basteln wenns nicht so viel mühe bereitet, danke jetzt schonmal im vorraus!

    Mfg Spy
     
  2. sarkastic_one

    sarkastic_one Halbes Megabyte

    Registriert seit:
    4. März 2002
    Beiträge:
    902
    Dann ist ja alles OK :)

    Nur....
    Ihr bekommt einen Laufzeitfehler, wenn das Gleichungssystem nicht lösbar ist
    das ist der Fall, wenn (b/a)-(e/d)=0 ist. Solltet ihr noch abfangen.
     
  3. Spy Secret Agen

    Spy Secret Agen Halbes Megabyte

    Registriert seit:
    19. Oktober 2003
    Beiträge:
    673
    Danke für die mühe...ein freund hat mir geholfen und das ist dabei rausgekommen

    Das verstehe ich noch:D
    ich bin noch anfänger in pascal...trotzdem danke für deine mühe....ich drück trotzdem gerade deinen quellcode raus zur sicherheit;)
     
  4. sarkastic_one

    sarkastic_one Halbes Megabyte

    Registriert seit:
    4. März 2002
    Beiträge:
    902
    Wer Fehler findet darf sie behalten :p Für ein Ad-Hoc-Proggy war es doch ganz sauber...

    Außerdem ist es ja auch das ein Grundgerüst. :rolleyes: Ein bisserl hättest du schon selber auch aktiv werden können.

    Hier ein korrigierter und compilierfähiger Code:
    Code:
    Program GleichSys;
    uses crt;
    
    type RVar = record
                      a, b, c, d, e, f: real;
                end;
         PVar = ^RVar;
     
         RErg = record
                      x, y: real;
                end;
         PErg = ^RErg;
    
    Function Lese_Variablen_Ein: PVar;
    var v: PVar;
    begin
         new(v);
         write('Variable a: ');
         readln(v^.a);
         write('Variable b: ');
         readln(v^.b);
         write('Variable c: ');
         readln(v^.c);
         write('Variable d: ');
         readln(v^.d);
         write('Variable e: ');
         readln(v^.e);
         write('Variable f: ');
         readln(v^.f);
    
         Lese_Variablen_Ein:=v;
    end;
    
    Function Berechne_Ergebnis(v: PVar): PErg;
    var e: PErg;
        Nenner_helper: real;
    begin
         new(e);
         Nenner_helper:=v^.a*v^.e - v^.b*v^.d;
         if Nenner_helper <> 0 then
         begin
              e^.x:=-(v^.b*v^.f-v^.c*v^.e)/Nenner_helper;
              e^.y:=(v^.a*v^.f-v^.c*v^.d)/Nenner_helper;
              Berechne_Ergebnis:=e;
         end else
              Berechne_Ergebnis:=nil;
    end;
    
    var v: PVar;
        e: PErg;
    begin
         v:=Lese_Variablen_Ein;
         e:=Berechne_Ergebnis(v);
         if e <> nil then
         begin
              writeln('x = ',e^.x:4:6);
              writeln('y = ',e^.y:4:6);
         end else
              Writeln('Gleichungssystem nicht lösbar');
         readln;
    end.
    
     
  5. Spy Secret Agen

    Spy Secret Agen Halbes Megabyte

    Registriert seit:
    19. Oktober 2003
    Beiträge:
    673
    Oh....danke das programm hat zu viele fehler ich kanns nicht starten...muste ein paar sachen eben löschen um es satrten zu können da stand aber nur das ich zwei variablen einegen muss was schon zu wennig ist........ich hoffe mein lehrer wird mir glauben das das von mir was ich nicht glaube:rolleyes:
     
  6. sarkastic_one

    sarkastic_one Halbes Megabyte

    Registriert seit:
    4. März 2002
    Beiträge:
    902
    Übrigens: Das Teil heißt "System linearer Gleichungen mit 2 Unbekannten".
     
  7. sarkastic_one

    sarkastic_one Halbes Megabyte

    Registriert seit:
    4. März 2002
    Beiträge:
    902
    Ist das eine Fangfrage???

    Code:
    Program QuGleich;
    uses crt;
    
    type RVar = record
                       a, b, c, d, e, f: real;
                   end;
            PVar = ^RVar;
    
            RErg = record
                       x, y: real;
                   end;
            PErg = ^RErg;
    
    Function Lese_Variablen_Ein(): PVar;
    var v: PVar;
    begin
             new(v);
             write('Variable a: ');
             readln(v^.a);
             write('Variable b: ');
             readln(v^.b);
    ........
    ........
             Lese_Variablen_Eine:=v;
    end;
    
    Function Berechne_Ergebnis(v: PVar): PErg;
    var e: PErg;
          Nenner_helper: real;
    begin
             new(e);
             Nenner_helper:=v^.a*v^.e - v^.b*v^.d;
             if Nenner_helper <> 0 then
             begin
                      e^.x:=-(v^.b*v^.f-v^.c*v^.e)/Nenner_helper;
                      e^.y:=(v^.a*v^.f-v^.c*v^.d)/Nenner_helper;
                     Berechne_Ergebnis:=e;
             end else
                     Berechne_Ergebnis:=nil;
    end;
    
    var v: PVar;
          e: PErg;
    begin
             v:=Lese_Variablen_Ein();
             e:=Berechne_Ergebnis(v);
             if e <> nil then
             begin
                      writeln('x = ',e^.x:4:6);
                      writeln('y = ',e^.y:4:6);
             end else
                      Writeln('Gleichungssystem nicht lösbar');
    end.
    
     
  8. Spy Secret Agen

    Spy Secret Agen Halbes Megabyte

    Registriert seit:
    19. Oktober 2003
    Beiträge:
    673
    Kann seindas ich das oben nicht richtig erklär habe aber die eine compilierte datei ist richtig wenn man die rechnung mit b wählt, sowas suche ich
     
  9. bitumen

    bitumen Megabyte

    Registriert seit:
    4. Juni 2002
    Beiträge:
    1.952
    Bei "normalen" quadratischen Gleichungen gibts doch nur eine variable! Nämlich X. Ich habe ein proggi für qu. gl. damals in delphi geschrieben.

    [​IMG]

    das auch

    Mit pascal habe ich keine erfahrungen.

    MfG, bitumen
     
  10. Spy Secret Agen

    Spy Secret Agen Halbes Megabyte

    Registriert seit:
    19. Oktober 2003
    Beiträge:
    673
    klick
    Sowas suche ich
    Die datei wurde schon compiliert, den quelltext könnte ich gebrauchen...drück mal b wenn ihr die datei öffnest und nicht a, a brauche ich niicht nur B ist wichtig.
    Genau das suche ich....sogar die gleichen variablen^^
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen