| Autor |
Nachricht |
DirkB
Unregistrierter
|
DirkB Unregistrierter
16:06:02 24.04.2012 Titel: |
|
Zitieren |
Teilst du irgendwo durch 0 ? |
|
|
|
 |
SeppJ
Moderator
Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17932
|
SeppJ Moderator
17:07:30 24.04.2012 Titel: |
|
Zitieren |
| fola schrieb: | also hab es den doch nochmal anders gemacht... aber jetzt schließt er mir die anwendung und sagt code 0 was will der von mir
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include <stdio.h>
#include <math.h>
int main (void)
/* Hier werden als erstes die Angaben gemacht */
{
double x1, y1, x2, y2, x3, y3, x4, y4, m1, m2, n1, n2, Ergebnisx, Ergebnisy;
printf ("Geben Sie fuer Strecke 1 x1 ein: \n");
scanf ("%lf", &x1);
printf ("Geben Sie fuer Strecke 1 y1 ein: \n");
scanf ("%lf", &y1);
printf ("Geben Sie fuer Strecke 1 x2 ein: \n");
scanf ("%lf", &x2);
printf ("Geben Sie fuer Strecke 1 y2 ein: \n");
scanf ("%lf", &y2);
printf ("Geben Sie fuer Strecke 2 x3 ein: \n");
scanf ("%lf", &x3);
printf ("Geben Sie fuer Strecke 2 y3 ein: \n");
scanf ("%lf", &y3);
printf ("Geben Sie fuer Strecke 2 x4 ein: \n");
scanf ("%lf", &x4);
printf ("Geben Sie fuer Strecke 2 y4 ein: \n");
scanf ("%lf", &y4);
printf ("a=%f nb=%f nc=%f n",x1, y1, x2, y2, x3, y3, x4, y4);
{
m1= (y2-y1)/(x2-x1); /* berechnung der Steigung der Geraden */
m2= (y4-y3)/(x4-x3);
if (m1 == m2)
printf("Strecken sind Parallel");
else
if (n1 < n2)
printf("%lf schneiden sich nicht %lf \");
n1= y1-(y2-y1)/(x2-x1)*x1; /* Abstände zur x-Achse */
n2= y3-(y4-y3)/(x4-x3)*x3;
Ergebnisx = (n2-n1)/(m1-m2); /* berechnung der Scnittpunkte für x und y Koordinaten */
Ergebnisy = m1*(n2-n1)/(m1-m2)+n1;
printf("Schnittkoardinate fuer x betraegt: %lf/n", Ergebnisx);
printf("Schnittkoardinate fuer y betraegt: %lf/n", Ergebnisy);
}
getchar ();
} | |
| Wie du alleine schon am Syntaxhighlighting hier im Forum siehst, ist der Code voller Schreibfehler. Das kann gar nicht übersetzen. Und selbst wenn man die Schreibfehler (Zeilen 27 und 39) wegmacht, bleiben sehr viele Compilerwarnungen:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | test.c: In function ‘main’:
test.c:27:3: warning: too many arguments for format [-Wformat-extra-args]
printf ("a=%f nb=%f nc=%f \n",x1, y1, x2, y2, x3, y3, x4, y4);
^
test.c:39:9: warning: format ‘%lf’ expects a matching ‘double’ argument [-Wformat]
printf("%lf schneiden sich nicht %lf \n");
^
test.c:39:9: warning: format ‘%lf’ expects a matching ‘double’ argument [-Wformat]
printf("%lf schneiden sich nicht %lf \n");
^
test.c:52:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
test.c:38:10: warning: ‘n1’ may be used uninitialized in this function [-Wuninitialized]
if (n1 < n2)
^
test.c:38:10: warning: ‘n2’ may be used uninitialized in this function [-Wuninitialized]
if (n1 < n2)
^ | | Die darfst du getrost alle als schwerwiegende Fehler ansehen, die dir der Compiler bloß nicht als Fehler ankreiden darf, da der Standard allerlei Unsinn erlaubt, in der Annahme der Programmierer wüsste schon, was er da tut. Das ist aber bei Anfänger nicht der Fall, daher Warnungen immer auf Maximum (auch als Profi) und Warnungen als Fehler ansehen.
P.S.: Es ist furchtbar mit anzusehen, wie dein ursprüngliches Programm, das bis auf eine Kleinigkeit schon auf einem guten Weg zur Abstraktion war, nun zu diesem Ungeheuer geworden ist, da du an den Grundlagen scheiterst, wie man Werte einliest und ausgibt oder mit structs umgeht . |
_________________ Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List
Zuletzt bearbeitet von SeppJ am 17:10:12 24.04.2012, insgesamt 2-mal bearbeitet |
|
 |
Bonni4355
Unregistrierter
|
Bonni4355 Unregistrierter
08:18:08 25.04.2012 Titel: |
Schnittpunktberechnung |
Zitieren |
Füge in die Funktion main die Zeile: struct point a, b, c, d, x; ein. Damit deklarierst und definierst Du die Variablen. Scanf rufst Du wie folgt auf:
scanf("%f %f %f %f", &a.x, &a.y, &b.x, &b.y);
Scanf erwartet die Adressen der Variablen, daher der Adressoperator. Da der Punktoperator . stärker bindet als der Adressoperator, brauchst Du keine Klammern.
Für die Variablen c und d machst Du das gleiche.
Gruß
Bonni4355 |
|
|
|
 |
DirkB
Unregistrierter
|
DirkB Unregistrierter
08:54:56 25.04.2012 Titel: |
Re: Schnittpunktberechnung |
Zitieren |
| Bonni4355 schrieb: | | scanf("%f %f %f %f", &a.x, &a.y, &b.x, &b.y); |
Dann doch aber mit %lf, da ermitlerweile double nimmt. |
|
|
|
 |
Bonni4355
Unregistrierter
|
Bonni4355 Unregistrierter
13:41:05 25.04.2012 Titel: |
Re: Schnittpunktberechnung |
Zitieren |
| DirkB schrieb: | | Bonni4355 schrieb: | | scanf("%f %f %f %f", &a.x, &a.y, &b.x, &b.y); |
Dann doch aber mit %lf, da ermitlerweile double nimmt. |
Hallo DirkB,
ich bezog mich auf die ursprüngliche Fassung. struct point enthält 2 Variablen vom Typ float. Mit den Änderungen müsste das Programm compilierbar sein. Im übrigen sehe ich keine Notwendigkeit, hier float durch double zu ersetzen.
Gruß
Bonni4355 |
|
|
|
 |
Gast ?!
Unregistrierter
|
Gast ?! Unregistrierter
22:12:46 29.04.2012 Titel: |
gleiches problem |
Zitieren |
Hey, muss nächste Woche das gleiche Programm abgeben ^^
Hab mir da was nettes zusammen geschrieben ...
wenn Interesse besteht einfach melden.
Gruß |
|
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|