WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Anlaufkontrollstrukturen / Vieleck

 

Tobrix
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 16.01.18
Wohnort: München
Version: ---
     Beitrag Verfasst am: 16.01.2018, 15:12     Titel: Anlaufkontrollstrukturen / Vieleck
  Antworten mit Zitat      
Hallo an alle im Forum.
Ich bin neu in der Welt des Programmierens, doch in meinem Studium (Bauingenieurwesen) ist es nun leider erforderlich.
Die ersten Aufgaben waren noch möglich, aber die folgende ist nirgends erklärt und deshalb steh ich total auf dem Schlauch. Ich hoffe ihr könnt mir helfen.
Aufgabe:
Schreiben Sie ein Programm, welches für ein allgemeines Polygon (Vieleck) den Umfang und den
Flächeninhalt berechnet (siehe Abb. 1). Der Benutzer soll die Möglichkeit haben, eine beliebige
Anzahl von Eckpunkten durch Eingabe der x- und y-Koordinaten zu definieren. Die x- und yKoordinaten
sollen jeweils als Liste (Vektor) in einer Variablen gespeichert werden. Anschließend
sollen der Umfang und der Flächeninhalt des Polygons berechnet und ausgegeben werden.
Abbildung 1: Vieleck.
Der Umfang U und der Flächeninhalt A eines Polygons mit n Eckpunkten berechnen sich in einer
Schleife über alle Knoten n:
U = *Summenzeichen*(n oben, i=1 unten) *Wurzel*(xi+1 − xi)^2+(yi+1-yi)^2
(i+1 und i stehen im Index)

A=*selbes Summenzeichen* 0.5*(xi − xi+1)(yi + yi+1)

Gehen Sie bei der Bearbeitung wie folgt vor:
1. Erstellen Sie auf Papier oder in geeigneter digitaler Form ein Struktogramm für das zu
erstellende Programm.
2. Implementieren Sie eine Benutzereingabe für die Anzahl der Eckpunkte n. Prüfen Sie anschließend,
ob mindestens 3 Eckpunkte angegeben wurden und lassen Sie andernfalls die
Eingabe wiederholen.
3. Implementieren Sie die Benutzereingabe für die x- und y-Koordinaten mit Hilfe einer forSchleife.
4. “Schließen” Sie das Polygon, indem Sie einen zusätzlichen Eckpunkt (Index n+1) definieren,
der die gleichen Koordinaten wie der Eckpunkt mit Index 1 hat. Dieser Schritt ist notwendig,
damit die angegeben Formeln korrekt ausgeführt werden können.
5. Berechnen Sie den Umfang U und den Flächeninhalt A mit Hilfe der angegebenen Formeln.
6. Prüfen Sie anhand des Flächeninhalts (positiv oder negativ), ob die Eckpunkte im Uhrzeigersinn
oder gegen den Uhrzeigersinn angegeben wurden.
7. Geben Sie Ihre Ergebnisse mit Hilfe von fprintf aus.

In keinem meiner Skripte ist das erklärt und ich hoffe da kennt sich jemand von euch aus.
Danke schonmal im Vorraus.
Private Nachricht senden Benutzer-Profile anzeigen


SigiSorglos
Forum-Century

Forum-Century


Beiträge: 147
Anmeldedatum: 24.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2018, 16:08     Titel:
  Antworten mit Zitat      
Ich habe für dich mal die zweite und dritte Aufgabe gemacht. Versuche das mal nachzuvollziehen und dann eigenständig weitermachen. Es bringt dir nichts, wenn du einfach die komplett Lösung aus dem Forum kopierst Wink

Code:
%% Aufgabe 2
anzahlEcken=0;
while anzahlEcken<3
    anzahlEcken=input('Wieviele Eckpunkte hat Ihr Polygon?');
end


%% Aufgabe 3
x=zeros(anzahlEcken,1);
y=zeros(anzahlEcken,1);
for f=1:anzahlEcken
    Eingabe=input(['Bitte geben Sie die x-Koordinate des ',num2str(f),'.Punktes an.']);
    x(f)=Eingabe; % Anhängen der Benutzereingabe an die bisherigen Werte
    Eingabe=input(['Bitte geben Sie die y-Koordinate des ',num2str(f),'.Punktes an.']);
    y(f)=Eingabe; % Anhängen der Benutzereingabe an die bisherigen Werte
end


Falls du Fragen hast, melde dich gerne nochmal.
Private Nachricht senden Benutzer-Profile anzeigen
 
Tobrix
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 16.01.18
Wohnort: München
Version: ---
     Beitrag Verfasst am: 16.01.2018, 17:09     Titel:
  Antworten mit Zitat      
Also für die schnelle Antwort schonmal vielen Danke Smile
Was soll ich denn bei der ersten Aufgabe grundsätzlich machen?

Das was du mir geschickt hast funktioniert und gibt für mich definitiv Sinn.
Die 4. Aufgabe hab ich auch:
x(anzahlEcken+1)=x(1)
y(anzahlEcken+1)=y(1)
FÜr die beiden Formeln hätte ich das jetzt mal mit for-Schleifen versucht. Bin ich da auf dem Richtigen Weg?
Private Nachricht senden Benutzer-Profile anzeigen
 
SigiSorglos
Forum-Century

Forum-Century


Beiträge: 147
Anmeldedatum: 24.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2018, 17:17     Titel:
  Antworten mit Zitat      
ja das steht ja so in der Aufgabenstellung.

Die erste Aufgabe ist unabhängig von Matlab. Ihr habt bestimmt in einer Vorlesung mal das Thema Struktogramme durchgenommen. Falls nicht:

https://de.wikipedia.org/wiki/Nassi-Shneiderman-Diagramm
Private Nachricht senden Benutzer-Profile anzeigen
 
Tobrix
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 16.01.18
Wohnort: München
Version: ---
     Beitrag Verfasst am: 17.01.2018, 07:37     Titel:
  Antworten mit Zitat      
Danke für die Hilfe ich habs geschafft Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
TUM

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2018, 13:07     Titel: Polygon
  Antworten mit Zitat      
SigiSorglos hat Folgendes geschrieben:
Ich habe für dich mal die zweite und dritte Aufgabe gemacht. Versuche das mal nachzuvollziehen und dann eigenständig weitermachen. Es bringt dir nichts, wenn du einfach die komplett Lösung aus dem Forum kopierst Wink

Code:
%% Aufgabe 2
anzahlEcken=0;
while anzahlEcken<3
    anzahlEcken=input('Wieviele Eckpunkte hat Ihr Polygon?');
end


%% Aufgabe 3
x=zeros(anzahlEcken,1);
y=zeros(anzahlEcken,1);
for f=1:anzahlEcken
    Eingabe=input(['Bitte geben Sie die x-Koordinate des ',num2str(f),'.Punktes an.']);
    x(f)=Eingabe; % Anhängen der Benutzereingabe an die bisherigen Werte
    Eingabe=input(['Bitte geben Sie die y-Koordinate des ',num2str(f),'.Punktes an.']);
    y(f)=Eingabe; % Anhängen der Benutzereingabe an die bisherigen Werte
end


Falls du Fragen hast, melde dich gerne nochmal.



Hallo,
weiß vielleicht jemand wie man bei diesem Programm nun eine Erweiterung hinzufügt, sodass man nach der Ausgabe der Ergebnisse noch eine Abfrage machen kann ob noch ein Punkt hinzugefügt oder gelöscht werden soll. Das Programm soll auch beendet werden können.

So soll man dabei vorgehen:
1. Fügen Sie nach der Ausgabe der Ergebnisse eine Abfrage in ihren Code ein, die den
Nutzer fragt, was als nächstes getan werden soll. Implementieren Sie die Benutzerabfra-
ge:
'
Was wollen Sie jetzt machen? (0: Programm beenden, 1: Knoten löschen
, 2: Knoten einfügen)
'
. Verwenden Sie hierfür eine
while
-Schleife, die abbricht, sobald
der Benutzer
0
eingibt. Die Auswertung der Benutzereingabe selbst soll später implementiert
werden (siehe Punkt 3).
2. Implementieren Sie für das Einfügen und Löschen von Knoten jeweils eine Funktion:
knoten_loeschen
und
knoten_einfuegen
. An beide Funktionen übergeben Sie die Felder
x
,
y
und die aktuelle Anzahl der Knoten.

In der Funktion
knoten_einfuegen
soll die Eingabe der Koordinaten des neuen Kno-
tens sowie die Abfrage der Knotennummer, nach welcher der neue Knoten eingefügt
werden soll, implementiert werden.

In der Funktion
knoten_loeschen
muss entsprechend die Knotennummer des zu
löschenden Knotens abgefragt werden.

Aktualisieren Sie anschließend innerhalb ihrer neuen Funktionen die Felder
x
,
y
sowie
die Anzahl der Knoten.
3. Fügen Sie nun in ihre Benutzerabfrage den Aufruf der externen Funktionen in einer
switch
case
Kontrollstruktur ein.
4. Geben Sie anschließend den neuen Umfang und den neuen Flächeninhalt mit Hilfe der bereits
ausgelagerten Funktionen
poly_umfang
und
poly_flaeche
aus. Denken Sie beim Löschen
daran, dass der Polygonzug geschlossen sein muss und behandeln Sie den Sonderfall
Löschen
von Knoten 1
entsprechend.
5. Plotten Sie die eingegebenen Knoten nach jeder abgeschlossenen Modifikation zur visuellen
Kontrolle.

Hoffentlich kann jemand helfen.
Bin schon am verzweifeln Crying or Very sad

Danke im Voraus Laughing
 
Tobrix
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 16.01.18
Wohnort: München
Version: ---
     Beitrag Verfasst am: 21.01.2018, 16:23     Titel:
  Antworten mit Zitat      
Da ich eins zu eins das selbe Problem habe denke ich du gehst auch auf die TUM? Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Tobrix
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 16.01.18
Wohnort: München
Version: ---
     Beitrag Verfasst am: 21.01.2018, 16:41     Titel:
  Antworten mit Zitat      
Code:
g= input('Was soll als nächstes getan werden? 0/1/2: \n');
while g==0
    return
end

das ist schonmal die 1. Aufgabe
Private Nachricht senden Benutzer-Profile anzeigen
 
Tobrix
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 16.01.18
Wohnort: München
Version: ---
     Beitrag Verfasst am: 21.01.2018, 16:46     Titel:
  Antworten mit Zitat      
Code:
function polygonNeu ()
anzahlEcken=0;
while anzahlEcken<3
    anzahlEcken=input('Wieviele Eckpunkte hat Ihr Polygon? \n');
end

x=zeros(anzahlEcken,1);
y=zeros(anzahlEcken,1);
for f=1:anzahlEcken
    Eingabe=input(['Bitte geben Sie die x-Koordinate des ',num2str(f),'.Punktes an.']);
    x(f)=Eingabe; % Anhängen der Benutzereingabe an die bisherigen Werte
    Eingabe=input(['Bitte geben Sie die y-Koordinate des ',num2str(f),'.Punktes an.']);
    y(f)=Eingabe; % Anhängen der Benutzereingabe an die bisherigen Werte
end
    x(anzahlEcken+1)=x(1);
    y(anzahlEcken+1)=y(1);

U=0;
for n=2:(anzahlEcken+1)
    u=sqrt((x(n)-x(n-1))^2+(y(n)-y(n-1))^2);
    U=U+u;
end
fprintf ('Umfang: ',U);
A=0;
for n=1:(anzahlEcken)
    a=0.5*(x(n)-x(n+1))*(y(n)+y(n+1));
    A=A+a;
end
fprintf('Flächeninhalt: ');
if (A>0)
    fprintf ('Im Uhrzeigersinn');
else
    fprintf ('Gegen Uhrzeigersinn \n');
end

g= input('Was soll als nächstes getan werden? 0/1/2: \n');
while g==0
    return
end


end
 


So sieht meine Funktion bisher aus
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.