![]() |
Brauche Hilfe bei meiner Aufgabe (in C)
Hallo^^
ich brauche etwas Hilfe bei meiner Programmier Aufgabe. Ein Beispiel hab ich schon, aber das zweite kapier ich nicht. Hier ist mal die Angabe: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] Es darf nur in C geschrieben werden. Wir sind bis jetzt noch nicht weiter als bei if/else Anweisungen, und mit den Schleifen haben wir angefangen. Wäre echt nett wenn mir da wer helfen könnte. MfG |
Dann zeig doch mal was du schon hast.
|
Ich hab noch gar nichts. Ich weiss nich mal wo ich anfangen soll.
|
Du musst da einfach systematisch vorgehen. Überleg dir, was du alles brauchst und fang an.
Zu aller erst musst du die Koordinaten der Eckpunkte einlesen. Den Code dafür habe ich dir hier mal geschrieben: Code:
#include <stdlib.h> Als nächsten Schritt musst du dir überlegen, wie du aus 4 gegebenen Punkten herausfinden kannst, um was für ein Objekt es sich handelt. Dafür hast du ja unter der Aufgabenstellung 2 wertvolle Hinweise. |
Wir sind schon bei den Strukturen, wenn du damit ein Struktogramm meinst. Dass muss ich auch noch machen. Aber wenn ich den Code habe, sollte das Struktogramm kein Problem sein :p
Achja, wir benutzen noch immer nur #include<stdio.h> und was "using namespace std;" wissen wir auch noch nicht O: |
Nein ich meine kein Struktogramm ich meine soetwas:
Code:
struct Point {int x, y;} Point[4]; |
Aber wie soll ich das coden?
|
naja, du sucht die die eigenschaften der verschiedenen Körper raus und packst das ganze in if schleifen.
wenns ohne struct funktionieren soll müsste das so ähnlich ausschauen. Code:
bool quadrat() |
Zitat:
Code:
bool quadrat() { return (x2-x1 == x4-x3 && y2-y1 == y4-y3 && diagonale1 == diagonale2); } Code:
#include <stdio.h> |
Zitat:
|
1. bei einem so kleinen Programm dürfte das wohl unproblematisch sein
2. hast du schon bei 1. gesagt 3. hast du schon bei 1. gesagt 4. hast du schon bei 1. gesagt 5. + 6. in meinem Code kommt keine quadrat-Funktion vor |
So Langsam blick ich gar nicht mehr durch O:
|
Ich glaube nicht, dass ich eine mittelmäßige Uni besuche oder einen schlechten Programmierstil habe.
Ich bin auch nicht patzig geworden und die Krituk ist unangemessen. Ich habe den Code nur mal kurz nebenbei geschrieben und nichtmal auf Fehler getestet. Da fang ich nicht erst noch an den Code in Methoden auszulagern. Außerdem hat das hier nicht wirklich was zu suchen und wir sollte es gut sein lassen. |
Bin mir nicht völlig sicher, aber ich glaube, der Check für den Rhombus ist so nicht ganz richtig. Vor allem würde man sich bei einem Koordinatencheck ja irgendwie auf zumindest teilweise achsenparallel liegende Objekte beschränken, was aber so aus der Angabe nicht hervorgeht.
Klarer wäre es meiner Meinung nach, noch zusätzlich AC und BD zu berechnen und den Rhombuscheck über die Länge der Diagonalen zu machen. So sollte man auch schief im Koordinatensystem liegende Quadrate erwischen und nicht fälschlicherweise zu Rhomben degradieren. |
@Your_Conscience du hast im Code
Code:
#include <stdio.h> |
Welche Fehler sind denn drin?
Also laut Compiler sind keine Fehler dirn, es sollte also höchstens falsch berechnet werden. Bei den Abfragen um welches Viereck es sich handelt kann ich dir nicht sagen ob es richtig ist, da ich nicht nachgeguckt habe, was die Eigenschaften der jeweiligen Flächen sind. Das ist halt nur noch das was ich noch so ungefähr aus der Schule weis :D Das solltest du allerdings hinbekommen, da es ja jetzt kein programmiertechnisches, sondern nur noch ein mathematisches Problem ist. |
Bei mir sind die Fehler alle in den Zeilen 5&35.
|
Dann sag mal, was für einen Comiler du benutzt und welche Fehlermeldung er ausgibt,
|
Comiler? Du meinst doch Compiler oder?
|
Ja genau sry^^
|
Ich nehm den GNU GCC Compiler. Wir sollen auch nur den benutzen O:
|
Und was für eine Fehlermeldung gibt er aus?
|
5 error: 'bool' undeclared(first use in this function)
5 error: (Each undeclared indentifier is reported only once 5 error: for each function it appears in) 5 error:expected ';' before 'found' 35 error: 'found' undeclared (first use in this function) 35 error: 'true' undeclared (first use in this function) Das waren alle |
Include mal stdbool.h.
|
Der Fehler liegt also am Boolean der eh nicht notwendig ist, da es else if und else gibt
Bei der Aufgabenstellung werden die Diagonalen ja extra erwaehnt - also sollte man wohl wie stormwiz2 gesagt hat AC und BD berechnen und damit die Art des Vierecks bestimmen -> evtl. einfach mal auf einem Blatt papier aufzeichnen und nachsehen :) Ansonsten koennen die x- und y-Koordinaten eigentlich auch double sein und so eingelesen werden statt dem boolean gibt es auch if,else if und else (hier wird bei einem Quadrat auch Rechteck und Deltoid ausgegeben) und gerade bei einer "Anfaengeraufgabe" kann man ueberlegen statt einem Entscheidungsbaum alle Vierecktypen einzeln abzufragen Ich bin mir nicht sicher ob man noch pruefen sollte ob es ueberhaupt ein Viereck ist(also maximal 2 Punkte auf einer Geraden liegen) Ausserdem kann er das auch selbst weitermachen und nur noch bei einzelnen Fehlern nachfragen:) |
Zitat:
|
Ein Quadrat ist auch alle anderen Vierecktypen, allerdings soll wohl nur Quadrat ausgegeben werden:)
Edit: ach ja - es sollte dann beim if, else if und else natuerlich entsprechend sortiert werden |
Ok wenn das so ist, dann kann man die Abfragen auch so schreiben und die Deklaration von "found" entfernen.
Code:
if (AB == BC && AB == CD && AB == DA) { |
Allerdings denke ich, wie gesagt, dass man die Diagonalen und nicht die x- und y-Koordinaten benutzen sollte
Und eventuell um es einfacher zu machen alles einzeln abfragen statt es zu verschachteln:) |
Also... ich hab jetzt jemanden aus meiner Klasse gefunden, der das Beispiel geschafft hat O:
Hier ist der Code: Code:
#include <stdio.h> Wie kann ich die beheben? |
Die ersten beiden in Z50 haetten wohl gerne math.h
Z73 mag das a==b==c==d nicht so ganz(und schlaegt Klammern vor - oder einfach genau so machen wie beim Quadrat) Ausserdem werden e und f falsch berechnet (besser wie a-d berechnen; ein [fehlerhafter] Pythagoras geht hier nicht - rechte Winkel sind nicht zwingend) Bei den if-s wird immer "allgemeines Viereck" und der genaue Typ ausgegeben(soweit ich sehe stimmt der Typ) aber ich wuerde "allgemeines Viereck nur ausgeben wenn sonst keiner passt - also nur das erste als if, die anderen als else if und "allgemeines Viereck" in den else Fall -- Alternativ kann man natuerlich alles ausgeben was passt, dann muesste bei einem Quadrat z.B. aber alles ausgegeben werden (hier ist es so wie ich es machen wuerde ausser dem else if und else bei "allgemeines Viereck") |
Ich kapier ned ganz wie ich das machen soll:
Code:
Bei den if-s wird immer "allgemeines Viereck" und der genaue Typ ausgegeben(soweit ich sehe stimmt der Typ) aber ich wuerde "allgemeines Viereck nur ausgeben wenn sonst keiner passt - also nur das erste als if, die anderen als else if und "allgemeines Viereck" in den else Fall -- Alternativ kann man natuerlich alles ausgeben was passt, dann muesste bei einem Quadrat z.B. aber alles ausgegeben werden (hier ist es so wie ich es machen wuerde ausser dem else if und else bei "allgemeines Viereck") |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:34 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.