error: expected ';', identifier or '(' before 'struct
-
Was bezweckst du mit der Angabe von point in Zeile 45?
An der Stelle stehen Werte oder Variablen. Und eine Variable point ist nicht definiert
Deine Variabel ist pt1 (auch pt1.x)
struct point ist ein Typ.
Und nur struct point, point selber ist nicht definiert, das ist hier ja nicht C++.
-
mach aus
... point pt1.x, point pt1.y, ....
... pt1.x , pt1.y ....
struct point pt1 => legt pt1 als variable vom typ struct point fest
pt1.x => so benutzt du die
-
Okay danke erstmal,
Wie realisiere ich dann das der mir die Punkte einliest und mit der Funktion (distance(struct point pt1, struct point pt2) die Entfernung berechnet?Header: (struct.h)
float distance(struct point pt1, struct point pt2); float area(struct point pt1, struct point pt2, struct point pt3);
Main: (main.c)
#include <stdio.h> #include <stdlib.h> #include "struct.h" int main(void) { /* Definition des Datentyps Punkt */ struct point { float x; float y; float z; }; struct point pt1 = {0, 0, 0}; struct point pt2; struct point pt3; /* Eingabeaufforderung der beiden Punkte und Ablegen in den entspr. Datentypen */ printf("Entfernung berechnen\nBitte x-Koordinate eingeben: %f\n"); scanf(" %f", &pt1.x); printf("Bitte y-Koordinate eingeben: %f\n"); scanf(" %f", &pt1.y); printf("Bitte z-Koordinate eingeben: %f\n\n"); scanf(" %f", &pt1.z); printf("Bitte x-Koordinate eingeben: %f\n"); scanf(" %f", &pt2.x); printf("Bitte y-Koordinate eingeben: %f\n"); scanf(" %f", &pt2.y); printf("Bitte z-Koordinate eingeben: %f\n\n"); scanf(" %f", &pt2.z); printf(" Die Entfernung von Punkt1(%f,%f,%f) zu Punkt2(%f,%f,%f) beträgt: %f", pt1.x, pt1.y, pt1.z, pt2.x, pt2.y, pt2.z, (distance(struct point pt1, struct point pt2)); system("PAUSE"); return 0; }
Funktion: (Struct.c)
#include <math.h> #include "struct.h" float distance(struct point pt1, struct point pt2) { float dx, dy dz; dx = point pt1.x - point pt2.x; dy = point pt1.y - point pt2.y; dz = point pt1.z - point pt2.z; return double sqrt( dx*dx + dy*dy + dz*dz );
-
Ich mach ja glaub nur irgendwas flasch beim enlesen der Punkte. Das habe ich wohl noch nicht richtig kapiert
-
Also in der Main Funktion (Zeile 35) die Punkte einlesen und über Header Dann zur Struct.c und dort berechnen.
-
Der Aufruf der Funktion distance ist immer noch falsch.
DirkB schrieb:
Dann schau dir die Zeile 45 mal genau an.
point bzw struct point ist da zuviel.
jetzt ist es Zeile 35
Einlesen tusrt du mit scanf.
Wenn in Zeile 35 die Punkte richtig ausgegeben werden, war das Einlesen auch richtig.Was für Werte gibst du denn ein?
-
Da kommen immernoch Fehlermeldungen. Bei dieser Zeile(35). Das Programm möchte garnicht starten.
printf(" Die Entfernung von Punkt1(%f,%f,%f) zu Punkt2(%f,%f,%f) beträgt: %f", pt1.x, pt1.y, pt1.z, pt2.x, pt2.y, pt2.z, (distance (struct point pt1, struct point pt2));
||=== Build: Debug in Struct (compiler: GNU GCC Compiler) ===|
F:\Studium\Programmieren\Übung 7\Struct\main.c||In function 'main':|
F:\Studium\Programmieren\Übung 7\Struct\main.c|Zeile 35|error: expected expression before 'struct'|
F:\Studium\Programmieren\Übung 7\Struct\main.c|Zeile 35|error: type of formal parameter 1 is incomplete|
F:\Studium\Programmieren\Übung 7\Struct\main.c|Zeile 35|error: too few arguments to function 'distance'|
F:\Studium\Programmieren\Übung 7\Struct\struct.h|4|note: declared here|
F:\Studium\Programmieren\Übung 7\Struct\main.c|Zeile 35|error: expected ')' before ';' token|
F:\Studium\Programmieren\Übung 7\Struct\main.c|Zeile 39|error: expected ';' before '}' token|
F:\Studium\Programmieren\Übung 7\Struct\main.c|Zeil 16|warning: unused variable 'pt3' [-Wunused-variable]|
||=== Build failed: 5 error(s), 4 warning(s) (0 minute(s), 0 second(s)) ===|
-
Willst du uns veräppeln? Die Antwort auf deine Frage ist bereits der Beitrag über deiner Frage:
DirkB schrieb:
Der Aufruf der Funktion distance ist immer noch falsch.
DirkB schrieb:
Dann schau dir die Zeile 45 mal genau an.
point bzw struct point ist da zuviel.
jetzt ist es Zeile 35
Schlimmer noch: Bereits die erste Antwort im Thread beantwortet deine Frage, die du jetzt, eine Seite später, immer noch hast:
DirkB schrieb:
Dann schau dir die Zeile 45 mal genau an.
point bzw struct point ist da zuviel.
Ebenso alle anderen Beiträge, die nicht von dir sind:
DirkB schrieb:
Was bezweckst du mit der Angabe von point in Zeile 45?
An der Stelle stehen Werte oder Variablen. Und eine Variable point ist nicht definiert
Deine Variabel ist pt1 (auch pt1.x)
struct point ist ein Typ.
Und nur struct point, point selber ist nicht definiert, das ist hier ja nicht C++.
c_beg_1 schrieb:
mach aus
... point pt1.x, point pt1.y, ....
... pt1.x , pt1.y ....
struct point pt1 => legt pt1 als variable vom typ struct point fest
pt1.x => so benutzt du die
Wenn du Antworten nicht liest, wieso sollte dann noch jemand antworten?
-
Ähm ich benutzte doch schon lange das pt1.x, pt1.y.....
Und die distance (struct point pt1, struct point pt2) ist doch meine Funktion. Die soll den Wert hier ausgeben den sie ausgerechnet hat. Nur funktioniert es auch leider nicht wenn ich das struct weg nehme oder die pt1.x, pt1.y ....Punkte in die Funktion eingebe. Ich hab einfach keine Ahnung was genau machen immer kommen Fehlermeldungen.
-
Deine
struct
-Variable ist pt1 bzw. pt2Und nur das musst du bei distance angeben.
Wenn ich schreibe: struct point ist da zuviel, dann mach das struct point weg.
Der Aufruf lautet also
distance (pt1, pt2)
-
Funktion schreiben:
float distance(struct point pt1, struct point pt2) { ... }
Funktion aufrufen:
... distance( pt1, pt2); ...
-
Der Code wurde geändert. Jetzt habe ich wohl ein Deklarations Problem.
So sieht der Code aus.printf(" Die Entfernung von Punkt1(%f,%f,%f) zu Punkt2(%f,%f,%f) beträgt: %f", pt1.x, pt1.y, pt1.z, pt2.x, pt2.y, pt2.z, distance( pt1,pt2));
So habe ich Deklariert.
struct point { float x; float y; float z; }; struct point pt1 = {0, 0, 0}; struct point pt2;
Kann mir da jemand den Fehler aufzeigen?
-
Ok, musste das
struct point { float x; float y; float z; }; struct point pt1 = {0, 0, 0}; struct point pt2;
in den Header bringen
-
Definitionen gehören nicht in Header.
Das machen nur Deppen.
Ebenso wie die Verwendung von globalen Variablen.