Strukturen-Übungsbsp



  • Hallo,

    ich habe eine Aufgabenstellung zu Strukturen bekommen, aber ich weis nicht ganz was ich da machen soll:

    Programm zum Arbeiten mit Strukturen.
    Schreiben Sie ein Programm das die
    Punkte löscht die nicht im Rechteck sind das durch 2 Punkte gegeben ist.

    Kann mir da vielleicht wer diese Aufgabenstellung genauer erklären bitte.

    Danke im voraus!

    mfg Harry


  • Mod

    Du sollst vermutlich ein struct erstellen, welches einen Punkt darstellt. Der Rest sollte dann klar sein, oder? Eine Punktmenge erzeugen/bekommen, zwei Punkte als Vorgabe erzeugen/bekommen, bisschen Rechnen, übrig gebliebene Punkte ausgeben.



  • Mh.. danke.

    Aber was hat das mit dem Rechteck zu tun genau jetzt?



  • harry009 schrieb:

    Mh.. danke.

    Aber was hat das mit dem Rechteck zu tun genau jetzt?

    Manche Punkte befinden sich im gegebenen Rechteck, manche nicht. Du sollst per Programm rausfinden, was bei einem Punkt (oder mehreren) zutrifft.


  • Mod

    harry009 schrieb:

    Aber was hat das mit dem Rechteck zu tun genau jetzt?

    Die Aufgabe ist eigentlich nicht richtig, weil ein Rechteck fünf Freiheitsgrade hat, du aber nur vier vorgegeben bekommst. Ich denke du darfst hier stillschweigend annehmen, dass das Rechteck parallel zu den Koordinatenachsen ausgerichtet sein soll (das vereinfacht nämlich die Aufgabe erheblich). Dann reichen zwei Punkte, die du dann als links unten und rechts oben auffassen kannst.

    Und jetzt bist du wahrscheinlich total verwirrt. Aber wenn du kapierst, was ich dir hier sagen sollte, dann kannst du vor deinem Lehrer ganz wunderbar klugscheißen.



  • Naja irgendwie ist es ein bisschen Schwierig die Punkt die im Dreieck sich befinden zu finden :D(also auf dem zettel nicht programmieren).

    Oder Vielleicht mit eine Koordiniatensystem das ganze machen?


  • Mod

    Da steht Rechteck, nicht Dreieck. Dreieck ist schwer. Rechteck ist einfach. Die Aufgabe ist bewusst so gestellt, dass sie möglichst einfach ist, so dass du dich auf das Programmieren konzentrieren kannst, nicht auf das Rechnen.



  • Ok, danke.

    Und bei dieser Aufgabenstellung:

    Schreiben Sie ein Programm in Anlehnung an strukturen.c das die
    personendaten (typedef struct ......) von einer Textdatei einliest
    und alle Personen und deren Adresse ausgibt die eine Schuhgrösse kleiner 38
    haben.

    strukturen.c sieht so aus:

    struct adresse
    {
      char  vorname[MAXSTRING];
      char  nachname[MAXSTRING];
      char  strasse [MAXSTRING];
      char  ort[MAXSTRING];
      char  PLZ[MAXSTRING];
    };
    
    struct personendaten_struct
    {
      struct adresse adresse;
      int    schuhgroesse;
      float  groesse;
    };
    
    typedef struct personendaten_struct personendaten;
    
    personendaten getPerson(void)
    {
      personendaten thePerson;	
      strncpy(thePerson.adresse.vorname,"Lieselotte",MAXSTRING);
      strncpy(thePerson.adresse.nachname,"Musterschuelerin",MAXSTRING);   
      strncpy(thePerson.adresse.strasse,"Schluesselhofgasse 63",MAXSTRING);
      strncpy(thePerson.adresse.ort,"Steyr",MAXSTRING);
      thePerson.groesse=172;
      thePerson.schuhgroesse=38;
      return (thePerson);
    }
    
    void printPerson(personendaten thePerson)
    {
      printf("Adresse:\n%s\n%s\n%s\n%s\n",thePerson.adresse.vorname,thePerson.adresse.nachname,
        thePerson.adresse.strasse,thePerson.adresse.ort);
      printf("Persoenliche Daten:\n");
      printf("Schuhgroesse:%d\n", thePerson.schuhgroesse);
      printf("Groesse:%f\n", thePerson.groesse);
    }
    

    Hier muss ich einfach verschiedene Adressen mit Schuhgröße etc. in eine Textdatei schreiben und dann einfach die Adressen ausgeben die eine Schuhegröße
    kleiner 38 haben.

    Aber dadurch das es ja eine Übung zu Strukturen ist, soll ich das dann als struktur einlesen, aber wie 😕 ? Oder doch anders?


  • Mod

    Du sollst als Datentyp die vorgegebene Struktur benutzen.



  • Hi,

    Pseudocode !!!

    while !eof(file) {
     person=read(file,sizeof(struct person)) // SIZEOF!! Grösse eines Structs
                                             // aus einem File lesen!
     if ( person.schuhgroesse<38)
     Ausgabe der Person
    
    }
    

    mfg! Patrick



  • harry009 schrieb:

    ...
      personendaten thePerson;	
      strncpy(thePerson.adresse.vorname,"Lieselotte",MAXSTRING);
      strncpy(thePerson.adresse.nachname,"Musterschuelerin",MAXSTRING);   
      strncpy(thePerson.adresse.strasse,"Schluesselhofgasse 63",MAXSTRING);
      strncpy(thePerson.adresse.ort,"Steyr",MAXSTRING);
    ...
    

    Was soll denn dieser Schwachsinn bringen?
    Was passiert, wenn z.B. MAXSTRING<=strlen("Lieselotte") ist?
    Dazu empfiehlt es sich, sich die Spezifikation von strncpy anzuschauen.


Anmelden zum Antworten