1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Forum
  1. Informatik Forum
  2. Mitglieder
  3. Plantschkuh!

Beiträge von Plantschkuh!

  • 1
  • 40
  • 41
  • 42
  • 60
  • Parallel Computing?

    • Plantschkuh!
    • 9. Dezember 2007 um 21:53
    Zitat von Saruman

    Soweit ich weiß, ist es ja nicht damit getan, bei der Programmierung einfach auf Multi-Threading zu achten, oder?


    Was heißt "einfach auf Multi-Threading achten"? Üblicherweise gilt auf jeden Fall, daß du explizit um Multithreading bitten mußt. Aber ja, nur weil du N Threads hast, läuft dein Programm nicht gleich um einen Faktor N schneller: Idealerweise sollten deine Threads prozessorlastig sein, weil die Speicherbandbreite recht schnell ausgeschöpft ist. Je weniger Kommunikation/Synchronisation/sonstige Abhängigkeiten, umso besser.

    Zitat

    -) Im Tuwis finde ich keine Lehrveranstaltung zu dem Thema, obwohl es doch zumindest eine Vertiefungs-LVA wert wäre


    Das ist eines von vielen Themen, die Vertiefungs-LVAs wert wären, aber unsere Uni ist leider nun mal so...

    Zitat

    Da ich fürs erste aber auch noch recht viel C++ entwickeln werde, würde mich interessieren, wie ich dabei mehrere CPU-Cores ausnutzen kann.


    Libraries, die den pthreads-Standard implementieren, sind glaub ich so ziemlich überall verfügbar; das ist vielleicht die beste Wahl zur Zeit. (Außer vielleicht Microsoft tut was anderes und hat vor, noch lange was anderes zu tun, und man ist sicher, daß man bestimmt immer explizit nur für Windows entwickeln wollen wird.)

    Ich habe dieses Buch gelesen und ganz brauchbar gefunden, aber wenn man ein bissi herumsucht, werden andere enthusiastischer empfohlen. Auf amazon.de meint z.B. einer: "If you want to write code, get "Programming with POSIX Threads" by David Butenhof." Allerdings meint der auch, daß er es nach dem Nichols-Buch nicht geschafft hat, Programme zu schreiben; ich habe es aber geschafft.

    Es gibt auch noch OpenMP, das in gewissen Hinsichten komfortabler ist, aber spezielle Compiler braucht. Ein coding standard dort, wo ich im Sommer gearbeitet habe, hat davon abgeraten, aber vielleicht ist es einen Blick wert. Ich weiß nicht viel darüber.

    Edit: Naja, und MPI erwähne ich dann auch noch. Ist aber weniger für Multicore und mehr für echt verteilte Cluster und single program multiple data gedacht (sprich numerische Simulationen, unabhängige Bilder rendern könnte man damit sicher auch sehr fein).

  • richtig fette Feuerwand?

    • Plantschkuh!
    • 9. Dezember 2007 um 21:24
    Zitat von RolandU

    Wenn es Probleme gibt, wähle die Nummer 122 gebührenfrei von deinem Handy.


    112

  • In welchem Monat habt Ihr Geburtstag?

    • Plantschkuh!
    • 9. Dezember 2007 um 10:12
    Zitat von JohnFoo

    WTF?


    Der März hat mehr Tage als der April. Zur besseren Vergleichbarkeit wäre es also interessant, die Anzahl der Geburten im März durch 31 und die im April durch 30 zu dividieren, und diese Resultate (Geburten pro Tag im betreffenden Monat) zu vergleichen. Normierung halt.

    Der Februar macht da mal wieder Probleme, aber da kann man wiederum die durchschnittliche Anzahl von Februartagen im Untersuchungszeitraum heranziehen.

  • Dreieck spitzwinkelig

    • Plantschkuh!
    • 7. Dezember 2007 um 17:25

    Der dreiparametrige Konstruktor von Point sollte ziemlich sicher kein dreiparametriger Konstruktor von Point sein, da du ja keinen Punkt konstruierst... Und dasdada:

    Code
    Point(Point a, Point b, Point c) {
        if (b.x < a.x ) {
            this.x = b.x - a.x;
            this.y = b.y - a.y;
        }
        else {
            this.x = a.x - b.x;
            this.y = a.y - b.y;
        }
        ergebnis = Math.sqrt((this.x*this.x)+(this.y*this.y));
    etc...
    Alles anzeigen


    könnte man lesbar auch so irgendwie schreiben:

    Code
    Point(Point a, Point b, Point c) {
        ab = distance(a, b);
        bc = distance(b, c);
        ac = distance(a, c);
    }
    
    
    double distance(Point p, Point q) {
        double dx = p.x - q.x; // es ist egal, ob das negativ ist, wir nehmen ja das Quadrat!
        double dy = p.y - q.y;
        return Math.sqrt(dx*dx + dy*dy); // für diese Operation gibts in neueren Javas auch eine eigene Funktion Math.hypot
    }
    Alles anzeigen


    Die Variablen ab, bc, ac stehen für die jeweiligen Distanzen zwischen den Punkten und sind marginal aussagekräftiger als ergebnis123.

    Ich glaube, Spitzwinkligkeit kann man mit einer Pythagoras-ähnlichen Formel überprüfen: Seien a, b, c die Seitenlängen des Dreiecks, wobei c > a und c > b. Dann ist das Dreieck spitzwinklig genau dann, wenn [tex='a^2 + b^2 &gt; c^2'][/tex]

    . Den Beweis bleibe ich jetzt mal schuldig. Wenn man das so implementiert, dann aber bitte nicht mit einer Fallunterscheidung nach der längsten Seite, sondern: Die Seitenlängen in ein array tun und mittels Arrays.sort() sortieren, das letzte Element ist dann das längste.

  • Rekursion

    • Plantschkuh!
    • 6. Dezember 2007 um 21:54

    Bitte Code immer zwischen [ code ] und [/ code ] schreiben (ohne Leerzeichen), sonst ist er unlesbar, und keiner mag dir helfen. Also:

    Code
    static void up(int zahl) {
        if (zahl > 0) {
            up(zahl-1);
            System.out.print(",");
        }
        System.out.print(zahl);
    }

    Man kann sich einen Funktionsaufruf ganz ganz ganz ganz grob so denken (sprich: tu es nicht), daß man im Körper der aufgerufenen Funktion die Parameter (in diesem Fall die Variable Zahl) durch die Argumentausdrücke (in deinem Fall die Zahl 10) ersetzt. So viel Zeit haben wir jetzt nicht, aber mal sehen, was der Aufruf up(2) tut:

    Code
    static void up(2) {
        if (2 > 0) {
            up(2-1);
            System.out.print(",");
        }
        System.out.print(2);
    }

    2 ist größer als 0, es wird also der Körper des if-Statements ausgewertet, und 2-1 ist 1, also bleibt:

    Code
    static void up(2) {
        up(1);
        System.out.print(",");
        System.out.print(2);
    }

    Den Aufruf up(1) ersetzen:

    Code
    static void up(2) {
        if (1 > 0) {
            up(1-1);
            System.out.print(",");
        }
        System.out.print(1);
        System.out.print(",");
        System.out.print(2);
    }

    1 ist größer als 0 und 1-1 ist 0, also haben wir:

    Code
    static void up(2) {
        up(0);
        System.out.print(",");
        System.out.print(1);
        System.out.print(",");
        System.out.print(2);
    }

    Aufruf up(0) ersetzen:

    Code
    static void up(2) {
        if (0 > 0) {
            up(0-1);
            System.out.print(",");
        }
        System.out.print(0);
        System.out.print(",");
        System.out.print(1);
        System.out.print(",");
        System.out.print(2);
    }
    Alles anzeigen

    Die Bedingung 0 > 0 ist falsch, also fällt der Körper des if-Statements weg. Es bleibt:

    Code
    static void up(2) {
        System.out.print(0);
        System.out.print(",");
        System.out.print(1);
        System.out.print(",");
        System.out.print(2);
    }

    Daß das dann "0,1,2" ausgibt, ist hoffentlich klar :)

    Das ist wie gesagt nicht wirklich das, was der Computer zur Ausführungszeit macht, aber es beschreibt ungefähr die Bedeutung des Programms.

  • hübschen Laptop

    • Plantschkuh!
    • 5. Dezember 2007 um 18:07

    Ein bisserle spät ist er dran: http://derstandard.at/?url=/?id=3100556

  • Office Sprache auf Englisch

    • Plantschkuh!
    • 27. November 2007 um 14:56
    Zitat von mdk

    Ich denke nicht, dass es eine legale Möglichkeit gibt, aus einem (hundertprozentig legal erworbenen) koreanischen Office ein englisches Office zu machen


    Das denke ich jetzt spontan auch nicht, aber...

    Zitat

    und habe daher den Thread einmal mit dem Kommentar "Warez" gemeldet.


    ... wieso das? Wenn die Antwort "das geht legal nicht" ist, dann ist das die Antwort. Er hat nichtmal implizit nach Warez gefragt, sondern die Antwort einfach nicht gewußt.

  • Variante Records

    • Plantschkuh!
    • 26. November 2007 um 20:33

    Der Begriff scheint vor allem in der Pascal-Welt gebräuchlich. Es geht dabei um Records (structs in C), die unterschiedliche Formen annehmen können. D.h. du hast einen Recordtyp, aber abhängig von irgendeinem Flag nimmt er unterschiedliche Formen an. Ein gegoogeltes Beispiel in Pascal:

    Code
    type 
    TPoint = record
      X: Longint;
      Y: Longint;
    end;
    
    
    TRect = record
      case Integer of
        0: (Left, Top, Right, Bottom: Integer);
        1: (TopLeft, BottomRight: TPoint);
      end;
    Alles anzeigen


    Ein TRect hat einen Flag, der angibt, ob die Koordinaten der Eckpunkte einzeln gespeichert sind oder zu Punkten zusammengefasst. Die beiden Darstellungsformen überlappen sich üblicherweise im Speicher.

    Das macht in C sowas:

    Code
    struct point
    {
        long x;
        long y;
    };
    
    
    struct trect
    {
        int flag;
        union
        {
            struct coordinates { int top; int left; int bottom; int right; };
            struct corners { struct point topleft; struct point bottomright; };
        } rect;
    };
    Alles anzeigen

    In Haskell wäre es:

    Code
    type Point = (Integer, Integer)
    data TRect = Coordinates Integer Integer Integer Integer
               | Corners Point Point

    Der Witz an der Sache ist, daß du eben je nach Flag (bzw. Typkonstruktor in Haskell) unterschiedliche Strukturen hast, aber nur einen gemeinsamen "Obertyp". Damit kannst du verwandte, aber verschiedene Strukturen z.B. in einer Liste speichern.

  • Initialisieren von Arrays

    • Plantschkuh!
    • 25. November 2007 um 15:56
    Zitat von sloth

    oder muss ich den gesamten Array vorher erst durch eine Schleife jagen, in der alle Werte auf true gesetzt werden?


    Ja.

    Zitat von Paulchen

    memset?


    Da muß man eine Annahme darüber treffen, welches Bitmuster dem true-Wert entspricht. Die portable Lösung ist wohl sinnvoller.

  • automatischer file-download-dienst?

    • Plantschkuh!
    • 25. November 2007 um 12:13
    Zitat von LexX1

    *ah* -nc


    Sicher? -nc heißt, das File soll nicht runtergeladen werden, wenn du schon so ein File hast. D.h. du wirst dir irgendwann einmal das File holen, und dann wird wget -nc alle fünf Stunden sehen, daß du es eh schon hast, und keine neue Version holen.

    Ich glaube, du solltest eher -N ausprobieren.

  • Pascal (PERMUTATIONEN!!)

    • Plantschkuh!
    • 25. November 2007 um 11:13
    Zitat von Johannes123

    Insbesondere kann ich nicht nachvollziehen, warum die Variablendeklaration (die der Prozedur von I und H) nicht im Prozedurkopf sondern darunter stehen (wann muss ich sie in den kopf schreiben, wann nicht?).


    Du schreibst sie in den Kopf, wenn sie Parameter sein sollen, die beim Aufruf der Prozedur übergeben werden. Die Variablen i und h haben nur innerhalb der Prozedur eine Bedeutung, i als Schleifenzähler und h als Zwischenspeicher beim Vertauschen von zwei Elementen. Deswegen hat es keinen Sinn, sie zu Parametern der Prozedur zu machen, sie sollen ihre Werte innerhalb der Prozedur erhalten und nicht von außen.

    Zitat

    Desweiteren sind mir die Schleifen nicht ganz klar


    Welche Schleife(n)?

    Zitat

    sowie der Dreieckstausch


    Was daran ist dir nicht klar?

    Zitat

    begin
    if k=n then
    begin for i:=1 to n do write(' ',P[i]);
    writeln;
    end
    else
    for i:=k to n do
    begin
    h:=P[i];
    P[i]:=p[k];

    Alles anzeigen


    Bäh. Verwende [code]-Tags um den Code herum und formatiere ihn lesbar.

  • Copyright bei Webseiten

    • Plantschkuh!
    • 25. November 2007 um 10:58
    Zitat von Wings-of-Glory

    [1] Copyright. (2007, November 23). In Wikipedia, The Free Encyclopedia. Retrieved 18:02, November 24, 2007, from http://en.wikipedia.org/w/index.php?ti…ces_in_the_U.S.


    Die Minuten gibst du an, aber die Zeitzone nicht? :)

  • Bandbreitenverlust mit Linksys WRT54GL!

    • Plantschkuh!
    • 24. November 2007 um 17:52
    Zitat von drabber

    Das komische zum Schluss unter der original Frimware von Linksys (WRT54GL_4.30.7_DE_code.bin), hatte ich kurz die volle Bandbreite von ca. 13mbit.


    Vielleicht hast du dich geirrt? Vielleicht bist du per Kabel drangehangen? Vielleicht ist deine WLAN-Karte schuld und nicht der Router?

  • Schluss mit der Unterdrückung der Frauen!

    • Plantschkuh!
    • 22. November 2007 um 19:28
    Zitat von Ivy

    ge bitte, was is schon dabei?


    Wobei? Sich auszuziehen oder sich anzuziehen? :)

  • Sonntags geöffnet!

    • Plantschkuh!
    • 21. November 2007 um 13:08
    Zitat von Stefan Kögl

    Man muss nicht alles verstehen... und trotzdem sollen sich andere Leute auch dran halten?


    Laut der "dieses ist Luxus und gehört abgeschafft, jenes hingegen ist notwendig"-Fraktion ja. Die hat die Definition von Luxus gepachtet.

  • Sonntags geöffnet!

    • Plantschkuh!
    • 21. November 2007 um 10:55
    Zitat von Rageboom

    wasser und strom müssen auch fließen.


    In Privathaushalte? Sag das mal den Leuten, die am Sabbat nichtmal den Lichtschalter umlegen. Für die gehts auch ohne diesen Luxus, da kann es auch für dich ohne diesen Luxus gehen.

    Zitat

    es muss doch möglich sein, mal den ganzen wochenscheiß abzustellen und sich nur und ausschliesslich den sachen zu widmen, die einem taugen und entspannend sind. familie, freunde, usw...


    Ja, das wäre gut. Aber alle hier lassen irgendwen anderen am Wochenende für sich arbeiten (siehe unten), und nur bei Handelsangestellten packt einige das scheinheilige schlechte Gewissen, dabei sind sie nicht weniger sichtbar als Kellner.

    Zitat von MaxAuthority

    1.) Mo-Fr normale arbeitszeit, wo quasi "jeder" arbeiten muss
    2.) Sa eingschraenkt, hauptsaechlich zum einkaufen/im restaurant essen gehen, wozu leute die nach 1.) arbeitszeiten arbeiten einfach nicht so dazukommen


    Gerechtigkeit für alle!!1! Außer ein paar. Naja, du tust wenigstens nichtmal so, als ob es dir um die soziale Frage ginge, sondern bist fest im Klassendenken verankert. Ehrlicher als der Rest hier :)

    Zitat von Dirmhirn

    mit Freunde weggehn,....


    ... in die oben erwähnte Höhle fernab der Zivilisation? Oder in Lokale, wo es so dunkel ist, daß man übersieht, daß da eine Barfrau am Sonntag am Abend ausgebeutet wird?

    Zitat

    Aber was kauft ihr am So? Ganz normal was ihr so braucht, oder wenn etwas ausgeht?


    Mal abgesehen von den Dienstleistungen, die gerne ausgeblendet werden, kauf ich sonntags meist nur was frisches beim Bäcker, und auch nur, wenn ich meine Freundin vom Nachtdienst abhole (Samstag auf Sonntag, 12 Stunden, 4 Euro die Stunde).

  • Sonntags geöffnet!

    • Plantschkuh!
    • 20. November 2007 um 16:43
    Zitat von Dirmhirn

    juhu, geht alle am So einkaufen, vll wird er dann endlich abgeschafft und wir dürfen 7 tage/Woche studieren, arbeiten, lernen.


    Sonntags einkaufen ist nicht böser als sonntags in irgendein Lokal oder ins Kino zu gehen, mit dem Bus oder mit der Bahn zu fahren, Strom und Wasser zu konsumieren, oder darauf zu vertrauen, daß Polizei, Rettung und Feuerwehr für einen da sind.

    Wer sich fürs Wochenende zu Fuß in eine abgelegene Höhle verzieht, werfe das erste Schwein.

  • Problem bei meiner HÜ

    • Plantschkuh!
    • 17. November 2007 um 18:31
    Zitat von kampfhamster

    Länge der Teststrecke in m7500
    Zeit für die Teststrecke (hh:mm:ss)00:43:17
    Wie viel % Leistungsverlust beim Marathon 7

    Als ergebnis sollte das rauskommen:

    Geschätzte Marathonzeit 4 Stunden 21 Minuten 50 Sekunden

    Alles anzeigen


    Nach meiner Rechnung sind es 4:20:33 +/- Rundungsfehler. Hast du auch nachgerechnet?

    Zitat

    u. was heist bei diesem programm modf

    Code
    NAME
         modf - return integral and fractional parts
    
    
    SYNOPSIS
         #include <math.h>
    
    
         double
         modf(double value, double *iptr);
    
    
         float
         modff(float value, float *iptr);
    
    
    DESCRIPTION
         The modf() and modff() break value into integral and fractional parts,
         each of which has the same sign as the argument.  They return the frac-
         tional part, and store the integral part (as a floating-point number) in
         the object pointed to by iptr
    Alles anzeigen


    Da deine Variable alle vom Typ float sind, mußt du modff verwenden (oder die Variablen auf double ändern). Achte auf die Warnungen von deinem Compiler! Er sollte dich darauf hingewiesen haben, daß modf nicht deklariert ist.

  • Peil es nicht

    • Plantschkuh!
    • 15. November 2007 um 09:56
    Zitat von Matt_informatic

    Naja, ich habe nun noch eine Variante in einem C Buch gefunden:

    Code
    void main(void)


    Das ist nicht eine der Formen, die vom C-Standard vorgeschrieben sind. Viele Compiler akzeptieren das, andere nicht, oder sie erzeugen falschen Code. Zum Beispiel kann es sein, daß ein undefinierter Fehlerstatus von deinem Programm zurückgegeben wird. Lies ein Buch, das dir zu void main rät, nicht weiter, denn der Autor weiß nicht genug über C, um das zu wissen; es gibt genug gute Bücher.

    Zitat

    Im moment geht es darum C zu lernen und finde verschiedenes darüber.

    Ist das Compiler abhängig?

    Woher kommt das?

    Oder gibt es verschiedene Versionen von C?


    Es gibt zwei Versionen von C, nämlich C89 (manchmal auch C90 genannt) und C99. (Es gibt sogar noch C95, das ist aber bis auf winzigste Details identisch mit C89.) Allerdings gilt für beide Versionen: Die anerkannten Formen von main sind "int main(void)" und "int main(int argc, char **argv)". (Wobei man "char **argv" auch als "char *argv[]" schreiben kann.) In C89 kann man das int und den Teil in den Klammern weglassen, da ist also auch "main()" erlaubt. Allerdings ist das ein Stil, zu dem seit 20 Jahren nicht mehr geraten wird.

    Compiler dürfen prinzipiell auch andere Formen unterstützen, aber es ist ihre Sache, was sie damit tun. Wenn du auf einen anderen Compiler oder auch nur eine etwas andere Version des selben Compilers wechselst, kann es schon sein, daß dein Programm nicht mehr funktionieren wird!

    Halte dich an den Standard. Es gibt oft sehr sehr gute Gründe, sich nicht an den Standard zu halten, aber die Deklaration von main ist kein Grund.

    Zitat

    Die Programme erstell ich mit dem Dev-C++.


    Achte darauf, daß du den C-Modus verwendest, wie immer das geht. Und möglichst alle Warnungen und Fehlermeldungen einschalten, du willst so viel über dein Programm wissen wie nur möglich.

  • [C] Vector ähnliches Konstrukt

    • Plantschkuh!
    • 15. November 2007 um 09:34

    Ich würde wohl jede Zeile in ein Array von unsigned char lesen und mir dann die einzelnen Felder mit memcpy rauskopieren. Soweit ich die Problemstellung richtig verstehe. Wenn du zur Laufzeit dynamische Typen brauchst, nimmt man üblicherweise ein struct bestehend aus einem enum für den Typen und einer union, wo die Daten drinstehen.

    C
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    
    enum types { INT, FLOAT, CHAR_20 };
    
    
    struct field
    {
        enum types type;
        union
        {
            int i;
            float f;
            char str[20];
        } data;
    };
    
    
    void print_field(struct field *f)
    {
        switch (f->type)
        {
        case INT:
            printf("%d\n", f->data.i);
            break;
        case FLOAT:
            printf("%f\n", f->data.f);
            break;
        case CHAR_20:
            printf("%s\n", f->data.str);
            break;
        default:
            fprintf(stderr, "error: reached default case in switch, %s:%d\n",
                            __FILE__, __LINE__);
            abort();
        }
    }
    
    
    /* demo */
    int main(void)
    {
        struct field my_field;
    
    
        my_field.type = INT;
        my_field.data.i = 42;
        print_field(&my_field);
    
    
        my_field.type = FLOAT;
        my_field.data.f = 3.14159;
        print_field(&my_field);
    
        my_field.type = CHAR_20;
        strcpy(my_field.data.str, "hello, world!");
        print_field(&my_field);
    
    
        my_field.type = 42;
        print_field(&my_field); /* oops */
    
    
        return 0;
    }
    Alles anzeigen
  • 1
  • 40
  • 41
  • 42
  • 60

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English