Struct in C

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Brauch unbedint mal eure Hilfe!

    Und zwar soll ich ein Programm entwickeln welches Koordinaten ( x, y, z ) in einer Struktur speichert. soweit so gut hab ich auch geschafft das es die 3 Koordinaten in einem struct als VEKTOR speichert nun jedoch mein Problem:
    Ich will mehrere Vektoren speichern, sprich das struct befindet sich in einer schleife die ersten 3 Koordinaten werden eingegeben und gespeichert, 3 neue Koordinaten werden eingegeben und diese sollen nun als neuer Vektor gespeichert werden sprich
    Vektor A: x, y, z
    Vektor B: x2, y2, z2

    Hoffe ist verständlich?
  • Hoffe ist verständlich?

    Noe ! :D

    die 3 Koordinaten in einem struct als VEKTOR

    aehm struct als vector ?

    also sowas:

    Quellcode

    1. struct MyStructT
    2. {
    3. unsigned int koords[3];
    4. };


    wenn du ne feste (kleine)anzahl an elementen hasst solltest da keinen vector ddraus machen ... sondern ne wirkliche struct ... in deinem Fall bietet sich soqas an wie

    Quellcode

    1. struct Point3dT
    2. {
    3. unsigned int x;
    4. unsigned int y;
    5. unsigned int z;
    6. };


    DIe chance das du mal auf 4 dimensional switschen musst ist doch gering oder ?
    genau so brauchst du keinen index operator um auf die richtige dimension zugreifen zu muessen oder ? oder planst du den fall das du den wert einer dimension mittels eines indexes variabel abfragen willst (dann brauchst nen array)

    Variable menge speichern ist eigentlich immer ne Aufgabe dynamischer speicherverwaltung ....
    viele viele elemente speichert man z.b. so

    Quellcode

    1. unsigned int anz = 3678;
    2. Point3dT * pPointers = (Point3dT *) malloc(anz * sizeof(Point3dT ));
    3. // nu kann man auf den structuren mittels zeigeerops zugreifen ...
    4. // zb. alle auf werte setzen ...
    5. for(Point3dT * pIdex = pPointers ; pIdex != &pPointers[3678] ; ++ pIdex)
    6. {
    7. pIdex->x = 0;
    8. pIdex->y = 1;
    9. pIdex->z = 2;
    10. }
    11. // oder auch per index zugriff
    12. for(int i = 0 ; i < 3678 ; ++ i)
    13. {
    14. pIdex[i].x = 0;
    15. pIdex[i].y = 1;
    16. pIdex[i].z = 2;
    17. }
    Alles anzeigen

    Vektoren gibts in der Mathematik
    In C (und damit c++ auch) gibts nur Arrays
    In c++ gibts dann auch ne vector klasse die ne impl eines dynamischen Arrays im C Sinne ist (mit ner menge comfort funktionen)

    Ciao ...
  • ok doch sch*** erklärt ^^ ich schreibe einfach mal die Aufgabe rein vielleicht wird man daraus schlauer ^^

    Eine Menge von N Punkten, die Raumkoordinaten darstellen, sollen in einem Array gespeichert werden. Jeder Punkt soll durch eine Struktur mit den x-, y- und z- Koordinaten als Komponenten dargestellt werden. Entwickeln sie ein Programm, das zu manuell eingegebenen Punktkoordinaten den nächsten Nachbar vorhandenen Punkt ermittelt. Zur Strukturierung des Programms entwickeln sie zwei Funktionen:

    - Berechnung des euklidischen Abstandes zwischen zwei Punkten: Parameter sind 2 Punktstrukturen. Der Rückgabewert ist der Abstand zwischen den Punkten.
    - Bestimmung des nächsten Nachbarn zu eingegebenen Koordinaten: Parameter Koordinaten eines Punktes. Der Rückgabe wert sind die Koordinaten des nächsten Nachbarn.

    was ich bisher habe:

    Quellcode

    1. #include <stdio.h>
    2. #include <math.h>
    3. #define N 31
    4. int main()
    5. {
    6. int anzahl=0, punkt=0, stelle=0;
    7. int feld[N]={0};
    8. int x, y, z;
    9. struct VEKTOR
    10. {
    11. int a, b, c;
    12. };
    13. printf("EUKLIDISCHER-Abstand\n\nDieses Programm errechnet den Abstand zwischen Punkten und gibt\nden naechsten Nachbarn aus\n\n");
    14. printf("Wieviele Vektoren moechten sie eingeben?: ");
    15. scanf("%d",&anzahl);
    16. do
    17. {
    18. printf("Geben sie bitte die Punkte an!\n");
    19. printf("x: ");
    20. scanf("%d", &x);
    21. feld[stelle]=x;
    22. stelle++;
    23. printf("y: ");
    24. scanf("%d", &y);
    25. feld[stelle]=y;
    26. stelle++;
    27. printf("z: ");
    28. scanf("%d", &z);
    29. feld[stelle]=z;
    30. stelle++;
    31. anzahl--;
    32. struct VEKTOR d,e;
    33. {
    34. e,d.a = x;
    35. //stelle--;
    36. e,d.b = y;
    37. //stelle--;
    38. e,d.c = z;
    39. //stelle--;
    40. };
    41. }
    42. while (anzahl>0);
    43. return 0;
    44. }
    Alles anzeigen