Zum Inhalt springen

witch doctor

Mitglieder
  • Gesamte Inhalte

    145
  • Benutzer seit

  • Letzter Besuch

Beiträge von witch doctor

  1. Wir haben in Softwaretechnik eine Aufgabe bekommen das Travelling Salesman Problem zu programmieren.

    Das Programm lag als C Programm vor und wir sollten es nach Java portieren.

    Nur da gibt es einige Probleme meinerseits

    1. Ich kann kein C und verstehe den Code nicht.

    Habe mir aber gedacht, dass es halb so schlimm ist.

    Wenn du den Algorithmus verstanden hast wird das schon gehen.

    2. Ich verstehe den Algorithmus nur in der Theorie, aber weiß nicht wie ich ihn umsetzen kann.

    3. Ich muss das Programm abgeben und habe noch keine Zeile Code geschrieben.

    Das Problem läßt sich folgendermaßen beschreiben.

    Wir haben mehrere Städte und ein Handelsvertreter möchte eine Rundreise machen. Diese sollte Kostengünstig verlaufen. Jedes Stadt (bis auf die Start-Stadt) darf nur einmal vorkommen.

    Eine Lösung wäre sicherlich durch die ganzen durchzupermutieren. Nur wie realisiere ich das in Java??? Ich habe ehrlich keinen Plan.

    Die Städte habe ich in einem Array abgelegt und die Entfernungen in einem 2-dimensionalen Array.

    Theoretisch würde man ja so vorgehen. Man nimmt zuerst die erste Stadt und permutiert dort durch, also so:

    a b c

    a c b

    b a c

    b c a

    c a b

    c b a

    Damit es aber eine Rundreise wird muss natürlich die Start-Stadt gleichzeitig auch die End-Stadt sein. Nur wie bekomme ich diese Permutation hin und wie speicher ich dann die Entfernungen ab und vergleiche sie??

    Den C-Code könnt ihr übrigens hier herunterladen.

  2. Also wie würdet ihr folgende Aufgabe lösen:

    Stellen Sie sicher, dass nach dem Löschen eines Tupels aus der Tabelle orders immer noch mindestens 100 Einträge vorhanden sind.

    Also erst dachte ich an einen Trigger, jedoch musste ich herausfinden, als ich die Abfrage in Oracle ausprobiert habe, dass dort Unterabfragen nicht erlaubt sind. Ich hatte es folgendermaßen:

    
    create trigger deltriggere before delete
    
    on orders
    
    for each row when((select count(*) from test)>=10)
    
    raiseErr('7003','Invalid Delete');
    Dann sagt mir Oracle folgendes: FEHLER in Zeile 3: ORA-02251: Unterabfrage hier nicht zulässig Ok, sagte ich mir im Skript hast du doch etwas über die create assertion Anweisung gelesen und da konnte man laut Skript Subqueries einbauen. Also habe ich folgendes geschrieben:
    
    create assertion deltupel
    
            check((select count(*) from test)>=10);
    Laut Prof wäre das auch richtig, nur das dumme ist, Oracle kennt dieses Statement nicht. Dann dachte ich mir, man könnte es in das create table statement mit Hilfe einer Check Klausel einbauen, aber auch da kennt er keine Subqueries.
    
    create table test
    
    ( testid  int,
    
       testname  varchar(20),
    
       testcity       varchar(20),
    
       primary key(testid),
    
         check((select count(*) from test)>=10));
    
    

    Doch auch hier meckert Oracle und sagt, dass keine Unterabfragen erlaubt seien. Hat jemand eine Idee. Also in der Klausur darf ich ruhig create assertion schreiben, aber mich würde schon interessieren, was ich mache, wenn dieses Statement nicht unterstützt wird. Ach ja, es handelt sich um Oracle 8i.

  3. Bei mir will die Java Virtuelle Maschine nicht mehr. :(

    Starte ich die eclipse Programmierumgebung (bzw versuche es) sagt er dass das JDK oder JRM nciht installiert. Er sucht aber im eclipse Pfad!!

    Ich habe aber das komplette Java Paket installiert und eclipse funktionierte auch. Habe schließlich schon paar mal darunter programmiert. Nur jetzt ganz plötzlich, obwohl ich nichts verändert habe. Ich habe beides auch schon deinstalliert und neu installiert, aber nichts!! Er sagt weiterhin es wäre nicht schlecht. Dabei brauche ich das jetzt unbedingt für die Prüfungen. Arg, ich bin schon richtig am verzweifeln. Und Windows neu installieren habe ich gar keine Zeit und Lust zu, da ich schon genug anderes zu tun habe.

    Kennt jemand denn das Problem und kann mir helfen??

  4. Habe jetzt das richtige Ergebnis. Besser ist es nämlich den Exists Operator zu verwenden und in dieser Subquery den Verbund herzustellen.

    Also habe ich es jetzt so und Oracle meckert nicht:

    
    
    select distinct c.cname,sum(dollars)
    
    from  customers c, orders o
    
    where not exists(select *
    
                      from orders o
    
                      where o.month = 'mar' and
    
                            o.cid = c.cid)
    
                            group by c.cname
    
                                                     intersect
    
    
    select distinct c.cname,sum(dollars)
    
    from  customers c, orders o
    
    where not exists(select *
    
                      from orders o
    
                      where o.month = 'jan'
    
                      and   c.cid = o.cid)
    
                      group by c.cname;

    Trotzdem verstehe ich die blöde Fehlermeldung von Oracle nicht. ;) Na ja...

    Wieso funktionierte das ganze denn nicht mit dem Ungleich-Operator? Dort hatte ich doch auch einen Verbund hergestellt.

  5. Ich habe folgendes Problem.

    Starte ich in Oracle 8i folgende Abfrage im SQL Worksheet, sagt mir das Programm, dass es den Befehl intersect nicht gibt. Ich habe diesen Befehel aber schon öfters benutzt, nur plötzlich sagt mir das Programm, dass es diesen Befehl nicht kenne.

    Hier ist mal der SQL Code

    
    (select distinct c.cname,sum(dollars) as Umsatz, o.month
    
    from  customers c, orders o
    
    where o.cid=c.cid
    
    group by c.cname, o.month
    
    having o.month<>'mar')
    
    
    intersect
    
    
    (select distinct c.cname,sum(dollars) as Umsatz, o.month
    
    from  customers c, orders o
    
    where o.cid=c.cid
    
    group by c.cname, o.month
    
    having o.month<>'jan');

    Oder ist da syntaktisch was falsch. Ich weiß wirklich nicht weiter.

    SP2-0042: Unbekannter Befehl "intersect" - restliche Zeile wurde ignoriert.

    Obwohl der Januar wurde "weggeschnitten". Aber irgendwie finde ich das komisch.

  6. Ok. aber ich würde schon gerne die Formeln erläutert bekommen. Ich verstehe wirklich null und Informatik (also Grundlagen der Informatik) habe ich mit 2,7 abgeschlossen.

    Auch kann ich was mit Collections anfangen. Ich komme nur mit den Formeln nicht klar, wofür was gut ist und das ist nirgends wirklich gut erklärt und unser Prof hat es auch nicht wirklich gut behandelt (ich würde schon fast sagen gar nicht). Ich darf mir wirklich alle Infos irgendwie aus dem Internet besorgen. In Büchern habe ich es auch nirgends gefunden.

    Also ich bin wirklich am Verzweifeln.

    Das ist übrigens das Fach bei uns, wo eine Durchfallquote von 80% herrscht, weil keiner irgendwie Ahnung davon hat. :(

    Ach ja und kann mir einer sagen, wofür die Laplace Transformation gut sein soll (dürfen wir uns auch irgendwie selbst beibringen... wir kennen nur wirtschaftsmathe, da ja auch Wirtschaftsinformatik).

  7. Wir haben Grundlagen in Java. Wir hatten es 2 Semester lang. Weiß nicht, ob das reicht... (GUI etc bspw hatten wir nicht)

    Na ja...also ich habe im Internet auch Unterlagen gefunden, aber schon alleine wenn ich die Formeln sehe, werde ich verrückt. WIr dürfen es uns ja alles selbst beibringen (ich sage euch, dass ist hart).

  8. Nein, wenn das so läuft können wir natürlich auf die Bibliothek zurückgreifen. Es geht ja nur um das Prinzip, wie das läuft. Es geht ja im Grunde darum wie ein Betriebssystem vorgeht. Und wenn man das so machen kann, mache ich das so. Nur wie speicher ich die Zeit?

  9. Ich denke er meinte das so:

    Verweildauer: Wie lange jedes Objekt im Speicher verweilt.

    Wartezeit: Wie lange jedes Objekt wartet, bis es dran ist. Es wartet ja nicht jedes Objekt gleich lange, denke ich.

    Öhm eine verlinkte Liste ist doch was anderes als eine Warteschlange oder??

  10. Im Fach Betriebssysteme sollen wir eine Warteschlange in einer Sprache unserer Wahl programmieren. Da ich nur Java gelernt habe, ist es klar, dass ich diese Sprache wähle.

    Die Aufgabenstellung ist folgende:

    Programmieren sie eine Warteschlange (zB bildlich eine Autowaschanlage). Es soll die Wartezeit und die Verweildauer festgehalten werden.

    Mein Problem: Ich weiß nicht mal wie ich anfangen soll.

    Ok, das mit der Warteschlange an sich sollte ja kein Problem sein (es gibt ja wunderschöne Algi Bücher und ich glaube in meinem Java Buch steht glaube ich sogar ein Beispiel (Krueger)). Nur wie halte ich die Zeit fest??? Und mit was für Werte soll ich die Schlange füllen. Wie mache ich das mit der Verweildauer??? Und mit der Wartezeit???

  11. Ist das auch folgendes:

    Ich definiere in der Oberklasse eine Methode print().

    Davon leite ich eine Klasse ab und definiere dort auch eine Methode print(), die die jeweilige print-Operation für diese Klasse ausführt. Im Hauptprogramm führt (durch die späte Bindung) weiß der Compiler welche Methode er nehmen muss. Kann man das auch unter Polymorphie verstehen?

    Ich meine durch diese Vielgestaltheit entsteht doch eine Polymorphie (daher ja der Name). Ist ja wie ein Brief ohne expliziten Empfänger, sondern nur einem Postfach. Wer genau die Post abholt wissen wir nicht. Erst in der Laufzeit erfahren wir wer die Post bekommt.

  12. Hi,

    ich habe als Aufgabe ein Programm zu schreiben, welches ein mehrdimensionales Array beinhaltet (100x100). Es soll das Maximum aller Zeilen und spaltensummen ermittelt und zusammen mit der Zeilen-/Spaltennummer ausgeben.

    Ich weiß gerade mal wie man ein mehrdimensionales Array deklariert und evtl füllt, aber wie zum Teufel summiere ich die Zeilen und Spalten und suche dann noch das Maximum und gebe dann noch die Zeilen bzw Spaltenzahl aus. :confused:

    Ich weiß nicht mal einen Ansatz. :(

  13. Ach so! Beim näheren Nachdenken und dem Aufzeichnen einer Zahlenreihe wurde es mir klar! Danke!!

    Wie sähe das denn iterativ aus? Würde das dann mit einer while-Schleife gelöst werden?

    
    while(lo<high)
    
           {
    
                teile und tausche
    
             }
    
    

  14. Ich habe hier ein Java Programm, welches den Quicksort ausführt.

    Ich habe dazu mal eine kleine Frage. Aber zunächst erstmal das Programm.

    
    package quicksort;
    
    public class quicksorter
    
    {
    
        private int[] a;
    
        public void sort(int[] a0)
    
        {
    
            a=a0;
    
            quicksort(0, a.length-1);
    
        }
    
        private void quicksort (int lo, int hi)
    
        {
    
            int low=lo, high=hi;
    
            int x=a[(lo+hi)/2];
    
            //  Aufteilung
    
            while (low<=high) //Zeiger haben sich noch nicht getroffen
    
            {    
    
                while (a[low]<x) low++; 
    
                while (a[high]>x) high--;
    
    
                if (low<=high)
    
                {
    
                    exchange(low, high); //ruft Tauschfunktion auf
    
                    low++; high--;
    
                }
    
            }
    
            // Rekursion
    
            if (lo<high) quicksort(lo, high);
    
            if (low<hi) quicksort(low, hi);
    
        }
    
    
        private void exchange(int i, int j) //Tauschfunktion
    
        {
    
            int t=a[i];
    
            a[i]=a[j];
    
            a[j]=t;
    
        }
    
    }    // end class QuickSorter
    
    

    Eigentlich verstehe ich nur folgende Programmzeile nicht:

    if (lo<high) quicksort(lo, high);

    if (low<hi) quicksort(low, hi);

    Wieso einmal lo<high und low<hi???

    Ich hoffe ihr könnt mir helfen.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...