Arrays von Strukturen und ein Absturz kommt...



  • warum schmiert mir dieses Ding ständig mit ner Schutzverletzung ab?

    -schnipp---------------
    #include <stdio.h>
    #include <vga.h>
    #include <math.h>

    struct linklist
    {
    int a;
    int b;
    };
    struct point3d
    {
    double x;
    double y;
    double z;
    };

    int main(void)
    {

    int i;
    char c;

    struct point3d points[4];
    struct point3d points2[4];

    struct point3d center;
    struct linklist linkedpoints[8];

    linkedpoints[0].a=0;
    linkedpoints[0].b=1;

    linkedpoints[1].a=0;
    linkedpoints[1].b=4;

    linkedpoints[2].a=0;
    linkedpoints[2].b=2;

    linkedpoints[3].a=1;
    linkedpoints[3].b=5;

    linkedpoints[4].a=1;
    linkedpoints[4].b=3;

    linkedpoints[5].a=4;
    linkedpoints[5].b=5;

    linkedpoints[6].a=7;
    linkedpoints[6].b=5;

    linkedpoints[7].a=3;
    linkedpoints[7].b=7;

    linkedpoints[8].a=2;
    linkedpoints[8].b=3;

    linkedpoints[9].a=2;
    linkedpoints[9].b=6;

    linkedpoints[10].a=6;
    linkedpoints[10].b=7;

    linkedpoints[11].a=6;
    linkedpoints[11].b=4;

    points[0].x=-412;
    points[0].y=-50;
    points[0].z=+50;

    points[1].x=+412;
    points[1].y=-50;
    points[1].z=+50;

    points[2].x=-412;
    points[2].y=+50;
    points[2].z=+50;

    points[3].x=+412;
    points[3].y=+50;
    points[3].z=+50;

    center.x=(1024)/2;
    center.y=100+50;
    center.z=0.5;

    /*
    p[4] p[5]
    v v
    /---------/
    p[0] > /_________/| p[1]
    | | |
    p[6] >| _______ | / p[7]
    |/---------/
    p[2] ^ p[3]^
    */
    // ------------------------------------------
    points[4].x=-412;
    points[4].y=-50;
    points[4].z=-50;

    points[5].x=+412;
    points[5].y=-50;
    points[5].z=-50;

    points[6].x=-412;
    points[6].y=+50;
    points[6].z=-50;

    points[7].x=+412;
    points[7].y=+50;
    points[7].z=-50;

    int count2;
    for (count2=0;count2<8;count2++)
    {
    points2[count2]=points[count2];
    }

    /*
    if (vga_init()) return 1;
    if (vga_setmode(G1024x768x256)) return(1);

    vga_setpalette(200,255,255,255);
    vga_setpalette(199,255,0,0);
    */

    int grad;
    grad=0;

    do
    {
    /*
    vga_clear();

    vga_setcolor(200);
    */

    int count3;
    for (count3=0;count3<11;count3++)
    {
    vga_drawline((points2[linkedpoints[count3].a]).x,
    (points2[linkedpoints[count3].a]).y,
    (points2[linkedpoints[count3].b]).x,
    (points2[linkedpoints[count3].b]).y
    );
    }
    // ^^^^Hier liegt der Hase im Pfeffer hab ich rausgefunden aber
    // warum kann ich das nicht so deklarieren???

    /*
    vga_drawline(center.x + points2[0].x*points2[0].z*(1/50),center.y+points2[0].y*points2[0].z*(1/50),center.x+points2[1].x*points2[1].z*(1/50),center.y+points2[1].y*points2[1].z*(1/50));
    vga_drawline(center.x + points2[0].x*points2[0].z*(1/50),center.y+points2[0].y*points2[0].z*(1/50),center.x+points2[2].x*points2[2].z*(1/50),center.y+points2[2].y*points2[2].z*(1/50));

    vga_drawline(center.x + points2[1].x*points2[1].z*(1/50),center.y+points2[1].y*points2[1].z*(1/50),center.x+points2[3].x*points2[3].z*(1/50),center.y+points2[3].y*points2[3].z*(1/50));
    vga_drawline(center.x + points2[2].x*points2[1].z*(1/50),center.y+points2[2].y*points2[2].z*(1/50),center.x+points2[3].x*points2[3].z*(1/50),center.y+points2[3].y*points2[3].z*(1/50));

    // ----------------------------------------------------------
    vga_setcolor(199);

    vga_drawline(center.x + points2[0].x*points2[0].z*(1/50),center.y+points2[0].y*points2[0].z*(1/50),center.x+points2[4].x*points2[4].z*(1/50),center.y+points2[4].y*points2[4].z*(1/50));
    vga_drawline(center.x + points2[4].x*points2[4].z*(1/50),center.y+points2[4].y*points2[4].z*(1/50),center.x+points2[5].x*points2[5].z*(1/50),center.y+points2[5].y*points2[5].z*(1/50));

    vga_drawline(center.x + points2[1].x*points2[1].z*(1/50),center.y+points2[1].y*points2[1].z*(1/50),center.x+points2[5].x*points2[5].z*(1/50),center.y+points2[5].y*points2[5].z*(1/50));
    vga_drawline(center.x + points2[2].x*points2[2].z*(1/50),center.y+points2[2].y*points2[2].z*(1/50),center.x+points2[6].x*points2[6].z*(1/50),center.y+points2[6].y*points2[6].z*(1/50));

    vga_drawline(center.x + points2[6].x*points2[6].z*(1/50),center.y+points2[6].y*points2[6].z*(1/50),center.x+points2[7].x*points2[7].z*(1/50),center.y+points2[7].y*points2[7].z*(1/50));
    vga_drawline(center.x + points2[3].x*points2[3].z*(1/50),center.y+points2[3].y*points2[3].z*(1/50),center.x+points2[7].x*points2[7].z*(1/50),center.y+points2[7].y*points2[7].z*(1/50));

    vga_drawline(center.x + points2[6].x*points2[6].z*(1/50),center.y+points2[6].y*points2[6].z*(1/50),center.x+points2[4].x*points2[4].z*(1/50),center.y+points2[4].y*points2[4].z*(1/50));
    vga_drawline(center.x + points2[7].x*points2[7].z*(1/50),center.y+points2[7].y*points2[7].z*(1/50),center.x+points2[5].x*points2[5].z*(1/50),center.y+points2[5].y*points2[5].z*(1/50));

    int count;

    for (count=0;count<8;count++)
    {
    points2[count].y=(points[count].y)*(cos((double) ((M_PI/180)grad)));
    // points2[count].z=(points[count].z)
    (1+sin((double) ((M_PI/180)*grad)));
    }

    grad=grad+5;
    if (grad>360) {grad=0;}
    */
    c=vga_getch();
    } while (c!='a');

    return 0;
    }



  • Ach Du Schande!!!
    Bitte benutze Code Tags, und entferne auch den Code den Du sowieso wegkommentiert hast, daß macht es leichter den Code zu lesen und Dir zu helfen



  • aber das Problem ist das ich vorher im Forum noch nicht angemeldet war und jetzt keinen Zugriff mehr auf meine zuletzt geschriebene Nachricht habe.
    Hab das erst im Nachhinein gesehen das es so unübersichtlich aussieht sorry
    die wichtigste Stelle habe ich im Code aber kommentiert....



  • Habs schon gefunden....
    Löscht den Thread hat sich erledigt, hätte ich wohl gleich etwas übersichtlicher machen sollen...


Anmelden zum Antworten