[C/C++] Aufgabe: Was macht "ES"?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Lord_Lye, 6. Februar 2008 .

Schlagworte:
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 6. Februar 2008
    Aufgabe: Was macht "ES"?

    Guten morgen liebe RR'er :)


    Ich hab ein kleines Problem!
    Einer unserer Dozenten hat uns den Quellcode eines kleines Programms gegeben und uns die Frage gestellt WAS es tut, bzw WIE es das tut. Auf die Antowrort gibts ne 1 in der nächsten Arbeit ;)
    Viel mehr kann ich auchnicht dazu sagen und alles was ich darüber weiß sieht jeder von euch auch so auf den ersten Blick. Lediglich das das Programm so nicht compilierbar ist und in einer leichte abwandlung von C geschrieben ist könnte vllt noch hilfreich sein. Ansonsten gehts auch mehr darum das Prinzip zu erkennen nach dem es Arbeitet und rauszufinden was es wenn es lauffähig wäre ausgeben würde und warum.
    Jeder sinnvolle Beitrag bekommt natürlich ne Bedankung.

    Code:
    [hier fehlen Bibliotheken die noch eingefügt werden müssten]
    
    
     main(l
     ,a,n,d)char**a;{
     for(d=atoi(a[1])/10*80-
     atoi(a[2])/5-596;n="@NKA\
     CLCCGZAAQBEAADAFaISADJABBA^\
     SNLGAQABDAXIMBAACTBATAHDBAN\
     ZcEMMCCCCAAhEI9FAEAAABAfHJE\
     TBdFLDAANEfDNBPHdBcBBBEA_AL\
     H E L L O, D O C ! "
     [l++-3];)for(;n-->64;)
     putchar(!d+++33^
     l&1);}
    
    
    
    

    Vielen Dank an alle die sich die Mühe machen mal nen Blick drauf zu werfen :)


    Gruss Lye
     

  2. Anzeige
    Dealz: stark reduzierte Angebote finden.
  3. #2 6. Februar 2008
    AW: Aufgabe: Was macht "ES"?

    Code:
    main(l,a,n,d)
    char**a;
    {
     for (d=atoi(a[1])/10*80-atoi(a[2])/5-596;
     n="@NKACLCCGZAAQBEAADAFaISADJABBA^SNLGAQABDAXIMBAACTBATAHDBANZcEMMCCCCAAhEI9FAEAAABAfHJE TBdFLDAANEfDNBPHdBcBBBEA_AL H E L L O, D O C ! "
     [l++-3];)
     
     for(;n-->64;) putchar(!d+++33^l&1);
    }
    
    also.. da ist ja wirklich sehr viel.. ni direkt funktionstüchtig..
     
  4. #3 6. Februar 2008
    AW: Aufgabe: Was macht "ES"?

    funktionstüchtig schon - old c-style halt :)

    das ding sieht ja schonmal aus wie ne kugel, dann steht da "hello world" - und genau das macht es, es erwartet 2 parameter (mindestens) und "zeichnet" dann eine weltkarte. die beiden parameter sind längen- und breitengrade und werden auf dieser gezeichneten karte markiert.

    außerdem: Ein kleines C Programm für Zwischendurch
    und TBdFLDAANEfDNBPHdBcBBBEA_AL\ - Google-Suche
     
  5. #4 6. Februar 2008
    AW: Aufgabe: Was macht "ES"?

    Jo, hab ich auch schon gesehen, aber die Frage ist halt nicht WAS es macht, sondern WIE es das macht und warum da ne weltkarte rauskommt und nicht irgendwas anderes.



    Gruss Lye
     
  6. #5 9. Februar 2008
    AW: Aufgabe: Was macht "ES"?

    push..

    kann echt niemand sagen wie das jetzt vorgeht?

    würd mich echt ma interessieren, ich blick da 0 durch :]

    mfg
     
  7. #6 10. Februar 2008
    AW: Aufgabe: Was macht "ES"?

    Ich hab das Ganze der Übersichtlichkeit halber mal in c++ umgeschrieben. Vllt hilft's beim Verständnis.
    Code:
    #include <stdlib.h>
    #include <stdio.h>
    
    void main(int argc, char* argv[]) {
     char n;
     int d;
     char* worldmap = "@NKACLCCGZAAQBEAADAFaISADJABBA^SNLGAQABDAXIMBAACTBATAHDBANZcEMMCCCCAAhEI9FAEAAABAfHJE TBdFLDAANEfDNBPHdBcBBBEA_AL H E L L O, D O C ! ";
     for(d = atoi(argv[1])*40 - (atoi(argv[2])*0.2) - 596;
     n = worldmap[argc++ - 3];) {
     for(; n-- > 64;) {
     putchar(
     (!(d++) + (33 ^ (argc&1)))
     );
     }
     }
     getchar();
    }
    Einen kleinen Fehler muss der Code aber noch beinhalten. Durch die beiden Zahlenangaben beim Programmaufruf können "Koordinaten" auf der Karte dargestellt werden; beispielsweise ist 70, -180 die linke obere Ecke, -60, 180 die rechte untere Ecke und 0, 0 die Mitte. Nur leider scheint mein Programm diese Koordinaten nicht darzustellen. Ich versuch mal herauszufinden, warum.

    Weiterhin zur Erläuterung: das letzte "getchar()" dient nur dem Zweck, dass das Programm sich nicht von selbst beendet.

    Edit: omg, Fehler gefunden.
    (n) / 80 * 10 entspricht nicht n * 40, sondern n * 8.
    (Originalzeile:
    Code:
    for (d=atoi(a[1])/10*80-atoi(a[2])/5-596;
    )
    Der richtige Code lautet somit:

    Code:
    #include <stdlib.h>
    #include <stdio.h>
    
    void main(int argc, char* argv[]) {
     char n;
     int d;
     char* worldmap = "@NKACLCCGZAAQBEAADAFaISADJABBA^SNLGAQABDAXIMBAACTBATAHDBANZcEMMCCCCAAhEI9FAEAAABAfHJE TBdFLDAANEfDNBPHdBcBBBEA_AL H E L L O, D O C ! ";
     for(d = atoi(argv[1]) * 8 - (atoi(argv[2]) / 5) - 596;
     n = worldmap[argc++ - 3];) {
     for(; n-- > 64;) {
     putchar(
     (!(d++) + (33 ^ (argc&1)))
     );
     }
     }
     getchar();
    }
    Greetz Roog
     

  8. Videos zum Thema
Die Seite wird geladen...