sehr verzweifelt bin, bitte helfen
Results 1 to 18 of 18

Thread: sehr verzweifelt bin, bitte helfen

  1. #1

    Title
    Master
    Join Date
    Apr 2002
    Posts
    146
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Unhappy sehr verzweifelt bin, bitte helfen

    ich verzweifel noch ich such jetzt schon seit stunden den fehler und find ihn nicht , das programm sollte wenn man statt einem int einen andren datentyp eingibt ein ? ausgeben, und wenn der int <4 oder>2 ist ein falsche ausgabe eingeben,
    komischerweise gibt es aber wenn man ein a eingibt beides aus: ? und falsche ausgabe,
    hier der link zum code http://members.chello.at/chiara.wien
    wär über schnelle hilfe sehr dankbar

  2. #2

    Title
    Principal
    Join Date
    Apr 2002
    Posts
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Hallo!

    Ich denke, der Fehler liegt bei Deiner Klammersetzung! Das "Falsche Eingabe" wird durch das 2. println("FALSCHE EINGABE"); in der vorletzten Zeile ausgegeben. Das liegt daran, dass sich diese Zeile nicht in dem Else-Zweig befindet!!

    Dieser Else-Zweig besteht also nur aus dem Try-Block, indem Du die Seitenlängen einließt, dieser wird also bei einer falschen eingabe nicht ausgeführt, wodurch die Initialwerte in den Variablen stehen, die dann natürlich die Ausgabe "Falsche Eingabe" produzieren!!

    Noch eine Anmerkung zum Stil!

    Die Fehlersuche stellt sich etwas schwierig, wenn man die Blöcke so schreibt.
    Man kann leicht solche Fehler verhindern, in dem man Klammern setzt, egal ob nur eine oder mehrere Anweisungen in diesem Block stehen:
    Code:
    try 
    {  
        anzahld = readInt(); 
    }
    catch(EprogException e) 
    {
        keinint=true;
    }
    if(keinint) 
    {
        println("?"); 
    }
    else 
    {
        if( anzahld<2||anzahld>4) 
        {
            println("FALSCHE EINGABE");
        }
        else 
        {
            try
            {
                 a1 =readFloat(); b1=readFloat(); c1=readFloat();
                 a2=readFloat();  b2=readFloat(); c2=readFloat();
            }
            catch(EprogException e)
            {
                keinefloat=true;
            }
            if(keinefloat) 
            {
                println("?");
            }
            else 
            {
                 if( a1>30 ||a1<0.4 || b1>30 || b1<0.4 || c1>30 ||c1 <0.4||
                     a2>30 ||a2<0.4 || b2>30 || b2<0.4 || c2>30 || c2<0.4)
                 {
                    println("FALSCHE EINGABE");
                 }
                 else 
                 {
                     println("ok");
                 }
             }
         }
    }
    Hier habe ich den Fehler schon ausgebessert! Mann erkennt gleich auf den ersten Blick, die Strucktur des Programmes, und Fehler können sich auch nicht so leicht einschleichen!
    Es wäre auch vorteilhaft, die Seitenlängen kompakt in ein Feld zusammen zu fassen, und die abfrage der gültigkeit der Eingabe über eine Schleife zu Bewerkstelligen!! Würde nur noch eine zusätzliche boolesche Variable kosten, die anzeigt, ob ein ungültiger Wert vorliegt. Diese Variable wäre auch gleich Voraussetzung für meine nächste Idee! Die ausgaben sind so dezentral, die gleiche Ausgabe kommt mehrmals vor. Wie wäre es, wenn man in einer einzigen Prozedur durch auswertung der Booleschen Variablen feststellt, ob es ein Fehler aufgetretten ist oder nicht und dann dort entscheidet ob man nun en "?", "FALSCHE EINGABE" oder das Ergebnis ausgibt!!

    Hätte einige vorteile! Überlegs Dir mal! Wenn dass Programm größer wird, und Du durcheinander ausgaben hast und auf Fehlersuche gehst, hast Du mit Deinem Stil sicher ein paar Probleme mehr!!!

    mfg, Seg

  3. #3
    nix_is's Avatar
    Title
    Master
    Join Date
    Feb 2002
    Location
    Vienna
    Posts
    157
    Thanks
    0
    Thanked 0 Times in 0 Posts
    es is auch immer gscheit klammernblöcke zu machen.. also nicht einfach
    Code:
    if(blabla)blabla;
    sonderen eher
    Code:
    if(blabla)
    {
        blabla
    }
    zumindest hat man mehr übersicht und kommt schneller auf solche probleme drauf...
    Give a man a fish and he'll eat it for the day.
    Teach him how to fish and he will eat for the rest of his life...

  4. #4

    Title
    Master
    Join Date
    Apr 2002
    Posts
    146
    Thanks
    0
    Thanked 0 Times in 0 Posts
    vielen dank

    ich werd versuchn ab jetzt klammern zu setzen.
    ich hab sie in dem prog weggelassen, weil ich mich nicht ganz auskenn was man unklammert, weiss nur dass nach if () wenn mehrere anweisungen kommen {} stehen müssen und wenn nur 1 anweisung kommt {} stehen dürfen..
    eins hab ich vergessen die angabe muss ja vollständig eingelesen werden also man sollte nicht nach dem ersten zeichen schon enter drücken dürfen, zb.: nach dem falschen e,
    das is aber noch möglich, wie könnt ich das ändern?
    Last edited by girl; 06-05-2002 at 13:16.

  5. #5

    Title
    Master
    Join Date
    Apr 2002
    Posts
    146
    Thanks
    0
    Thanked 0 Times in 0 Posts
    ich hab jetzt 3 weitere zeilen programmiert und das prog läßt sich nicht mehr kompelieren, ich such schon 1 h nach dem fehler, aber mir scheint alles richtig


    code is wieder auf http://members.chello.at/chiara.wien
    wär wiedermal sehr dankbar wenn mir wer den fehler sagen könnte
    Last edited by girl; 06-05-2002 at 17:52.

  6. #6
    Wings-of-Glory's Avatar
    Title
    CO-Administrator
    Join Date
    Jan 2002
    Posts
    3,964
    Thanks
    308
    Thanked 480 Times in 253 Posts
    PHP Code:
    import eprog.*;
    public class 
    Edit extends EprogIO 
    {
    public static 
    void main(String[] argsthrows EprogException
    {


    int anzahld=;
    boolean keinintfalse;
    float a1=0b1=0c1=0
          
    a2=0b2=0c2=0,
          
    a3=0b3=0c3=0,
          
    a4=0b4=0c4=0;
    boolean keinefloatfalse;


    try 
    {
      
    anzahld readInt(); 
    }

    catch(
    EprogException e) {keinint=true;}
    if(
    keinint
    {
        
    println("?"); 
    }

    else if( 
    anzahld<2||anzahld>4
    {
        
    println("FALSCHE EINGABE");
    }

    else 
    {

        try
        {
    a1 =readFloat(); b1=readFloat(); c1=readFloat();
         
    a2=readFloat();  b2=readFloat(); c2=readFloat();}
         catch(
    EprogException e)
         {
    keinefloat=true;}
         if(
    keinefloat
         {
         
    println("?");
        }
     
         else if ( 
    a1>30 ||a1<0.4 || b1>30 || b1<0.4 || c1>30 ||c1 <0.4||
                      
    a2>30 ||a2<0.4 || b2>30 || b2<0.4 || c2>30 || c2<0.4)
         {
         
    println("FALSCHE EINGABE");
        }
         else if   
                (    (
    c1*c1)==((a1*a1)+(b1*b1)) && ((c2*c2)==((a2*a2)+(b2*b2)) &&(c1==c2) )   // HIER FEHLTE EIN ')'                        )
                
                 
         
    {
         
    println("J");
         }
         else
         {
             
    println("N");
             }
    }
    }

    Otto: Apes don't read philosophy. - Wanda: Yes they do, Otto, they just don't understand
    Beleidigungen sind Argumente jener, die über keine Argumente verfügen.
    «Signanz braucht keine Worte.» | «Signanz gibts nur im Traum.»


    Das neue MTB-Projekt (PO, Wiki, Mitschriften, Ausarbeitungen, Folien, ...) ist online
    http://mtb-projekt.at

  7. #7
    nix_is's Avatar
    Title
    Master
    Join Date
    Feb 2002
    Location
    Vienna
    Posts
    157
    Thanks
    0
    Thanked 0 Times in 0 Posts
    wie lautet die fehlermeldung?
    oder funktionierts eh schon mit wing's proggie?
    zufaul zum kompilieren *g*
    Give a man a fish and he'll eat it for the day.
    Teach him how to fish and he will eat for the rest of his life...

  8. #8

    Title
    Master
    Join Date
    Apr 2002
    Posts
    146
    Thanks
    0
    Thanked 0 Times in 0 Posts
    danke schön daran lags )
    aber langsam hauts mich auf
    beim einlesen von 4 dreiecken müsst ich wenn ich weiter mit schleifen arbeite ca 40 schleifen oder so machen um alle möglichen fälle abzudecken, bis jetzt gings nur mit schleifen zu arbeiten aber ich glaub jetzt brauch ich eine neue methode..

    weiss vielleicht wer wie ich jetzt am besten weitermachen könnte ?


    aktueller code http://members.chello.at/chiara.wien
    Last edited by girl; 06-05-2002 at 23:13.

  9. #9
    AntiBit's Avatar
    Title
    Super Moderator
    Join Date
    Feb 2002
    Location
    Wien
    Posts
    738
    Thanks
    0
    Thanked 6 Times in 3 Posts
    Wie meinst du das??

    Könntest ja vielleicht mal die Spez. uploaden, damit man sich ein Bild machen kann von deiner Aufgabe.

    Grüsse, AntiBit
    Hätten uns Spiele wie Pac-Man in unserer Jugend beeinflusst, würden wir heute durch dunkle Räume irren, elektronische Musik hören und Pillen fressen.

  10. #10

    Title
    Master
    Join Date
    Apr 2002
    Posts
    146
    Thanks
    0
    Thanked 0 Times in 0 Posts
    siehe oberen beitrag

  11. #11
    nix_is's Avatar
    Title
    Master
    Join Date
    Feb 2002
    Location
    Vienna
    Posts
    157
    Thanks
    0
    Thanked 0 Times in 0 Posts
    i glaub mit schleifen meinst du die bedingungen, oder? (if, else)
    das kannst du ganz einfach mit case anweisungen machen...
    beispiel:
    mit if:
    Code:
    if(anzahl==1) 
    {
    //balbla1
    }
    else if(anzahl==2)
    {
    //blabla2
    }
    else if(anzahl==3)
    {
    //blabla3
    }
    usw
    mit case:
    Code:
    switch(anzahl)
    {
    1://blabla1
    break;
    2://blabla2
    break;
    3://blabla3
    break;
    default:
    //anweisung falls ncihts zutrifft
    break;
    }
    ich hoff das war eh was du wissen wolltest und ich hab ned zuviel scheiß geschrieben der eh niemanden interessiert...
    Give a man a fish and he'll eat it for the day.
    Teach him how to fish and he will eat for the rest of his life...

  12. #12

    Title
    Master
    Join Date
    Apr 2002
    Posts
    146
    Thanks
    0
    Thanked 0 Times in 0 Posts
    nein das hab ich nicht gemeint
    ich hab gemeint dass ich mein ganzes programm bis jetzt mit ifs und elsen erstellt hab, weil ich mich mit was andrem ned auskenn..
    nur komm ich jetzt mit den schleifen nimma weiter und brauch etwas anderes...
    es geht um das beispiel dreieck.java
    und mit den progs von sourceforge kann i leida nix anfangen

  13. #13

    Title
    Principal
    Join Date
    Apr 2002
    Posts
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Hab das Programm letztes Semester auch bekommen, und habe mich das selbe gefragt.

    Habe dann ein Verfahren entwickelt, das eigentlich sehr gut gefunkt hat, aber da ich etwas vergessen habe , nicht ganz korrekt war.

    Folgendes Prinzip:
    Du berechnest die Flächen der Dreiecke und summierst diese, also hast Du die Fläche des möglichen Quadrats bzw. der Raute
    daraus berechnet man sich die Seitenlänge von Quadrat bzw. Seitenlängen der Raute. Nun sucht man die Aussenseiten des Quadrates bzw. Raute unter den Seitenlängen der Dreiecke, sind diese vorhanden müssen sich die restlichen Seitenlängen gegenseitig aufheben, da Dreieck an Dreieck liegen muss.
    Heben sich die restlichen Dreiecke alle auf, so ist es möglich ein Quadrat bzw. eine Raute aus den gegebenen Dreiecken aufzubauen.

    Folgende Punkte sollten noch beachtet werden:
    Raute entsteht nur aus 4 Dreiecken.(mein Fehler)
    Seitenlängen, sei es für aussenseiten oder für innere Seiten, bestehen öfters aus zwei Dreiecksseiten!
    Für die Berechnung der Rautenseitenfläche benötigt man noch einen Winkel zwischen zwei Seiten der Raute. Dieser Winkel ist entweder ein Winkel aus einem Dreieck oder die Summer zweier Winkel aus zwei verschiedenen Dreiecken!

    mfg, René

  14. #14

    Title
    Master
    Join Date
    Apr 2002
    Posts
    146
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Nun sucht man die Aussenseiten des Quadrates bzw. Raute unter den Seitenlängen der Dreiecke

    und wie macht man das, wieder mit if schleifen?oder gibst da eine methode ?

    Seitenlängen, sei es für aussenseiten oder für innere Seiten, bestehen öfters aus zwei Dreiecksseiten!

    und wie findet man das heraus?

  15. #15

    Title
    Principal
    Join Date
    Apr 2002
    Posts
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts
    jeder Algorithmus besteht irgendwie aus if-Abfragen, die wird man nicht los! Schleifen und Abfragen sind die Basis für ein Programm. Diese einfachen Strukturen gibt es in jeder Programmiersprache! Ich verstehe Deine Frage nicht ganz, wenn Du keine Abfragen machst, dann wird Dein Programm immer wieder das selbe machen, ohne die Daten zu analysieren!!

    Du hast Dir die Aussenseite des Quadrates ausgerechnet und vergleichst diese Länge mit den Seiten vom Dreieck! Sind sie gleich lang (unter berücksichtigung der Genauigkeit) hast Du eine Seite gefunden!!

    Finden von zusammengehörige Seiten:

    Bei zusammen gesetzten Aussenseiten von einem Quadrat bzw. Rhombus geht man so vor:
    Gegeben ist die seitenlänge a
    Nun sucht man unter den Dreiecken alle Seitenlängen, die gleich lang der geg. Seitenlänge sind.

    hat man weniger als die vier Aussenseiten gefunden, geht man dazu über Seiten von zwei verschiedenen Dreiecken zu kombinieren und diese mit der länge der geg. Seitenlänge zu vergleichen!

    Bei vergleichen von inneren Seitenlängen muss man etwas aufpassen, da man hier Prioritäten setzen muss. Es besteht die möglichkeit, dass man zwei gleiche Seiten eleminiert, diese jedoch zusammengesetz für eine dritte große Seitelänge zur Elimination gebraucht werden, nicht auf das richtige Ergebnis kommt. Deshalb sollte man mehrer Möglichkeiten per Hand durchgehen!!

    Zur Umsetzung bieten sich Felder an, so habe ich es gelöst, da ich mich damals noch nicht so ganz in OOP auskannte

    mfg,Seg
    Last edited by Seg; 07-05-2002 at 15:22.

  16. #16

    Title
    Master
    Join Date
    Apr 2002
    Posts
    146
    Thanks
    0
    Thanked 0 Times in 0 Posts
    ich weiss weder was oop is noch wie man felder macht
    is auch noch nicht in der vo vorgekommen soweit ich mich erinnere

  17. #17

    Title
    Principal
    Join Date
    Apr 2002
    Posts
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Du solltest Dich ein wenig in das Java2 Buch einlesen oder eine Toturial durchmachen, damit die Grundbegriffe, wie Schleifen, Abfragen, Methoden, Klassen, Objekte oder Felder sitzen

    Gut gemeinter Rat, den ohne Programmiererkenntnisse ist es schwerr!!
    Last edited by Seg; 08-05-2002 at 08:03.
    Der klügere gibt nach! Dieser Spruch begründet die Herrschaft der Dummheit!!

  18. #18
    AntiBit's Avatar
    Title
    Super Moderator
    Join Date
    Feb 2002
    Location
    Wien
    Posts
    738
    Thanks
    0
    Thanked 6 Times in 3 Posts
    OOP heisst Objekt-Orientiertes Programmieren. Das heisst: Mehrere Klassen verwenden und Objekte durch Konstruktoren erzeugen.

    Mit Felder meinst du schätzomativ Arrays, oder? Wie mein Vorgänger schon gesagt hat, du solltest dir dringend ein (für Anfänger gut geeignetes) Buch besorgen, denn ohne dem ist das für nen Neuling fast unmachbar. Und die EPROG-Folien bzw. deren supertolles """Skriptum""" sind auch nur begrenzt bis gar nicht zu gebrauchen.

    Mit einem guten Buch sollte dann einiges klarer werden
    Hätten uns Spiele wie Pac-Man in unserer Jugend beeinflusst, würden wir heute durch dunkle Räume irren, elektronische Musik hören und Pillen fressen.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •